summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-08-30 13:10:14 -0700
committerSteve French <sfrench@us.ibm.com>2005-08-30 13:10:14 -0700
commit16abbecdad3367c76c12537450eba0d86943fe2c (patch)
tree4e15d2ce6e7ab84587e29c3cdbfed94d25ae5d9f
parent2016ef789a9ded2e169ad1c028ae3deb5302571f (diff)
[CIFS] Add support for suspend
cifsd had been preventing software suspend from completing. Signed-off-by: pavel@suse.de Signed-off-by: Steve French <sfrench@us.ibm.com> lightly modified --- fs/cifs/CHANGES | 3 ++- fs/cifs/cifsfs.c | 4 ++++ fs/cifs/connect.c | 2 ++ 3 files changed, 8 insertions(+), 1 deletions(-)
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/cifsfs.c4
-rw-r--r--fs/cifs/connect.c2
3 files changed, 8 insertions, 1 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 340b4ffb349..6c73f020ef4 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -2,7 +2,8 @@ Version 1.36
------------
Add support for mounting to older pre-CIFS servers such as Windows9x and ME.
For these older servers, add option for passing netbios name of server in
-on mount (servernetbiosname).
+on mount (servernetbiosname). Add suspend support for power management, to
+avoid cifsd thread preventing software suspend from working.
Add mount option for disabling the default behavior of sending byte range lock
requests to the server (necessary for certain applications which break with
mandatory lock behavior such as Evolution), and also mount option for
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index d77abe236a6..43fb2aafa52 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -784,6 +784,8 @@ static int cifs_oplock_thread(void * dummyarg)
oplockThread = current;
do {
+ if(try_to_freeze())
+ continue;
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1*HZ);
@@ -848,6 +850,8 @@ static int cifs_dnotify_thread(void * dummyarg)
dnotifyThread = current;
do {
+ if(try_to_freeze())
+ continue;
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(39*HZ);
} while(!signal_pending(current));
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index c75bae1242d..134195cc407 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -355,6 +355,8 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
}
while (server->tcpStatus != CifsExiting) {
+ if(try_to_freeze())
+ continue;
if (bigbuf == NULL) {
bigbuf = cifs_buf_get();
if(bigbuf == NULL) {