• David Sterba's avatar
    btrfs: use RCU in btrfs_show_devname for device list traversal · 88c14590
    David Sterba authored
    The show_devname callback is used to print device name in
    /proc/self/mounts, we need to traverse the device list consistently and
    read the name that's copied to a seq buffer so we don't need further
    locking.
    
    If the first device is being deleted at the same time, the RCU will
    allow us to read the device name, though it will become stale right
    after the RCU protection ends. This is unavoidable and the user can
    expect that the device will disappear from the filesystem's list at some
    point.
    
    The device_list_mutex was pretty heavy as it is used eg. for writing
    superblock and a few other IO related contexts. This can stall any
    application that reads the proc file for no reason.
    Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    88c14590
super.c 65.7 KB