+2004-04-07 Theodore Ts'o <tytso@mit.edu>
+
+ * tune2fs.c (main): If the environment variable
+ TUNE2FS_SKIP_MOUNT_CHECK is set, do not try to check if
+ the filesystem is mounted.
+ (update_feature_set): If the compatibility bitmasks were
+ not modified, don't set the superblock dirty bit.
+
2004-04-03 Theodore Ts'o <tytso@mit.edu>
* Makefile.in: Update the modtime even if subst doesn't need to
.B tune2fs
is part of the e2fsprogs package and is available from
http://e2fsprogs.sourceforge.net.
+.SH ENVIRONMENT VARIABLES
+The
+.B tune2fs
+program's behavior is affected by the following environment variables:
+.TP
+.B TUNE2FS_SKIP_MOUNT_CHECK
+If this environment variable is set,
+.B tune2fs
+will not try to check to see if the filesystem is mounted. This may be
+necessary in limited initrd environments when
+.I /etc/mtab
+or
+.I /proc
+may not be available.
.SH SEE ALSO
.BR dumpe2fs (8),
.BR e2fsck (8),
int sparse, old_sparse, filetype, old_filetype;
int journal, old_journal, dxdir, old_dxdir;
struct ext2_super_block *sb= fs->super;
+ __u32 old_compat, old_incompat, old_ro_compat;
+
+ old_compat = sb->s_feature_compat;
+ old_ro_compat = sb->s_feature_ro_compat;
+ old_incompat = sb->s_feature_incompat;
old_sparse = sb->s_feature_ro_compat &
EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER;
sb->s_state &= ~EXT2_VALID_FS;
printf("\n%s\n", _(please_fsck));
}
- ext2fs_mark_super_dirty(fs);
+ if ((old_compat != sb->s_feature_compat) ||
+ (old_ro_compat != sb->s_feature_ro_compat) ||
+ (old_incompat != sb->s_feature_incompat))
+ ext2fs_mark_super_dirty(fs);
}
/*
sb->s_volume_name);
exit(0);
}
- retval = ext2fs_check_if_mounted(device_name, &mount_flags);
- if (retval) {
- com_err("ext2fs_check_if_mount", retval,
- _("while determining whether %s is mounted."),
- device_name);
- exit(1);
+ if (getenv("TUNE2FS_SKIP_MOUNT_CHECK")) {
+ mount_flags = 0;
+ } else {
+ retval = ext2fs_check_if_mounted(device_name, &mount_flags);
+ if (retval) {
+ com_err("ext2fs_check_if_mount", retval,
+ _("while determining whether %s is mounted."),
+ device_name);
+ exit(1);
+ }
}
+
/* Normally we only need to write out the superblock */
fs->flags |= EXT2_FLAG_SUPER_ONLY;