[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250214063306.GD1977892@ZenIV>
Date: Fri, 14 Feb 2025 06:33:06 +0000
From: Al Viro <viro@...iv.linux.org.uk>
To: NeilBrown <neilb@...e.de>
Cc: Christian Brauner <brauner@...nel.org>,
Trond Myklebust <trondmy@...nel.org>,
Anna Schumaker <anna@...nel.org>, linux-nfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 0/3} Change ->mkdir() and vfs_mkdir() to return a dentry
On Fri, Feb 14, 2025 at 06:13:55AM +0000, Al Viro wrote:
> On Fri, Feb 14, 2025 at 06:00:39AM +0000, Al Viro wrote:
>
> > 3) I'm pretty sure that NFS is *not* the only filesystem that returns
> > unhashed negative in some success cases; will need to go over the instances
> > to verify that, though.
>
> Definitely so: in cifs_mkdir() we have
> if ((server->ops->posix_mkdir) && (tcon->posix_extensions)) {
> rc = server->ops->posix_mkdir(xid, inode, mode, tcon, full_path,
> cifs_sb);
> d_drop(direntry); /* for time being always refresh inode info */
> goto mkdir_out;
> }
> There might be other cases. hostfs is definitely like that, I'm pretty
> sure that kernfs is as well...
kernfs is actually playing fast and loose with the calling conventions there;
it does not bother with unhashing and relies upon its ->d_revalidate()
noticing and unhashing the sucker.
Another variant that would work (and follow the calling conventions)
is to have ->lookup() that leaves negatives unhashed and ->mkdir()
not bothering to hash or instantiate.
It really needs a review instance by instance.
And yes, it does look like ->lookup()-like calling conventions end up better,
especially if we make an instance return d_splice_alias() result...
Powered by blists - more mailing lists