This series of patches for overlayfs is primarily focussed on preparing for some proposed changes to directory locking. In the new scheme we wil 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. The first patch in this series doesn't exactly match the above, but it does relate to directory locking and I think it is a sensible simplificaiton. I have tested this with fstests, both generic and unionfs tests. I wouldn't be surprised if I missed something though, so please review carefully. 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 01/12] ovl: use is_subdir() for testing if one thing is a [PATCH 02/12] ovl: Call ovl_create_temp() and ovl_create_index() [PATCH 03/12] ovl: narrow the locked region in ovl_copy_up_workdir() [PATCH 04/12] ovl: narrow locking in ovl_create_upper() [PATCH 05/12] ovl: narrow locking in ovl_clear_empty() [PATCH 06/12] ovl: narrow locking in ovl_create_over_whiteout() [PATCH 07/12] ovl: narrow locking in ovl_rename() [PATCH 08/12] ovl: narrow locking in ovl_cleanup_whiteouts() [PATCH 09/12] ovl: whiteout locking changes [PATCH 10/12] ovl: narrow locking in ovl_check_rename_whiteout() [PATCH 11/12] ovl: change ovl_create_real() to receive dentry parent [PATCH 12/12] ovl: rename ovl_cleanup_unlocked() to ovl_cleanup()