From patchwork Tue Feb 15 14:58:59 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 559041 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1FEx8Zm023655 for ; Tue, 15 Feb 2011 14:59:08 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754174Ab1BOO7G (ORCPT ); Tue, 15 Feb 2011 09:59:06 -0500 Received: from mail-gw0-f46.google.com ([74.125.83.46]:36216 "EHLO mail-gw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751201Ab1BOO7F (ORCPT ); Tue, 15 Feb 2011 09:59:05 -0500 Received: by gwj20 with SMTP id 20so103086gwj.19 for ; Tue, 15 Feb 2011 06:59:04 -0800 (PST) Received: by 10.100.124.10 with SMTP id w10mr2217043anc.50.1297781944363; Tue, 15 Feb 2011 06:59:04 -0800 (PST) Received: from salusa.poochiereds.net (cpe-071-070-153-003.nc.res.rr.com [71.70.153.3]) by mx.google.com with ESMTPS id p14sm5091888ank.34.2011.02.15.06.59.03 (version=SSLv3 cipher=OTHER); Tue, 15 Feb 2011 06:59:03 -0800 (PST) From: Jeff Layton To: Trond Myklebust Cc: linux-nfs@vger.kernel.org Subject: [PATCH] nfs: don't queue synchronous NFSv4 close rpc_release to nfsiod Date: Tue, 15 Feb 2011 09:58:59 -0500 Message-Id: <1297781939-1400-1-git-send-email-jlayton@redhat.com> X-Mailer: git-send-email 1.7.4 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Tue, 15 Feb 2011 14:59:08 +0000 (UTC) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 78936a8..4cabfea 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -1988,11 +1988,14 @@ int nfs4_do_close(struct path *path, struct nfs4_state *state, gfp_t gfp_mask, i .rpc_client = server->client, .rpc_message = &msg, .callback_ops = &nfs4_close_ops, - .workqueue = nfsiod_workqueue, .flags = RPC_TASK_ASYNC, }; int status = -ENOMEM; + /* rpc_release must be synchronous too if "wait" is set */ + if (!wait) + task_setup_data.workqueue = nfsiod_workqueue; + calldata = kzalloc(sizeof(*calldata), gfp_mask); if (calldata == NULL) goto out;