Messages in this thread | | | Date | Mon, 18 Mar 2024 09:25:25 +0100 | Subject | Re: [PATCH RFC 06/24] vfs: break parent dir delegations in open(..., O_CREAT) codepath | From | Stefan Metzmacher <> |
| |
Hi Jeff,
> In order to add directory delegation support, we need to break > delegations on the parent whenever there is going to be a change in the > directory. > > Add a delegated_inode parameter to lookup_open and have it break the > delegation. Then, open_last_lookups can wait for the delegation break > and retry the call to lookup_open once it's done. > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/namei.c | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) > > diff --git a/fs/namei.c b/fs/namei.c > index f00d8d708001..88598a62ec64 100644 > --- a/fs/namei.c > +++ b/fs/namei.c > @@ -3404,7 +3404,7 @@ static struct dentry *atomic_open(struct nameidata *nd, struct dentry *dentry, > */ > static struct dentry *lookup_open(struct nameidata *nd, struct file *file, > const struct open_flags *op, > - bool got_write) > + bool got_write, struct inode **delegated_inode)
Does NFS has a concept of lease keys and parent lease keys?
In SMB it's possible that the client passes a lease key (16 client chosen bytes) to a directory open, when asking for a directory lease.
Then operations on files within that directory, take that lease key from the directory as 'parent lease keys' in addition to a unique lease key for the file.
That way a client can avoid breaking its own directory leases when creating/move/delete... files in the directory.
metze
| |