Re: [PATCH v2] vfs: remove the excl argument from the ->create() inode_operation

Dominique Martinet
2025-11-08T06:13:00Z

Jeff Layton wrote on Fri, Nov 07, 2025 at 10:05:03AM -0500:
> With two exceptions, ->create() methods provided by filesystems ignore
> the "excl" flag. Those exception are NFS and GFS2 which both also
> provide ->atomic_open.
>
> Since ce8644fcadc5 ("lookup_open(): expand the call of vfs_create()"),
> the "excl" argument to the ->create() inode_operation is always set to
> true in vfs_create(). The ->create() call in lookup_open() sets it
> according to the O_EXCL open flag, but is never called if the filesystem
> provides ->atomic_open().
>
> The excl flag is therefore always either ignored or true. Remove it,
> and change NFS and GFS2 to act as if it were always true.
>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>

Good cleanup, just one whitespace nitpick below but:
Reviewed-by: Dominique Martinet <asmadeus@codewreck.org>

> diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst
> index 4f13b01e42eb5e2ad9d60cbbce7e47d09ad831e6..7a55e491e0c87a0d18909bd181754d6d68318059 100644
> --- a/Documentation/filesystems/vfs.rst
> +++ b/Documentation/filesystems/vfs.rst
> @@ -505,7 +505,10 @@ otherwise noted.
> if you want to support regular files. The dentry you get should
> not have an inode (i.e. it should be a negative dentry). Here
> you will probably call d_instantiate() with the dentry and the
> - newly created inode
> + newly created inode. This operation should always provide O_EXCL

This and the block below change halfway from tab (old text) to spaces
(your patch)

Looks like the file has a few space-indented sections though so it won't
be the first if that goes in as is, the html-rendering doesn't seem to
care :)

Cheers,
--
Dominique Martinet | Asmadeus