ext4: don't clear orphan list on ro mount with errors
authorEric Sandeen <sandeen@redhat.com>
Thu, 27 Sep 2012 03:30:12 +0000 (23:30 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 27 Sep 2012 03:30:12 +0000 (23:30 -0400)
If the file system contains errors and it is being mounted read-only,
don't clear the orphan list.  We should minimize changes to the file
system if it is mounted read-only.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/super.c

index 7bef0a4bc518b1a57e0d3d913af3ae584cb026d8..a53a23aef5e312d0912f20e2600704cd3e3de1f2 100644 (file)
@@ -2177,10 +2177,12 @@ static void ext4_orphan_cleanup(struct super_block *sb,
        }
 
        if (EXT4_SB(sb)->s_mount_state & EXT4_ERROR_FS) {
-               if (es->s_last_orphan)
+               /* don't clear list on RO mount w/ errors */
+               if (es->s_last_orphan && !(s_flags & MS_RDONLY)) {
                        jbd_debug(1, "Errors on filesystem, "
                                  "clearing orphan list.\n");
-               es->s_last_orphan = 0;
+                       es->s_last_orphan = 0;
+               }
                jbd_debug(1, "Skipping orphan recovery on fs with errors.\n");
                return;
        }