nfs: allow the v4.1 callback thread to freeze
authorJeff Layton <jlayton@redhat.com>
Mon, 25 Mar 2013 11:59:57 +0000 (07:59 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 5 Apr 2013 21:03:52 +0000 (17:03 -0400)
The v4.1 callback thread has set_freezable() at the top, but it doesn't
ever try to freeze within the loop. Have it call try_to_freeze() at the
top of the loop. If a freeze event occurs, recheck kthread_should_stop()
after thawing.

Reported-by: Yanchuan Nian <ycnian@gmail.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/callback.c

index 5088b57b078a729d09ced36b3e491c01cba9cf4c..cff089a412c7f4bde3bd2f1d5138a4679535b772 100644 (file)
@@ -125,6 +125,9 @@ nfs41_callback_svc(void *vrqstp)
        set_freezable();
 
        while (!kthread_should_stop()) {
+               if (try_to_freeze())
+                       continue;
+
                prepare_to_wait(&serv->sv_cb_waitq, &wq, TASK_INTERRUPTIBLE);
                spin_lock_bh(&serv->sv_cb_lock);
                if (!list_empty(&serv->sv_cb_list)) {