From: Chuck Lever <chuck.lever@oracle.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: Neil Brown <neilb@suse.de>, Olga Kornievskaia <kolga@netapp.com>,
Dai Ngo <Dai.Ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
Trond Myklebust <trondmy@kernel.org>,
Anna Schumaker <anna@kernel.org>,
Olga Kornievskaia <okorniev@redhat.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Jonathan Corbet <corbet@lwn.net>, Tom Haynes <loghyr@gmail.com>,
linux-kernel@vger.kernel.org, linux-nfs@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH v3 01/13] nfsd: fix nfsd4_deleg_getattr_conflict in presence of third party lease
Date: Thu, 29 Aug 2024 11:17:45 -0400 [thread overview]
Message-ID: <ZtCRGfPRayPPDXRM@tissot.1015granger.net> (raw)
In-Reply-To: <20240829-delstid-v3-1-271c60806c5d@kernel.org>
On Thu, Aug 29, 2024 at 09:26:39AM -0400, Jeff Layton wrote:
> From: NeilBrown <neilb@suse.de>
>
> It is not safe to dereference fl->c.flc_owner without first confirming
> fl->fl_lmops is the expected manager. nfsd4_deleg_getattr_conflict()
> tests fl_lmops but largely ignores the result and assumes that flc_owner
> is an nfs4_delegation anyway. This is wrong.
>
> With this patch we restore the "!= &nfsd_lease_mng_ops" case to behave
> as it did before the changed mentioned below. This the same as the
> current code, but without any reference to a possible delegation.
>
> Fixes: c5967721e106 ("NFSD: handle GETATTR conflict with write delegation")
> Signed-off-by: NeilBrown <neilb@suse.de>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
I've already applied this to nfsd-fixes.
If I include this commit in both nfsd-fixes and nfsd-next then the
linux-next merge whines about duplicate patches. Stephen Rothwell
suggested git-merging nfsd-fixes and nfsd-next but I'm not quite
confident enough to try that.
Barring another solution, merging this series will have to wait a
few days before the two trees can sync up.
> ---
> fs/nfsd/nfs4state.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index b6bf39c64d78..eaa11d42d1b1 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -8854,7 +8854,15 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct dentry *dentry,
> */
> if (type == F_RDLCK)
> break;
> - goto break_lease;
> +
> + nfsd_stats_wdeleg_getattr_inc(nn);
> + spin_unlock(&ctx->flc_lock);
> +
> + status = nfserrno(nfsd_open_break_lease(inode, NFSD_MAY_READ));
> + if (status != nfserr_jukebox ||
> + !nfsd_wait_for_delegreturn(rqstp, inode))
> + return status;
> + return 0;
> }
> if (type == F_WRLCK) {
> struct nfs4_delegation *dp = fl->c.flc_owner;
> @@ -8863,7 +8871,6 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct dentry *dentry,
> spin_unlock(&ctx->flc_lock);
> return 0;
> }
> -break_lease:
> nfsd_stats_wdeleg_getattr_inc(nn);
> dp = fl->c.flc_owner;
> refcount_inc(&dp->dl_stid.sc_count);
>
> --
> 2.46.0
>
--
Chuck Lever
next prev parent reply other threads:[~2024-08-29 15:18 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-29 13:26 [PATCH v3 00/13] nfsd: implement the "delstid" draft Jeff Layton
2024-08-29 13:26 ` [PATCH v3 01/13] nfsd: fix nfsd4_deleg_getattr_conflict in presence of third party lease Jeff Layton
2024-08-29 15:17 ` Chuck Lever [this message]
2024-08-30 6:01 ` NeilBrown
2024-08-30 13:54 ` Chuck Lever III
2024-08-29 13:26 ` [PATCH v3 02/13] nfsd: untangle code in nfsd4_deleg_getattr_conflict() Jeff Layton
2024-08-29 13:26 ` [PATCH v3 03/13] nfsd: drop the ncf_cb_bmap field Jeff Layton
2024-09-04 15:20 ` Chuck Lever
2024-09-04 16:58 ` Jeff Layton
2024-09-04 17:28 ` Chuck Lever III
2024-09-04 17:39 ` Jeff Layton
2024-09-04 17:45 ` Chuck Lever III
2024-09-05 1:44 ` NeilBrown
2024-08-29 13:26 ` [PATCH v3 04/13] nfsd: drop the nfsd4_fattr_args "size" field Jeff Layton
2024-08-29 13:26 ` [PATCH v3 05/13] nfsd: have nfsd4_deleg_getattr_conflict pass back write deleg pointer Jeff Layton
2024-08-29 13:26 ` [PATCH v3 06/13] nfsd: add pragma public to delegated timestamp types Jeff Layton
2024-08-29 15:19 ` Chuck Lever
2024-08-29 13:26 ` [PATCH v3 07/13] nfsd: fix reported change attr on a write delegation Jeff Layton
2024-08-29 13:26 ` [PATCH v3 08/13] nfs_common: make nfs4.h include generated nfs4_1.h Jeff Layton
2024-08-29 15:13 ` Chuck Lever
2024-08-29 15:28 ` Chuck Lever
2024-08-29 18:26 ` Jeff Layton
2024-08-29 19:02 ` Chuck Lever III
2024-08-30 14:48 ` Chuck Lever III
2024-08-30 15:44 ` Jeff Layton
2024-08-30 17:48 ` Jeff Layton
2024-08-29 13:26 ` [PATCH v3 09/13] nfsd: add support for FATTR4_OPEN_ARGUMENTS Jeff Layton
2024-08-29 13:26 ` [PATCH v3 10/13] nfsd: implement OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION Jeff Layton
2024-08-29 13:26 ` [PATCH v3 11/13] fs: handle delegated timestamps in setattr_copy_mgtime Jeff Layton
2024-09-02 13:22 ` Jan Kara
2024-08-29 13:26 ` [PATCH v3 12/13] nfsd: add support for delegated timestamps Jeff Layton
2024-08-29 13:26 ` [PATCH v3 13/13] nfsd: handle delegated timestamps in SETATTR Jeff Layton
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=ZtCRGfPRayPPDXRM@tissot.1015granger.net \
--to=chuck.lever@oracle.com \
--cc=Dai.Ngo@oracle.com \
--cc=anna@kernel.org \
--cc=brauner@kernel.org \
--cc=corbet@lwn.net \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=kolga@netapp.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=loghyr@gmail.com \
--cc=neilb@suse.de \
--cc=okorniev@redhat.com \
--cc=tom@talpey.com \
--cc=trondmy@kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox