My previous change ended up requiring that the filesystem be fsck'd after the last mount, even if we are only querying the minimum size. This is a bit draconian, and it burned the Fedora installer, which wants to calculate minimum size for every filesystem in the box at install time, which in turn requires a full fsck of every filesystem. Try this one more time, and separate out the tests to make things a bit more clear. If we're only printing the min size, don't require the fsck, as this is a bit less dangerous/critical. Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- diff --git a/resize/main.c b/resize/main.c index 983d8c2..d40a741 100644 --- a/resize/main.c +++ b/resize/main.c @@ -321,10 +321,31 @@ int main (int argc, char ** argv) } fs->default_bitmap_type = EXT2FS_BMAP64_RBTREE; - if (!(mount_flags & EXT2_MF_MOUNTED)) { - if (!force && ((fs->super->s_lastcheck < fs->super->s_mtime) || - (fs->super->s_state & EXT2_ERROR_FS) || - ((fs->super->s_state & EXT2_VALID_FS) == 0))) { + /* + * Before acting on an unmounted filesystem, make sure it's ok, + * unless the user is forcing it. + * + * We do ERROR and VALID checks even if we're only printing the + * minimimum size, because traversal of a badly damaged filesystem + * can cause issues as well. We don't require it to be fscked after + * the last mount time in this case, though, as this is a bit less + * risky. + */ + if (!force && !(mount_flags & EXT2_MF_MOUNTED)) { + int checkit = 0; + + if (fs->super->s_state & EXT2_ERROR_FS) + checkit = 1; + + if ((fs->super->s_state & EXT2_VALID_FS) == 0) + checkit = 1; + + if (fs->super->s_lastcheck < fs->super->s_mtime) { + if (!print_min_size) + checkit = 1; + } + + if (checkit) { fprintf(stderr, _("Please run 'e2fsck -f %s' first.\n\n"), device_name); -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html