svn commit: linux-cifs-client r61 - in branches/linux-converged-for-old-kernels/fs/cifs: .

sfrench at samba.org sfrench at samba.org
Sun Jul 16 05:07:17 GMT 2006


Author: sfrench
Date: 2006-07-16 05:07:17 +0000 (Sun, 16 Jul 2006)
New Revision: 61

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=linux-cifs-client&rev=61

Log:
Merge with main git tree

Modified:
   branches/linux-converged-for-old-kernels/fs/cifs/CHANGES
   branches/linux-converged-for-old-kernels/fs/cifs/cifsfs.h
   branches/linux-converged-for-old-kernels/fs/cifs/cifsglob.h
   branches/linux-converged-for-old-kernels/fs/cifs/cifssmb.c
   branches/linux-converged-for-old-kernels/fs/cifs/connect.c
   branches/linux-converged-for-old-kernels/fs/cifs/transport.c


Changeset:
Modified: branches/linux-converged-for-old-kernels/fs/cifs/CHANGES
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/CHANGES	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/CHANGES	2006-07-16 05:07:17 UTC (rev 61)
@@ -1,3 +1,9 @@
+Version 1.45
+------------
+Do not time out lockw calls when using posix extensions. Do not
+time out requests if server still responding reasonably fast
+on requests on other threads
+
 Version 1.44
 ------------
 Rewritten sessionsetup support, including support for legacy SMB

Modified: branches/linux-converged-for-old-kernels/fs/cifs/cifsfs.h
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/cifsfs.h	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/cifsfs.h	2006-07-16 05:07:17 UTC (rev 61)
@@ -112,5 +112,5 @@
 extern ssize_t	cifs_listxattr(struct dentry *, char *, size_t);
 extern int cifs_ioctl (struct inode * inode, struct file * filep,
 		       unsigned int command, unsigned long arg);
-#define CIFS_VERSION   "1.44"
+#define CIFS_VERSION   "1.45"
 #endif				/* _CIFSFS_H */

Modified: branches/linux-converged-for-old-kernels/fs/cifs/cifsglob.h
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/cifsglob.h	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/cifsglob.h	2006-07-16 05:07:17 UTC (rev 61)
@@ -159,8 +159,8 @@
 	/* 16th byte of RFC1001 workstation name is always null */
 	char workstation_RFC1001_name[SERVER_NAME_LEN_WITH_NULL];
 	__u32 sequence_number; /* needed for CIFS PDU signature */
-	char mac_signing_key[CIFS_SESS_KEY_SIZE + 16]; 
-	unsigned long last_receive_time;
+	char mac_signing_key[CIFS_SESS_KEY_SIZE + 16];
+	unsigned long lstrp; /* when we got last response from this server */
 };
 
 /*

Modified: branches/linux-converged-for-old-kernels/fs/cifs/cifssmb.c
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/cifssmb.c	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/cifssmb.c	2006-07-16 05:07:17 UTC (rev 61)
@@ -1494,8 +1494,8 @@
 	char *data_offset;
 	struct cifs_posix_lock *parm_data;
 	int rc = 0;
+	int timeout = 0;
 	int bytes_returned = 0;
-	int timeout = 0;
 	__u16 params, param_offset, offset, byte_count, count;
 
 	cFYI(1, ("Posix Lock"));
@@ -1514,7 +1514,6 @@
 	pSMB->MaxSetupCount = 0;
 	pSMB->Reserved = 0;
 	pSMB->Flags = 0;
-	pSMB->Timeout = 0;
 	pSMB->Reserved2 = 0;
 	param_offset = offsetof(struct smb_com_transaction2_sfi_req, Fid) - 4;
 	offset = param_offset + params;
@@ -1542,9 +1541,11 @@
 	parm_data->lock_type = cpu_to_le16(lock_type);
 	if(waitFlag) {
 		timeout = 3;  /* blocking operation, no timeout */
-		pSMB->Timeout = cpu_to_le32(-1);/* blocking - do not time out */
 		parm_data->lock_flags = cpu_to_le16(1);
-	}
+		pSMB->Timeout = cpu_to_le32(-1);
+	} else
+		pSMB->Timeout = 0;
+
 	parm_data->pid = cpu_to_le32(current->tgid);
 	parm_data->start = cpu_to_le64(pLockData->fl_start);
 	parm_data->length = cpu_to_le64(len);  /* normalize negative numbers */

Modified: branches/linux-converged-for-old-kernels/fs/cifs/connect.c
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/connect.c	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/connect.c	2006-07-16 05:07:17 UTC (rev 61)
@@ -609,10 +609,6 @@
 
 		task_to_wake = NULL;
 		spin_lock(&GlobalMid_Lock);
