[PATCH] 2.5.68 fs/ext3/super.c fix for orphan recovery error path

Ernie Petrides (petrides@redhat.com)
Mon, 21 Apr 2003 16:14:04 -0400


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

diff -urpN linux-2.5.68/fs/ext3/super.c{.orig,}
--- linux-2.5.68/fs/ext3/super.c.orig 2003-04-19 22:50:47.000000000 -0400
+++ linux-2.5.68/fs/ext3/super.c 2003-04-21 15:18:08.000000000 -0400
@@ -982,12 +982,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",
- sb->s_id);
- sb->s_flags &= ~MS_RDONLY;
- }
-
if (EXT3_SB(sb)->s_mount_state & EXT3_ERROR_FS) {
if (es->s_last_orphan)
jbd_debug(1, "Errors on filesystem, "
@@ -997,6 +991,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",
+ sb->s_id);
+ 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/