From: "J. Bruce Fields" Subject: Re: [PATCH 08/14] nfsd4: fail when delegreturn gets a non-delegation stateid Date: Wed, 11 Mar 2009 16:07:23 -0400 Message-ID: <20090311200723.GK13540@fieldses.org> References: <1236731222-3294-1-git-send-email-bfields@fieldses.org> <1236731222-3294-2-git-send-email-bfields@fieldses.org> <1236731222-3294-3-git-send-email-bfields@fieldses.org> <1236731222-3294-4-git-send-email-bfields@fieldses.org> <1236731222-3294-5-git-send-email-bfields@fieldses.org> <1236731222-3294-6-git-send-email-bfields@fieldses.org> <1236731222-3294-7-git-send-email-bfields@fieldses.org> <1236731222-3294-8-git-send-email-bfields@fieldses.org> <1236731222-3294-9-git-send-email-bfields@fieldses.org> <49B71956.5030305@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-nfs@vger.kernel.org To: Yang Hongyang Return-path: Received: from mail.fieldses.org ([141.211.133.115]:52335 "EHLO pickle.fieldses.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750860AbZCKUHZ (ORCPT ); Wed, 11 Mar 2009 16:07:25 -0400 In-Reply-To: <49B71956.5030305@cn.fujitsu.com> Sender: linux-nfs-owner@vger.kernel.org List-ID: On Wed, Mar 11, 2009 at 09:52:22AM +0800, Yang Hongyang wrote: > J. Bruce Fields wrote: > > From: J. Bruce Fields > > > > Previous cleanup reveals an obvious (though harmless) bug: when > > delegreturn gets a stateid that isn't for a delegation, it should return > > an error rather than doing nothing. > > > > Signed-off-by: J. Bruce Fields > > --- > > fs/nfsd/nfs4state.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > > index de1d68a..4a92d1e 100644 > > --- a/fs/nfsd/nfs4state.c > > +++ b/fs/nfsd/nfs4state.c > > @@ -2418,7 +2418,7 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, > > status = nfserr_stale_stateid; > > if (STALE_STATEID(stateid)) > > goto out; > > - status = nfs_ok; > > + status = nfserr_bad_stateid; > > this should be done in patch 7? > > > if (is_delegation_stateid(stateid)) > > goto out; > > confused! > if (is_delegation_stateid(stateid)) means a stateid is for a delegation right? > Are we prefered if (!(is_delegation_stateid(stateid)))? Ugh, yes, thanks for spotting that. I need to take another look. (And also figure out why pynfs didn't catch this--ok, turns out I need to explicitly ask for "delegations" on the ./testserver commandline--this isn't included in the standard tests. Oops.) --b.