• Omar Sandoval's avatar
    loop: don't call into filesystem while holding lo_ctl_mutex · 2d1d4c1e
    Omar Sandoval authored
    We hit an issue where a loop device on NFS was stuck in
    loop_get_status() doing vfs_getattr() after the NFS server died, which
    caused a pile-up of uninterruptible processes waiting on lo_ctl_mutex.
    There's no reason to hold this lock while we wait on the filesystem;
    let's drop it so that other processes can do their thing. We need to
    grab a reference on lo_backing_file while we use it, and we can get rid
    of the check on lo_device, which has been unnecessary since commit
    a34c0ae9 ("[PATCH] loop: remove the bio remapping capability") in
    the linux-history tree.
    Signed-off-by: default avatarOmar Sandoval <osandov@fb.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    2d1d4c1e
loop.c 51.9 KB