-
-		/* Note when we last received a reply - needed for timeout purposes. */
-		server->last_receive_time = jiffies;
-
 		list_for_each(tmp, &server->pending_mid_q) {
 			mid_entry = list_entry(tmp, struct mid_q_entry, qhead);
 
@@ -659,6 +655,10 @@
 #ifdef CONFIG_CIFS_STATS2
 				mid_entry->when_received = jiffies;
 #endif
+				/* so we do not time out requests to  server
+				which is still responding (since server could
+				be busy but not dead) */
+				server->lstrp = jiffies;
 				break;
 			}
 		}
@@ -2047,21 +2047,22 @@
 					cifs_sb->mnt_cifs_flags |= 
 						CIFS_MOUNT_POSIX_PATHS;
 				}
-
-				if (cap & CIFS_UNIX_FCNTL_CAP) {
-					cFYI(1,("negotiate posix fcntl locking"));
-				} else {
-					cFYI(1,("posix fcntl locking not supported"));
-					cap &= ~CIFS_UNIX_FCNTL_CAP;
-				}
 					
 				cFYI(1,("Negotiate caps 0x%x",(int)cap));
-
+#ifdef CONFIG_CIFS_DEBUG2
+				if(cap & CIFS_UNIX_FCNTL_CAP)
+					cFYI(1,("FCNTL cap"));
+				if(cap & CIFS_UNIX_EXTATTR_CAP)
+					cFYI(1,("EXTATTR cap"));
+				if(cap & CIFS_UNIX_POSIX_PATHNAMES_CAP)
+					cFYI(1,("POSIX path cap"));
+				if(cap & CIFS_UNIX_XATTR_CAP)
+					cFYI(1,("XATTR cap"));
+				if(cap & CIFS_UNIX_POSIX_ACL_CAP)
+					cFYI(1,("POSIX ACL cap"));
+#endif /* CIFS_DEBUG2 */
 				if (CIFSSMBSetFSUnixInfo(xid, tcon, cap)) {
 					cFYI(1,("setting capabilities failed"));
-				} else {
-					/* Remember the capabilities we set. */
-					tcon->fsUnixInfo.Capability = cpu_to_le64(cap);
 				}
 			}
 		}

Modified: branches/linux-converged-for-old-kernels/fs/cifs/transport.c
===================================================================
--- branches/linux-converged-for-old-kernels/fs/cifs/transport.c	2006-07-16 04:54:08 UTC (rev 60)
+++ branches/linux-converged-for-old-kernels/fs/cifs/transport.c	2006-07-16 05:07:17 UTC (rev 61)
@@ -497,14 +497,20 @@
 				/* We timed out. Is the server still
 				   sending replies ? */
 				spin_lock(&GlobalMid_Lock);
-				lrt = ses->server->last_receive_time;
+				lrt = ses->server->lstrp;
 				spin_unlock(&GlobalMid_Lock);
 
-				/* Calculate 15 seconds past last received time. */
-				lrt += (15 * HZ);
+				/* Calculate 10 seconds past last receive time.
+				Although we prefer not to time out if the 
+				server is still responding - we will time
+				out if the server takes more than 15 (or 45 
+				or 180) seconds to respond to this request
+				and has not responded to any request from 
+				other threads on the client within 10 seconds */
+				lrt += (10 * HZ);
 				if (time_after(jiffies, lrt)) {
-					/* Server sent no replies for 15 seconds. */	
-					cERROR(1,("Server idle for 15 seconds. Timing out"));
+					/* No replies for 10 seconds. */
+					cERROR(1,("server not responding"));
 					break;
 				}
 			} else {
@@ -792,14 +798,14 @@
 				/* We timed out. Is the server still
 				   sending replies ? */
 				spin_lock(&GlobalMid_Lock);
-				lrt = ses->server->last_receive_time;
+				lrt = ses->server->lstrp;
 				spin_unlock(&GlobalMid_Lock);
 
-				/* Calculate 15 seconds past last received time. */
-				lrt += (15 * HZ);
+				/* Calculate 10 seconds past last receive time*/
+				lrt += (10 * HZ);
 				if (time_after(jiffies, lrt)) {
-					/* Server sent no replies for 15 seconds. */	
-					cERROR(1,("Server idle for 15 seconds. Timing out"));
+					/* Server sent no reply in 10 seconds */
+					cERROR(1,("Server not responding"));
 					break;
 				}
 			} else {



More information about the samba-cvs mailing list