diff mbox series

tune2fs: check whether filesystem is in use for I_flag and Q_flag test

Message ID 28455341-ca26-d203-8b54-792bae002251@huawei.com
State New
Headers show
Series tune2fs: check whether filesystem is in use for I_flag and Q_flag test | expand

Commit Message

Zhiqiang Liu March 20, 2023, 5:04 a.m. UTC
From: Zhiqiang Liu <liuzhiqiang26@huawei.com>

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>
---
 misc/tune2fs.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Zhiqiang Liu June 7, 2023, 9:13 a.m. UTC | #1
friendly ping...

On 2023/3/20 13:04, Zhiqiang Liu wrote:
> From: Zhiqiang Liu <liuzhiqiang26@huawei.com>
> 
> 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>
> ---
>  misc/tune2fs.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/misc/tune2fs.c b/misc/tune2fs.c
> index 458f7cf6..d75f4d94 100644
> --- a/misc/tune2fs.c
> +++ b/misc/tune2fs.c
> @@ -3520,9 +3520,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;
>  		}
> @@ -3673,10 +3673,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;
>  		}
>
Theodore Ts'o Feb. 15, 2024, 3:54 p.m. UTC | #2
On Mon, 20 Mar 2023 13:04:34 +0800, Zhiqiang Liu wrote:
> 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.
> 
> [...]

Applied, thanks!

[1/1] tune2fs: check whether filesystem is in use for I_flag and Q_flag test
      (no commit info)

Best regards,
diff mbox series

Patch

diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index 458f7cf6..d75f4d94 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -3520,9 +3520,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;
 		}
@@ -3673,10 +3673,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;
 		}