linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/21] ovl: narrow regions protected by i_rw_sem
@ 2025-07-16  0:44 NeilBrown
  2025-07-16  0:44 ` [PATCH v3 01/21] ovl: simplify an error path in ovl_copy_up_workdir() NeilBrown
                   ` (22 more replies)
  0 siblings, 23 replies; 41+ messages in thread
From: NeilBrown @ 2025-07-16  0:44 UTC (permalink / raw)
  To: Miklos Szeredi, Amir Goldstein; +Cc: linux-unionfs, linux-fsdevel

More excellent review feedback - more patches :-)

I've chosen to use ovl_parent_lock() here as a temporary and leave the
debate over naming for the VFS version of the function until all the new
names are introduced later.


Original description:

This series of patches for overlayfs is primarily focussed on preparing
for some proposed changes to directory locking.  In the new scheme we
will lock individual dentries in a directory rather than the whole
directory.

ovl currently will sometimes lock a directory on the upper filesystem
and do a few different things while holding the lock.  This is
incompatible with the new scheme.

This series narrows the region of code protected by the directory lock,
taking it multiple times when necessary.  This theoretically open up the
possibilty of other changes happening on the upper filesytem between the
unlock and the lock.  To some extent the patches guard against that by
checking the dentries still have the expect parent after retaking the
lock.  In general, I think ovl would have trouble if upperfs were being
changed independantly, and I don't think the changes here increase the
problem in any important way.

After this series (with any needed changes) lands I will resubmit my
change to vfs_rmdir() behaviour to have it drop the lock on error.  ovl
will be much better positioned to handle that change.  It will come with
the new "lookup_and_lock" API that I am proposing.

Thanks,
NeilBrown

 [PATCH v3 01/21] ovl: simplify an error path in ovl_copy_up_workdir()
 [PATCH v3 02/21] ovl: change ovl_create_index() to take dir locks
 [PATCH v3 03/21] ovl: Call ovl_create_temp() without lock held.
 [PATCH v3 04/21] ovl: narrow the locked region in
 [PATCH v3 05/21] ovl: narrow locking in ovl_create_upper()
 [PATCH v3 06/21] ovl: narrow locking in ovl_clear_empty()
 [PATCH v3 07/21] ovl: narrow locking in ovl_create_over_whiteout()
 [PATCH v3 08/21] ovl: simplify gotos in ovl_rename()
 [PATCH v3 09/21] ovl: narrow locking in ovl_rename()
 [PATCH v3 10/21] ovl: narrow locking in ovl_cleanup_whiteouts()
 [PATCH v3 11/21] ovl: narrow locking in ovl_cleanup_index()
 [PATCH v3 12/21] ovl: narrow locking in ovl_workdir_create()
 [PATCH v3 13/21] ovl: narrow locking in ovl_indexdir_cleanup()
 [PATCH v3 14/21] ovl: narrow locking in ovl_workdir_cleanup_recurse()
 [PATCH v3 15/21] ovl: change ovl_workdir_cleanup() to take dir lock
 [PATCH v3 16/21] ovl: narrow locking on ovl_remove_and_whiteout()
 [PATCH v3 17/21] ovl: change ovl_cleanup_and_whiteout() to take
 [PATCH v3 18/21] ovl: narrow locking in ovl_whiteout()
 [PATCH v3 19/21] ovl: narrow locking in ovl_check_rename_whiteout()
 [PATCH v3 20/21] ovl: change ovl_create_real() to receive dentry
 [PATCH v3 21/21] ovl: rename ovl_cleanup_unlocked() to ovl_cleanup()

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2025-08-04  8:58 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-16  0:44 [PATCH v3 00/21] ovl: narrow regions protected by i_rw_sem NeilBrown
2025-07-16  0:44 ` [PATCH v3 01/21] ovl: simplify an error path in ovl_copy_up_workdir() NeilBrown
2025-07-16  7:12   ` Amir Goldstein
2025-08-04  8:57   ` Miklos Szeredi
2025-07-16  0:44 ` [PATCH v3 02/21] ovl: change ovl_create_index() to take dir locks NeilBrown
2025-07-16  0:44 ` [PATCH v3 03/21] ovl: Call ovl_create_temp() without lock held NeilBrown
2025-07-16  0:44 ` [PATCH v3 04/21] ovl: narrow the locked region in ovl_copy_up_workdir() NeilBrown
2025-07-16  7:13   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 05/21] ovl: narrow locking in ovl_create_upper() NeilBrown
2025-07-16  0:44 ` [PATCH v3 06/21] ovl: narrow locking in ovl_clear_empty() NeilBrown
2025-07-16  0:44 ` [PATCH v3 07/21] ovl: narrow locking in ovl_create_over_whiteout() NeilBrown
2025-07-16  0:44 ` [PATCH v3 08/21] ovl: simplify gotos in ovl_rename() NeilBrown
2025-07-16  7:13   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 09/21] ovl: narrow locking " NeilBrown
2025-07-16  7:13   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 10/21] ovl: narrow locking in ovl_cleanup_whiteouts() NeilBrown
2025-07-16  0:44 ` [PATCH v3 11/21] ovl: narrow locking in ovl_cleanup_index() NeilBrown
2025-07-16  7:14   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 12/21] ovl: narrow locking in ovl_workdir_create() NeilBrown
2025-07-16  7:15   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 13/21] ovl: narrow locking in ovl_indexdir_cleanup() NeilBrown
2025-07-16  7:15   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 14/21] ovl: narrow locking in ovl_workdir_cleanup_recurse() NeilBrown
2025-07-16  7:16   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 15/21] ovl: change ovl_workdir_cleanup() to take dir lock as needed NeilBrown
2025-07-16  7:16   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 16/21] ovl: narrow locking on ovl_remove_and_whiteout() NeilBrown
2025-07-16  7:16   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 17/21] ovl: change ovl_cleanup_and_whiteout() to take rename lock as needed NeilBrown
2025-07-16  0:44 ` [PATCH v3 18/21] ovl: narrow locking in ovl_whiteout() NeilBrown
2025-07-16  7:15   ` Amir Goldstein
2025-07-16  0:44 ` [PATCH v3 19/21] ovl: narrow locking in ovl_check_rename_whiteout() NeilBrown
2025-07-16  0:44 ` [PATCH v3 20/21] ovl: change ovl_create_real() to receive dentry parent NeilBrown
2025-07-16  0:44 ` [PATCH v3 21/21] ovl: rename ovl_cleanup_unlocked() to ovl_cleanup() NeilBrown
2025-07-16  7:14   ` Amir Goldstein
2025-07-16  7:10 ` [PATCH v3 00/21] ovl: narrow regions protected by i_rw_sem Amir Goldstein
2025-07-16  7:19   ` NeilBrown
2025-07-16  7:35     ` Amir Goldstein
2025-07-16  8:05       ` NeilBrown
2025-07-16  9:09         ` Amir Goldstein
2025-07-18  9:11 ` Christian Brauner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).