]> git.itanic.dy.fi Git - linux-stable/commitdiff
Revert "ext4: consolidate checks for resize of bigalloc into ext4_resize_begin"
authorTheodore Ts'o <tytso@mit.edu>
Thu, 1 Jul 2021 00:54:22 +0000 (20:54 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 1 Jul 2021 00:54:22 +0000 (20:54 -0400)
The function ext4_resize_begin() gets called from three different
places, and online resize for bigalloc file systems is disallowed from
the old-style online resize (EXT4_IOC_GROUP_ADD and
EXT4_IOC_GROUP_EXTEND), but it *is* supposed to be allowed via
EXT4_IOC_RESIZE_FS.

This reverts commit e9f9f61d0cdcb7f0b0b5feb2d84aa1c5894751f3.

fs/ext4/ioctl.c
fs/ext4/resize.c

index e27f34bceb8dd3ad6f5ec6874f1540462656c687..5730aeca563c83b4b3ad235db5cb0968a21fd5df 100644 (file)
@@ -692,6 +692,13 @@ static long ext4_ioctl_group_add(struct file *file,
        if (err)
                return err;
 
+       if (ext4_has_feature_bigalloc(sb)) {
+               ext4_msg(sb, KERN_ERR,
+                        "Online resizing not supported with bigalloc");
+               err = -EOPNOTSUPP;
+               goto group_add_out;
+       }
+
        err = mnt_want_write_file(file);
        if (err)
                goto group_add_out;
@@ -914,6 +921,13 @@ static long __ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                        goto group_extend_out;
                }
 
+               if (ext4_has_feature_bigalloc(sb)) {
+                       ext4_msg(sb, KERN_ERR,
+                                "Online resizing not supported with bigalloc");
+                       err = -EOPNOTSUPP;
+                       goto group_extend_out;
+               }
+
                err = mnt_want_write_file(filp);
                if (err)
                        goto group_extend_out;
index fc885914c88a3d15908d7db19c1e1045018f9107..7a9f1adef67980f3b8fcf788fe33ff1dc495ccc2 100644 (file)
@@ -74,10 +74,6 @@ int ext4_resize_begin(struct super_block *sb)
                return -EPERM;
        }
 
-       if (ext4_has_feature_bigalloc(sb)) {
-               ext4_msg(sb, KERN_ERR, "Online resizing not supported with bigalloc");
-               return -EOPNOTSUPP;
-       }
        if (ext4_has_feature_sparse_super2(sb)) {
                ext4_msg(sb, KERN_ERR, "Online resizing not supported with sparse_super2");
                return -EOPNOTSUPP;