On Fri, Nov 10, 2017 at 1:18 PM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > The functions ovl_lower_positive() and ovl_check_empty_dir() both take > inode mutex on the real lower dir under ovl_want_write() which takes > the upper_mnt sb_writers lock. > > While this is not a clear locking order or layering violation, it creates > an undesired lock dependency between two unrelated layers for no good > reason. > > This lock dependency materializes to a false(?) positive lockdep warning > when calling rmdir() on a nested overlayfs, where both nested and > underlying overlayfs both use the same fs type as upper layer. > > rmdir() on the nested overlayfs creates the lock chain: > sb_writers of upper_mnt (e.g. tmpfs) in ovl_do_remove() > ovl_i_mutex_dir_key[] of lower overlay dir in ovl_lower_positive() > > rmdir() on the underlying overlayfs creates the lock chain in > reverse order: > ovl_i_mutex_dir_key[] of lower overlay dir in vfs_rmdir() > sb_writers of nested upper_mnt (e.g. tmpfs) in ovl_do_remove() > > To rid of the unneeded locking dependency, move both ovl_lower_positive() > and ovl_check_empty_dir() to before ovl_want_write() in rmdir() and > rename() implementation. > > This change spreads the pieces of ovl_check_empty_and_clear() directly > inside the rmdir()/rename() implementations so the helper is no longer > needed and removed. > > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> > --- > > Miklos, > > Please consider this patch for v4.15. > > I bumped into the lockdep warning while testing file handles on nested > overlay and had to work around it by using different type of fs for the > lower-upper(xfs) and the upper-upper(tmpfs). > > The workaround doesn't suffice if there is another test mounting an overlay > with the same fs type used for upper-upper (e.g. unionmount-testsuite) > at the same machine boot, which happens on my automated testing. > > So fixing this removes a false positive from my automated testing. > Miklos, Any objections to this change? Thanks, Amir. -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html