Whamcloud - gitweb
resize2fs: don't print minimum size if fs is not clean
authorEric Sandeen <sandeen@redhat.com>
Wed, 31 Mar 2010 19:28:42 +0000 (14:28 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 12 May 2010 16:44:56 +0000 (12:44 -0400)
Right now, resize2fs -P on a dirty filesystem will give you a number;
however, it's probably wrong if the fs is not clean:

# resize2fs -P myimage.img
resize2fs 1.41.9 (22-Aug-2009)
Estimated minimum size of the filesystem: 75623

# e2fsck -fy myimage.img
e2fsck 1.41.9 (22-Aug-2009)
myimage.img: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

myimage.img: ***** FILE SYSTEM WAS MODIFIED *****
myimage.img: 9530/53760 files (0.1% non-contiguous), 24737/98304 blocks

# resize2fs -P myimage.img
resize2fs 1.41.9 (22-Aug-2009)
Estimated minimum size of the filesystem: 32165

We should issue the same "Please run e2fsck ..." message for
-P as we do for an actual resize request.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
resize/main.c

index 220c192..ddcfc99 100644 (file)
@@ -345,6 +345,14 @@ int main (int argc, char ** argv)
        min_size = calculate_minimum_resize_size(fs);
 
        if (print_min_size) {
+               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))) {
+                       fprintf(stderr,
+                               _("Please run 'e2fsck -f %s' first.\n\n"),
+                               device_name);
+                       exit(1);
+               }
                printf(_("Estimated minimum size of the filesystem: %u\n"),
                       min_size);
                exit(0);