aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifsfs.c
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-10-10 13:34:22 -0400
committerSteve French <sfrench@us.ibm.com>2005-10-10 13:34:22 -0400
commit68058e757573d4e81550e74c5a03a29a29069ce7 (patch)
treed8c6c318e2e486ae707a22915983afd512f38b51 /fs/cifs/cifsfs.c
parent131afd0b748e382c3a00355d3fa245801f929298 (diff)
[CIFS] Reduce CIFS tcp congestion timeout (it was too long) and backoff
ever longer amounts (up to 15 seconds). This improves performance especially when using large wsize. Signed-off-by: Steve French (sfrench@us.ibm.com)
Diffstat (limited to 'fs/cifs/cifsfs.c')
-rw-r--r--fs/cifs/cifsfs.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 1f97d39100ee..e3177a031edc 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -405,6 +405,16 @@ static struct quotactl_ops cifs_quotactl_ops = {
405}; 405};
406#endif 406#endif
407 407
408static void cifs_umount_begin(struct super_block * sblock)
409{
410 cERROR(1,("kill all tasks now - umount begin not implemented yet"));
411
412/* BB FIXME - finish BB */
413
414 return;
415}
416
417
408static int cifs_remount(struct super_block *sb, int *flags, char *data) 418static int cifs_remount(struct super_block *sb, int *flags, char *data)
409{ 419{
410 *flags |= MS_NODIRATIME; 420 *flags |= MS_NODIRATIME;
@@ -422,7 +432,7 @@ struct super_operations cifs_super_ops = {
422 unless later we add lazy close of inodes or unless the kernel forgets to call 432 unless later we add lazy close of inodes or unless the kernel forgets to call
423 us with the same number of releases (closes) as opens */ 433 us with the same number of releases (closes) as opens */
424 .show_options = cifs_show_options, 434 .show_options = cifs_show_options,
425/* .umount_begin = cifs_umount_begin, *//* consider adding in the future */ 435/* .umount_begin = cifs_umount_begin, */ /* BB finish in the future */
426 .remount_fs = cifs_remount, 436 .remount_fs = cifs_remount,
427}; 437};
428 438
@@ -790,9 +800,7 @@ static int cifs_oplock_thread(void * dummyarg)
790 do { 800 do {
791 if(try_to_freeze()) 801 if(try_to_freeze())
792 continue; 802 continue;
793 set_current_state(TASK_INTERRUPTIBLE);
794 803
795 schedule_timeout(1*HZ);
796 spin_lock(&GlobalMid_Lock); 804 spin_lock(&GlobalMid_Lock);
797 if(list_empty(&GlobalOplock_Q)) { 805 if(list_empty(&GlobalOplock_Q)) {
798 spin_unlock(&GlobalMid_Lock); 806 spin_unlock(&GlobalMid_Lock);
@@ -841,6 +849,8 @@ static int cifs_oplock_thread(void * dummyarg)
841 } 849 }
842 } else 850 } else
843 spin_unlock(&GlobalMid_Lock); 851 spin_unlock(&GlobalMid_Lock);
852 set_current_state(TASK_INTERRUPTIBLE);
853 schedule_timeout(1); /* yield in case q were corrupt */
844 } 854 }
845 } while(!signal_pending(current)); 855 } while(!signal_pending(current));
846 oplockThread = NULL; 856 oplockThread = NULL;