• Eric W. Biederman's avatar
    vfs: Add a function to lazily unmount all mounts from any dentry. · 80b5dce8
    Eric W. Biederman authored
    The new function detach_mounts comes in two pieces.  The first piece
    is a static inline test of d_mounpoint that returns immediately
    without taking any locks if d_mounpoint is not set.  In the common
    case when mountpoints are absent this allows the vfs to continue
    running with it's same cacheline foot print.
    
    The second piece of detach_mounts __detach_mounts actually does the
    work and it assumes that a mountpoint is present so it is slow and
    takes namespace_sem for write, and then locks the mount hash (aka
    mount_lock) after a struct mountpoint has been found.
    
    With those two locks held each entry on the list of mounts on a
    mountpoint is selected and lazily unmounted until all of the mount
    have been lazily unmounted.
    
    v7: Wrote a proper change description and removed the changelog
        documenting deleted wrong turns.
    Signed-off-by: default avatarEric W. Biederman <ebiederman@twitter.com>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    80b5dce8
mount.h 3.41 KB