• David Sterba's avatar
    btrfs: scrub: move scrub_setup_ctx allocation out of device_list_mutex · 0e94c4f4
    David Sterba authored
    The scrub context is allocated with GFP_KERNEL and called from
    btrfs_scrub_dev under the fs_info::device_list_mutex. This is not safe
    regarding reclaim that could try to flush filesystem data in order to
    get the memory. And the device_list_mutex is held during superblock
    commit, so this would cause a lockup.
    
    Move the alocation and initialization before any changes that require
    the mutex.
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    0e94c4f4
scrub.c 106 KB