[PATCH/RFC 00/18] VFS/nfsd: replace dentry_create()

NeilBrown <[email protected]>
Newsgroups gmane.linux.nfs,gmane.linux.file-systems
Message-ID <[email protected]>
My recent proposal for inverting the order between inode_lock() on a
parent dir and d_alloc_parallel()[1] missed that fact that atomic_open()
has two callers, and would have resulted in easy deadlocks from nfsd
when re-exporting and NFS filesystem.

I think the best way to fix this is to provide a richer interface for
nfsd to use, which includes all the locking as well as inode_operations
calls.  This allows the nfsd behaviour to share more code with the
system-call behaviour.

This series refactors code between lookup_open() and
open_last_lookups(), and uses the new lookup_open() to provide
vfs_lookup_open().  It then rearranges the code in nfsd so that it can
easily use vfs_lookup_open() instead of dentry_create().  Finally
dentry_create() is removed.

This series is based on a merge of nfsd-testing, vfs-next/work.dcache,
and vfs/vfs.fixes (though I can't see my "Fix possible failure to
unlock.."[2] patch in there yet).  So I probably will need to resubmit
after a bunch of that has hit mainline - though a few of the patches
could easily be cherry-picked now.

This will conflict with the O_CREAT|O_DIRECTORY work so obviously we'll need to
work out how to order them once we both have enough positive review.

All these patches are in github/neilbrown/linux in branch pdirops.
You can also preview the other stuff I need this for in pdirops-next.

Please review if you have time.

Thanks,
NeilBrown


[1] https://lore.kernel.org/all/20260312214330.3885211-1-neilb-Sd0XuJVzD+XR7s880joybQ@public.gmane.org/
[2] https://lore.kernel.org/all/177969022571.3379282.16448744624428323496-JLoEN7xFGctFCbeL7jWTlIvC60bnQu0Y@public.gmane.org/

 [PATCH 01/18] VFS: move mnt_want_write() and locking into
 [PATCH 02/18] VFS: move delegated_inode retry loop into lookup_open()
 [PATCH 03/18] VFS: replace nameidata and open_flag args to
 [PATCH 04/18] VFS: add vfs_lookup_open()
 [PATCH 05/18] VFS: dentry_create: always set FMODE_CREATE when file
 [PATCH 06/18] nfsd: replace fh_fill_both_attrs() with
 [PATCH 07/18] nfsd: move fh_want_write() after preamble in
 [PATCH 08/18] nfsd: move more nfs-specific code into preamble of
 [PATCH 09/18] nfsd: remove subtlety from nfsd4_create_file()
 [PATCH 10/18] nfsd: in nfsd4_create_file() let VFS report if file was
 [PATCH 11/18] nfsd: nfsd4_create_file(): remove NFSD_MAY_CREATE
 [PATCH 12/18] nfsd: reduce range of directory lock in
 [PATCH 13/18] nfsd: open-code nfsd4_vfs_create() into
 [PATCH 14/18] nfsd: move some code out of the d_really_is_negative()
 [PATCH 15/18] nfsd: reduce want-write range in nfsd4_create_file(
 [PATCH 16/18] nfsd: switch nfsd4_create_file() to use
 [PATCH 17/18] nfsd: use vfs_lookup_open() for non-creating open
 [PATCH 18/18] VFS: remove dentry_create()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.