[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(-)
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 340b4ff..6c73f02 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -2,7 +2,8 @@
------------
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 d77abe2..43fb2aa 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -784,6 +784,8 @@
oplockThread = current;
do {
+ if(try_to_freeze())
+ continue;
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1*HZ);
@@ -848,6 +850,8 @@
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 c75bae1..134195c 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -355,6 +355,8 @@
}
while (server->tcpStatus != CifsExiting) {
+ if(try_to_freeze())
+ continue;
if (bigbuf == NULL) {
bigbuf = cifs_buf_get();
if(bigbuf == NULL) {