]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
tune2fs: check whether filesystem is in use for I_flag and Q_flag test
authorZhiqiang Liu <liuzhiqiang26@huawei.com>
Mon, 20 Mar 2023 05:04:34 +0000 (13:04 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 8 Feb 2024 16:03:19 +0000 (11:03 -0500)
For changing inode size (-I) and setting quota fearture (-Q), tune2fs
only check whether the filesystem is umounted. Considering mount
namepspaces, the filesystem is umounted, however it already be left
in other mount namespace.
So we add one check whether the filesystem is not in use with using
EXT2_MF_BUSY flag, which can indicate the device is already opened
with O_EXCL, as suggested by Ted.

Reported-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
Signed-off-by: zhanchengbin <zhanchengbin1@huawei.com>
Link: https://lore.kernel.org/r/28455341-ca26-d203-8b54-792bae002251@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/tune2fs.c

index cb5f575a3b5c236d4109244da5e8af7e084ab741..c32d93c895dd63103a3748e05759a080823117e8 100644 (file)
@@ -3263,9 +3263,9 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
        }
 
        if (Q_flag) {
-               if (mount_flags & EXT2_MF_MOUNTED) {
+               if (mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) {
                        fputs(_("The quota feature may only be changed when "
-                               "the filesystem is unmounted.\n"), stderr);
+                               "the filesystem is unmounted and not in use.\n"), stderr);
                        rc = 1;
                        goto closefs;
                }
@@ -3379,10 +3379,10 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
        }
 
        if (I_flag) {
-               if (mount_flags & EXT2_MF_MOUNTED) {
+               if (mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) {
                        fputs(_("The inode size may only be "
                                "changed when the filesystem is "
-                               "unmounted.\n"), stderr);
+                               "unmounted and not in use.\n"), stderr);
                        rc = 1;
                        goto closefs;
                }