Re: [PATCH] 2.4.21-rc1 fs/ext3/super.c fix for orphan recovery error path

Ernie Petrides (petrides@redhat.com)
Mon, 21 Apr 2003 21:51:55 -0400


On Monday, 21-Apr-2003 at 15:8 PDT, Andrew Morton wrote:

> Ernie Petrides <petrides@redhat.com> wrote:
>
> > Stephen/Andrew, please consider applying this patch to reverse the order
> > of checks in ext3_orphan_cleanup() for read-only mounts and prior errors.
> >
> > The problem resolved by this patch is that if a root file system has an
> > error recorded from a previous mount, and then (when rebooting) the orphan
> > recovery procedure is initiated, the recovery is correctly skipped but the
> > file system is incorrectly left in a writable state.
> >
> > This causes the subsequent fsck to fail due to the root file system
> > being dirty, and then requires manual intervention to get the system
> > fully booted.
> >
> > Thanks in advance. -ernie
>
> Thanks, that is definitely needed. We should do this in 2.4 as well.

Andrew, thank you for reviewing and supporting this patch.

Marcelo, on Andrew's recommendation, I have included a 2.4-based patch
below for your convenience.

Cheers. -ernie

diff -urpN linux-2.4.21-rc1/fs/ext3/super.c{.orig,}
--- linux-2.4.21-rc1/fs/ext3/super.c.orig 2003-04-21 21:12:43.000000000 -0400
+++ linux-2.4.21-rc1/fs/ext3/super.c 2003-04-21 21:16:23.000000000 -0400
@@ -820,12 +820,6 @@ static void ext3_orphan_cleanup (struct
return;
}

- if (s_flags & MS_RDONLY) {
- printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
- bdevname(sb->s_dev));
- sb->s_flags &= ~MS_RDONLY;
- }
-
if (sb->u.ext3_sb.s_mount_state & EXT3_ERROR_FS) {
if (es->s_last_orphan)
jbd_debug(1, "Errors on filesystem, "
@@ -835,6 +829,12 @@ static void ext3_orphan_cleanup (struct
return;
}

+ if (s_flags & MS_RDONLY) {
+ printk(KERN_INFO "EXT3-fs: %s: orphan cleanup on readonly fs\n",
+ bdevname(sb->s_dev));
+ sb->s_flags &= ~MS_RDONLY;
+ }
+
while (es->s_last_orphan) {
struct inode *inode;

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