From: NeilBrown <neilb@ownmail.net>
To: "Jeff Layton" <jlayton@kernel.org>
Cc: "Miklos Szeredi" <miklos@szeredi.hu>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Christian Brauner" <brauner@kernel.org>,
"Jan Kara" <jack@suse.cz>, "Chuck Lever" <chuck.lever@oracle.com>,
"Alexander Aring" <alex.aring@gmail.com>,
"Trond Myklebust" <trondmy@kernel.org>,
"Anna Schumaker" <anna@kernel.org>,
"Steve French" <sfrench@samba.org>,
"Paulo Alcantara" <pc@manguebit.org>,
"Ronnie Sahlberg" <ronniesahlberg@gmail.com>,
"Shyam Prasad N" <sprasad@microsoft.com>,
"Tom Talpey" <tom@talpey.com>,
"Bharath SM" <bharathsm@microsoft.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"David Howells" <dhowells@redhat.com>,
"Tyler Hicks" <code@tyhicks.com>,
"Olga Kornievskaia" <okorniev@redhat.com>,
"Dai Ngo" <Dai.Ngo@oracle.com>,
"Amir Goldstein" <amir73il@gmail.com>,
"Namjae Jeon" <linkinjeon@kernel.org>,
"Steve French" <smfrench@gmail.com>,
"Sergey Senozhatsky" <senozhatsky@chromium.org>,
"Carlos Maiolino" <cem@kernel.org>,
"Kuniyuki Iwashima" <kuniyu@google.com>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Simon Horman" <horms@kernel.org>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org,
samba-technical@lists.samba.org, netfs@lists.linux.dev,
ecryptfs@vger.kernel.org, linux-unionfs@vger.kernel.org,
linux-xfs@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH 02/13] filelock: add a lm_may_setlease lease_manager callback
Date: Wed, 15 Oct 2025 09:10:23 +1100 [thread overview]
Message-ID: <176047982343.1793333.618816248171085890@noble.neil.brown.name> (raw)
In-Reply-To: <87a320441f2b568c71649a7e6e99381b1dba6a8e.camel@kernel.org>
On Tue, 14 Oct 2025, Jeff Layton wrote:
> On Tue, 2025-10-14 at 16:34 +1100, NeilBrown wrote:
> > On Tue, 14 Oct 2025, Jeff Layton wrote:
> > > The NFSv4.1 protocol adds support for directory delegations, but it
> > > specifies that if you already have a delegation and try to request a new
> > > one on the same filehandle, the server must reply that the delegation is
> > > unavailable.
> > >
> > > Add a new lease manager callback to allow the lease manager (nfsd in
> > > this case) to impose this extra check when performing a setlease.
> > >
> > > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> > > ---
> > > fs/locks.c | 5 +++++
> > > include/linux/filelock.h | 14 ++++++++++++++
> > > 2 files changed, 19 insertions(+)
> > >
> > > diff --git a/fs/locks.c b/fs/locks.c
> > > index 0b16921fb52e602ea2e0c3de39d9d772af98ba7d..9e366b13674538dbf482ffdeee92fc717733ee20 100644
> > > --- a/fs/locks.c
> > > +++ b/fs/locks.c
> > > @@ -1826,6 +1826,11 @@ generic_add_lease(struct file *filp, int arg, struct file_lease **flp, void **pr
> > > continue;
> > > }
> > >
> > > + /* Allow the lease manager to veto the setlease */
> > > + if (lease->fl_lmops->lm_may_setlease &&
> > > + !lease->fl_lmops->lm_may_setlease(lease, fl))
> > > + goto out;
> > > +
> >
> > I don't see any locking around this. What if the condition which
> > triggers a veto happens after this check, and before the lm_change
> > below?
> > Should lm_change implement the veto? Return -EAGAIN?
> >
> >
>
> The flc_lock is held over this check and any subsequent lease addition.
> Is that not sufficient?
Ah - I didn't see that - sorry.
But I still wonder why ->lm_change cannot do the veto.
I also wonder if the current code can work. If that loop finds an
existing lease with the same file and the same owner the it invokes
"continue" before the code that you added.
So unless I'm misunderstanding (again) in the case that you are
interested in, the new code doesn't run.
Thanks,
NeilBrown
next prev parent reply other threads:[~2025-10-14 22:10 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-13 14:47 [PATCH 00/13] vfs: recall-only directory delegations for knfsd Jeff Layton
2025-10-13 14:47 ` [PATCH 01/13] filelock: push the S_ISREG check down to ->setlease handlers Jeff Layton
2025-10-14 5:37 ` NeilBrown
2025-10-14 11:07 ` Jeff Layton
2025-10-13 14:48 ` [PATCH 02/13] filelock: add a lm_may_setlease lease_manager callback Jeff Layton
2025-10-14 5:34 ` NeilBrown
2025-10-14 11:10 ` Jeff Layton
2025-10-14 22:10 ` NeilBrown [this message]
2025-10-15 11:35 ` Jeff Layton
2025-10-13 14:48 ` [PATCH 03/13] vfs: add try_break_deleg calls for parents to vfs_{link,rename,unlink} Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 04/13] vfs: allow mkdir to wait for delegation break on parent Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 05/13] vfs: allow rmdir " Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 06/13] vfs: break parent dir delegations in open(..., O_CREAT) codepath Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 07/13] vfs: make vfs_create break delegations on parent directory Jeff Layton
2025-10-13 20:33 ` Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 08/13] vfs: make vfs_mknod " Jeff Layton
2025-10-20 9:38 ` Jan Kara
2025-10-13 14:48 ` [PATCH 09/13] filelock: lift the ban on directory leases in generic_setlease Jeff Layton
2025-10-13 14:48 ` [PATCH 10/13] nfsd: allow filecache to hold S_IFDIR files Jeff Layton
2025-10-14 5:45 ` NeilBrown
2025-10-13 14:48 ` [PATCH 11/13] nfsd: allow DELEGRETURN on directories Jeff Layton
2025-10-13 14:48 ` [PATCH 12/13] nfsd: check for delegation conflicts vs. the same client Jeff Layton
2025-10-14 5:48 ` NeilBrown
2025-10-13 14:48 ` [PATCH 13/13] nfsd: wire up GET_DIR_DELEGATION handling Jeff Layton
2025-10-13 14:52 ` [PATCH 00/13] vfs: recall-only directory delegations for knfsd Chuck Lever
2025-10-13 15:26 ` 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=176047982343.1793333.618816248171085890@noble.neil.brown.name \
--to=neilb@ownmail.net \
--cc=Dai.Ngo@oracle.com \
--cc=alex.aring@gmail.com \
--cc=amir73il@gmail.com \
--cc=anna@kernel.org \
--cc=bharathsm@microsoft.com \
--cc=brauner@kernel.org \
--cc=cem@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=code@tyhicks.com \
--cc=dakr@kernel.org \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=ecryptfs@vger.kernel.org \
--cc=edumazet@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=horms@kernel.org \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linkinjeon@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=neil@brown.name \
--cc=netdev@vger.kernel.org \
--cc=netfs@lists.linux.dev \
--cc=okorniev@redhat.com \
--cc=pabeni@redhat.com \
--cc=pc@manguebit.org \
--cc=rafael@kernel.org \
--cc=ronniesahlberg@gmail.com \
--cc=samba-technical@lists.samba.org \
--cc=senozhatsky@chromium.org \
--cc=sfrench@samba.org \
--cc=smfrench@gmail.com \
--cc=sprasad@microsoft.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).