From: Andreas Dilger Date: Thu, 12 Apr 2012 23:38:13 +0000 (-0600) Subject: tune2fs: warn if the filesystem journal is dirty X-Git-Tag: v1.42.6.wc1~28 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=bf146d2618b834e21a9ea203a4a8d72683e17125;p=tools%2Fe2fsprogs.git tune2fs: warn if the filesystem journal is dirty 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 Signed-off-by: Andreas Dilger --- diff --git a/misc/tune2fs.c b/misc/tune2fs.c index fb46fb6..2bf5e8b 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -2196,6 +2196,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)); @@ -2205,6 +2206,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);