[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()