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

From: Ernie Petrides (petrides@redhat.com)
Date: Mon Apr 21 2003 - 20:51:55 EST


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/



This archive was generated by hypermail 2b29 : Wed Apr 23 2003 - 22:00:31 EST