Hi Christian,
do you have thoughts about this series? Any idea when you might have
time to review and (hopefully) apply them?
Thanks,
NeilBrown
On Wed, 25 Feb 2026, NeilBrown wrote:
> Following Chris Mason's tool-based review, here is v3 with some fixes.
> Particularly 06/15 mistakenly tested the result of start_creating for NULL
> and 09/15 had some really messed up flow in error handling.
> Also human-language typos fixed.
>
> This code is in
> github.com:neilbrown/linux.git
> branch pdirops
>
> For anyone interested, my next batch is in branch pdirops-next
>
> Original patch description below.
>
> Thanks,
> NeilBrown
>
> I am working towards changing the locking rules for name-operations: locking
> the name rather than the whole directory.
>
> The current part of this process is centralising all the locking so that
> it can be changed in one place.
>
> Recently "start_creating", "start_removing", "start_renaming" and related
> interaces were added which combine the locking and the lookup. At that time
> many callers were changed to use the new interfaces. However there are still
> an assortment of places out side of fs/namei.c where the directory is locked
> explictly, whether with inode_lock() or lock_rename() or similar. These were
> missed in the first pass for an assortment of uninteresting reasons.
>
> This series addresses the remaining places where explicit locking is
> used, and changes them to use the new interfaces, or otherwise removes
> the explicit locking.
>
> The biggest changes are in overlayfs. The other changes are quite
> simple, though maybe the cachefiles changes is the least simple of those.
>
> I'm running the --overlay tests in xfstests and nothing has popped yet.
> I'll continue with this and run some NFS tests too.
>
> Thanks for your review of these patches!
>
> NeilBrown
>
> [PATCH v3 01/15] VFS: note error returns in documentation for various
> [PATCH v3 02/15] fs/proc: Don't lock root inode when creating "self"
> [PATCH v3 03/15] VFS: move the start_dirop() kerndoc comment to
> [PATCH v3 04/15] libfs: change simple_done_creating() to use
> [PATCH v3 05/15] Apparmor: Use simple_start_creating() /
> [PATCH v3 06/15] selinux: Use simple_start_creating() /
> [PATCH v3 07/15] nfsd: switch purge_old() to use
> [PATCH v3 08/15] VFS: make lookup_one_qstr_excl() static.
> [PATCH v3 09/15] ovl: Simplify ovl_lookup_real_one()
> [PATCH v3 10/15] cachefiles: change cachefiles_bury_object to use
> [PATCH v3 11/15] ovl: pass name buffer to ovl_start_creating_temp()
> [PATCH v3 12/15] ovl: change ovl_create_real() to get a new lock when
> [PATCH v3 13/15] ovl: use is_subdir() for testing if one thing is a
> [PATCH v3 14/15] ovl: remove ovl_lock_rename_workdir()
> [PATCH v3 15/15] VFS: unexport lock_rename(), lock_rename_child(),
>
>