From patchwork Tue Mar 26 13:06:39 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 2336261 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 024F1E014B for ; Tue, 26 Mar 2013 13:06:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933521Ab3CZNGt (ORCPT ); Tue, 26 Mar 2013 09:06:49 -0400 Received: from mail-yh0-f41.google.com ([209.85.213.41]:47765 "EHLO mail-yh0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933294Ab3CZNGp (ORCPT ); Tue, 26 Mar 2013 09:06:45 -0400 Received: by mail-yh0-f41.google.com with SMTP id 47so575431yhr.14 for ; Tue, 26 Mar 2013 06:06:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=hYWJSLQr+DU0EV06lLXKN/p5QaMn8h5I7vsH8FQ6ICM=; b=Qnug6420/au3ZnfkvyvLj/+WmUmXAo2Egqn0zgZl2qqL2xhGE2UHgQwJNWbpJZUiy3 y4tB7GH9QvSXyJEjqHdyGeoEvugz9UloJSWZZai0u6JBEqqeiyhBo3DyrD2by861911P E4KHrBfIO24LX6GPxZyL3y0oI04ODoQyMtPfqLAyig0f2nrsg3ROBSMeplVnhYlDkPS8 LURVdy0cqqSHyxn5NZZno90zUnzypgjR/gPChu1whXU998gMWeVOI3+oVEw4AU83lW49 sS+XYfazhj8Hz4s09EVtV1MC3DFT5ElKryddzZpewLERY0fsj6YsfXe8kXwjcb2RIDfo SUGA== X-Received: by 10.236.114.35 with SMTP id b23mr10014941yhh.0.1364303204209; Tue, 26 Mar 2013 06:06:44 -0700 (PDT) Received: from salusa.poochiereds.net (cpe-107-015-113-143.nc.res.rr.com. [107.15.113.143]) by mx.google.com with ESMTPS id t47sm25485661yhe.22.2013.03.26.06.06.42 (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 26 Mar 2013 06:06:43 -0700 (PDT) From: Jeff Layton To: trond.myklebust@netapp.com Cc: ycnian@gmail.com, linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] nfs: allow the v4.1 callback thread to freeze Date: Tue, 26 Mar 2013 09:06:39 -0400 Message-Id: <1364303199-13295-1-git-send-email-jlayton@redhat.com> X-Mailer: git-send-email 1.7.11.7 X-Gm-Message-State: ALoCoQl3mo/2X/1Wb5R37sC8vLtwEclqjaFtE9PUkxrMBQjy7J0m4QrKcybYLp9jcgsMUHcLIS3j Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org 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-and-Tested-by: Yanchuan Nian Signed-off-by: Jeff Layton --- fs/nfs/callback.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 5088b57..cff089a 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -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)) {