From: Jeff Layton <jlayton@kernel.org>
To: Dai Ngo <dai.ngo@oracle.com>,
Chuck Lever <chuck.lever@oracle.com>, Neil Brown <neilb@suse.de>,
Olga Kornievskaia <okorniev@redhat.com>,
Tom Talpey <tom@talpey.com>
Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] nfsd: allow SC_STATUS_FREEABLE when searching via nfs4_lookup_stateid()
Date: Thu, 13 Feb 2025 07:55:56 -0500 [thread overview]
Message-ID: <e6be9dea9084e8c8c46ba3c1d487d3466d51cbc7.camel@kernel.org> (raw)
In-Reply-To: <41f5a8cc-8a8e-4a67-b889-7dc7fa39fb19@oracle.com>
On Wed, 2025-02-12 at 13:41 -0800, Dai Ngo wrote:
> On 2/12/25 8:29 AM, Jeff Layton wrote:
> > When a delegation is revoked, it's initially marked with
> > SC_STATUS_REVOKED, or SC_STATUS_ADMIN_REVOKED and later, it's marked
> > with the SC_STATUS_FREEABLE flag, which denotes that it is waiting for
> > s FREE_STATEID call.
> >
> > nfs4_lookup_stateid() accepts a statusmask that includes the status
> > flags that a found stateid is allowed to have. Currently, that mask
> > never includes SC_STATUS_FREEABLE, which means that revoked delegations
> > are (almost) never found.
> >
> > Add SC_STATUS_FREEABLE to the always-allowed status flags.
> >
> > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> > ---
> > This fixes the pynfs DELEG8 test.
> > ---
> > fs/nfsd/nfs4state.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> > index 153eeea2c7c999d003cd1f36cecb0dd4f6e049b8..56bf07d623d085589823f3fba18afa62c0b3dbd2 100644
> > --- a/fs/nfsd/nfs4state.c
> > +++ b/fs/nfsd/nfs4state.c
> > @@ -7051,7 +7051,7 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate,
> > */
> > statusmask |= SC_STATUS_REVOKED;
> >
> > - statusmask |= SC_STATUS_ADMIN_REVOKED;
> > + statusmask |= SC_STATUS_ADMIN_REVOKED | SC_STATUS_FREEABLE;
>
> I think it's safer to add the SC_STATUS_FREEABLE inside the if statement
> that checks for SC_TYPE_DELEG above.
>
That's not enough. SC_STATUS_ADMIN_REVOKED is always allowed, and for
that to work properly, we need to always allow SC_STATUS_FREEABLE too.
> Also, don't we also need to mark the delegation with SC_STATUS_REVOKED in
> revoke_delegation()?
>
No. The idea is that the REVOKED flag should be set before calling
revoke_delegation(). Typically they get marked REVOKED or ADMIN_REVOKED
under spinlock, and then we call revoke_delegation() afterward to
finish the job.
> >
> > if (ZERO_STATEID(stateid) || ONE_STATEID(stateid) ||
> > CLOSE_STATEID(stateid))
> >
> > ---
> > base-commit: 4990d098433db18c854e75fb0f90d941eb7d479e
> > change-id: 20250212-nfsd-fixes-fa8047082335
> >
> > Best regards,
--
Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2025-02-13 12:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-12 16:29 [PATCH] nfsd: allow SC_STATUS_FREEABLE when searching via nfs4_lookup_stateid() Jeff Layton
2025-02-12 16:34 ` Chuck Lever
2025-02-12 16:36 ` Jeff Layton
2025-02-12 21:13 ` NeilBrown
2025-02-13 12:52 ` Jeff Layton
2025-02-12 21:41 ` Dai Ngo
2025-02-13 12:55 ` Jeff Layton [this message]
2025-04-17 12:48 ` Benjamin Coddington
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6be9dea9084e8c8c46ba3c1d487d3466d51cbc7.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dai.ngo@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=okorniev@redhat.com \
--cc=tom@talpey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.