Whamcloud - gitweb
tune2fs: warn if the filesystem journal is dirty
authorAndreas Dilger <adilger@whamcloud.com>
Thu, 12 Apr 2012 23:38:13 +0000 (17:38 -0600)
committerAndreas Dilger <andreas.dilger@intel.com>
Wed, 24 Apr 2013 04:49:41 +0000 (22:49 -0600)
Running tune2fs on a filesystem with an unrecovered journal can
cause the tune2fs settings to be reverted when the journal is
replayed.  Print a warning if this is detected so that the user
isn't surprised if it happens.

Signed-off-by: Jim Garlick <garlick@llnl.gov>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
misc/tune2fs.c

index 849f3a0..e0e7857 100644 (file)
@@ -2204,6 +2204,7 @@ retry_open:
                ext2fs_mark_super_dirty(fs);
                printf(_("Setting stripe width to %d\n"), stripe_width);
        }
+
        if (ext_mount_opts) {
                strncpy((char *)(fs->super->s_mount_opts), ext_mount_opts,
                        sizeof(fs->super->s_mount_opts));
@@ -2213,6 +2214,17 @@ retry_open:
                       ext_mount_opts);
                free(ext_mount_opts);
        }
+
+       /* Warn if file system needs recovery and it is opened for writing. */
+       if ((open_flag & EXT2_FLAG_RW) && !(mount_flags & EXT2_MF_MOUNTED) &&
+           (sb->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
+           (sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER)) {
+               fprintf(stderr,
+                       _("Warning: needs_recovery flag is set. You may wish\n"
+                         "replay the journal then rerun this command, or any\n"
+                         "changes may be overwritten by journal recovery.\n"));
+       }
+
        free(device_name);
        remove_error_table(&et_ext2_error_table);