fs/block_dev.c: return the right error in thaw_bdev()
When triggering thaw-filesystems via magic sysrq, the system enters a loop in do_thaw_one(), as thaw_bdev() still returns success if bd_fsfreeze_count == 0. To fix this, let thaw_bdev() always return error (and simplify the code a bit at the same time). Reviewed-by: Eric Farman <farman@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Pierre Morel <pmorel@linux.vnet.ibm.com> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
1a6fe74dfd
commit
997198ba1e
@ -299,14 +299,11 @@ int thaw_bdev(struct block_device *bdev, struct super_block *sb)
|
|||||||
error = sb->s_op->thaw_super(sb);
|
error = sb->s_op->thaw_super(sb);
|
||||||
else
|
else
|
||||||
error = thaw_super(sb);
|
error = thaw_super(sb);
|
||||||
if (error) {
|
if (error)
|
||||||
bdev->bd_fsfreeze_count++;
|
bdev->bd_fsfreeze_count++;
|
||||||
mutex_unlock(&bdev->bd_fsfreeze_mutex);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&bdev->bd_fsfreeze_mutex);
|
mutex_unlock(&bdev->bd_fsfreeze_mutex);
|
||||||
return 0;
|
return error;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(thaw_bdev);
|
EXPORT_SYMBOL(thaw_bdev);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user