mirror of https://gitee.com/openkylin/linux.git
ext4: prevent a fs with errors from being resized
A filesystem with errors is not allowed to being resized, otherwise, it is easy to destroy the filesystem. Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
8f82f840ec
commit
ce723c31b5
|
@ -23,6 +23,16 @@ int ext4_resize_begin(struct super_block *sb)
|
||||||
if (!capable(CAP_SYS_RESOURCE))
|
if (!capable(CAP_SYS_RESOURCE))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We are not allowed to do online-resizing on a filesystem mounted
|
||||||
|
* with error, because it can destroy the filesystem easily.
|
||||||
|
*/
|
||||||
|
if (EXT4_SB(sb)->s_mount_state & EXT4_ERROR_FS) {
|
||||||
|
ext4_warning(sb, "There are errors in the filesystem, "
|
||||||
|
"so online resizing is not allowed\n");
|
||||||
|
return -EPERM;
|
||||||
|
}
|
||||||
|
|
||||||
if (test_and_set_bit_lock(EXT4_RESIZING, &EXT4_SB(sb)->s_resize_flags))
|
if (test_and_set_bit_lock(EXT4_RESIZING, &EXT4_SB(sb)->s_resize_flags))
|
||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue