• Miklos Szeredi's avatar
    ovl: make private mounts longterm · df820f8d
    Miklos Szeredi authored
    Overlayfs is using clone_private_mount() to create internal mounts for
    underlying layers.  These are used for operations requiring a path, such as
    dentry_open().
    
    Since these private mounts are not in any namespace they are treated as
    short term, "detached" mounts and mntput() involves taking the global
    mount_lock, which can result in serious cacheline pingpong.
    
    Make these private mounts longterm instead, which trade the penalty on
    mntput() for a slightly longer shutdown time due to an added RCU grace
    period when putting these mounts.
    
    Introduce a new helper kern_unmount_many() that can take care of multiple
    longterm mounts with a single RCU grace period.
    
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    df820f8d
super.c 47.4 KB