From patchwork Wed Mar 9 23:32:26 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 622811 X-Patchwork-Delegate: Trond.Myklebust@netapp.com 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 p29NWa4p014365 for ; Wed, 9 Mar 2011 23:32:37 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751324Ab1CIXcg (ORCPT ); Wed, 9 Mar 2011 18:32:36 -0500 Received: from mx2.netapp.com ([216.240.18.37]:64259 "EHLO mx2.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751249Ab1CIXcf (ORCPT ); Wed, 9 Mar 2011 18:32:35 -0500 X-IronPort-AV: E=Sophos;i="4.62,292,1297065600"; d="scan'208";a="528359819" Received: from smtp1.corp.netapp.com ([10.57.156.124]) by mx2-out.netapp.com with ESMTP; 09 Mar 2011 15:32:35 -0800 Received: from heimdal.trondhjem.org.com (san-lxp.hq.netapp.com [10.58.56.108] (may be forged)) by smtp1.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id p29NWX3G017402; Wed, 9 Mar 2011 15:32:34 -0800 (PST) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 3/4] NFSv4: Fix the setlk error handler Date: Wed, 9 Mar 2011 18:32:26 -0500 Message-Id: <1299713547-22190-3-git-send-email-Trond.Myklebust@netapp.com> X-Mailer: git-send-email 1.7.4 In-Reply-To: <1299713547-22190-2-git-send-email-Trond.Myklebust@netapp.com> References: <1299713547-22190-1-git-send-email-Trond.Myklebust@netapp.com> <1299713547-22190-2-git-send-email-Trond.Myklebust@netapp.com> 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]); Wed, 09 Mar 2011 23:32:37 +0000 (UTC) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 8ae1926..f49b629 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -4173,23 +4173,18 @@ static const struct rpc_call_ops nfs4_recover_lock_ops = { static void nfs4_handle_setlk_error(struct nfs_server *server, struct nfs4_lock_state *lsp, int new_lock_owner, int error) { - struct nfs_client *clp = server->nfs_client; - struct nfs4_state *state = lsp->ls_state; - switch (error) { case -NFS4ERR_ADMIN_REVOKED: case -NFS4ERR_BAD_STATEID: - case -NFS4ERR_EXPIRED: + lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED; if (new_lock_owner != 0 || (lsp->ls_flags & NFS_LOCK_INITIALIZED) != 0) - nfs4_state_mark_reclaim_nograce(clp, state); - lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED; + nfs4_schedule_stateid_recovery(server, lsp->ls_state); break; case -NFS4ERR_STALE_STATEID: - if (new_lock_owner != 0 || - (lsp->ls_flags & NFS_LOCK_INITIALIZED) != 0) - nfs4_state_mark_reclaim_reboot(clp, state); lsp->ls_seqid.flags &= ~NFS_SEQID_CONFIRMED; + case -NFS4ERR_EXPIRED: + nfs4_schedule_lease_recovery(server->nfs_client); }; }