Patchwork e2fsck: allow checking on mounted root filesystem

login
register
mail settings
Submitter Andreas Dilger
Date May 30, 2012, 6:39 p.m.
Message ID <1338403182-2253-1-git-send-email-adilger@whamcloud.com>
Download mbox | patch
Permalink /patch/162051/
State Superseded
Headers show

Comments

Andreas Dilger - May 30, 2012, 6:39 p.m.
Commit 732e26b98e5c79a4298dbe341f43b54b354bb241 added checks to
prevent e2fsck from being run in filesystem-modifying mode against
a mounted or otherwise busy device, due to several bug reports of
users doing this even with the verbose warnings in check_mount().

However, it also prevented e2fsck from checking a mounted root
filesystem, which will prevent the node from booting.  Once again
allow e2fsck to run against the mounted root filesystem.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
---
 e2fsck/unix.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
Andreas Dilger - May 30, 2012, 10:55 p.m.
On 2012-05-30, at 12:39 PM, Andreas Dilger wrote:
> Commit 732e26b98e5c79a4298dbe341f43b54b354bb241 added checks to
> prevent e2fsck from being run in filesystem-modifying mode against
> a mounted or otherwise busy device, due to several bug reports of
> users doing this even with the verbose warnings in check_mount().
> 
> However, it also prevented e2fsck from checking a mounted root
> filesystem, which will prevent the node from booting.  Once again
> allow e2fsck to run against the mounted root filesystem.
> 
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
> ---
> e2fsck/unix.c |    7 +++++--
> 1 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/e2fsck/unix.c b/e2fsck/unix.c
> index 6161e46..1c1bae8 100644
> --- a/e2fsck/unix.c
> +++ b/e2fsck/unix.c
> @@ -1221,8 +1221,11 @@ restart:
> 			    &old_bitmaps);
> 	if (!old_bitmaps)
> 		flags |= EXT2_FLAG_64BITS;
> -	if ((ctx->options & E2F_OPT_READONLY) == 0)
> -		flags |= EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
> +	if ((ctx->options & E2F_OPT_READONLY) == 0) {
> +		flags |= EXT2_FLAG_RW;
> +		if (!(ctx->mount_flags & EXT2_MF_ISROOT))
> +			flags |= EXT2_FLAG_EXCLUSIVE;
> +	}

This should further exclude root filesystems that are not mounted
read-only.  Another patch on the way.

Cheers, Andreas
--
Andreas Dilger                       Whamcloud, Inc.
Principal Lustre Engineer            http://www.whamcloud.com/




--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index 6161e46..1c1bae8 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -1221,8 +1221,11 @@  restart:
 			    &old_bitmaps);
 	if (!old_bitmaps)
 		flags |= EXT2_FLAG_64BITS;
-	if ((ctx->options & E2F_OPT_READONLY) == 0)
-		flags |= EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
+	if ((ctx->options & E2F_OPT_READONLY) == 0) {
+		flags |= EXT2_FLAG_RW;
+		if (!(ctx->mount_flags & EXT2_MF_ISROOT))
+			flags |= EXT2_FLAG_EXCLUSIVE;
+	}
 
 	retval = try_open_fs(ctx, flags, io_ptr, &fs);