From 059761a9db0e299bad3ac5796c133b783e92a9b3 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Thu, 12 Apr 2012 17:38:13 -0600 Subject: [PATCH] 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 --- misc/tune2fs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/misc/tune2fs.c b/misc/tune2fs.c index f1f0bcf..732e1f6 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -2205,6 +2205,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)); @@ -2214,6 +2215,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); -- 1.8.3.1