Whamcloud - gitweb
resize2fs: don't try to resize below calculated minimum
authorEric Sandeen <sandeen@redhat.com>
Mon, 18 May 2009 22:11:28 +0000 (17:11 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 26 May 2009 02:40:49 +0000 (22:40 -0400)
Without a force flag, don't allow resize2fs to even start resizing
below what it thinks the minimum safe value is.

This may stop resizes which could otherwise proceed with a bit
of space still left, but seems like a reasonably safe thing to do.

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

index 6977d84..330e3ea 100644 (file)
@@ -160,6 +160,7 @@ int main (int argc, char ** argv)
        int             fd, ret;
        blk_t           new_size = 0;
        blk_t           max_size = 0;
+       blk_t           min_size = 0;
        io_manager      io_ptr;
        char            *new_size_str = 0;
        int             use_stride = -1;
@@ -341,9 +342,11 @@ int main (int argc, char ** argv)
                exit(1);
        }
 
+       min_size = calculate_minimum_resize_size(fs);
+
        if (print_min_size) {
                printf(_("Estimated minimum size of the filesystem: %u\n"),
-                      calculate_minimum_resize_size(fs));
+                      min_size);
                exit(0);
        }
 
@@ -388,6 +391,11 @@ int main (int argc, char ** argv)
                        new_size &= ~((sys_page_size / fs->blocksize)-1);
        }
 
+       if (!force && new_size < min_size) {
+               com_err(program_name, 0,
+                       _("New size smaller than minimum (%u)\n"), min_size);
+               exit(1);
+       }
        if (use_stride >= 0) {
                if (use_stride >= (int) fs->super->s_blocks_per_group) {
                        com_err(program_name, 0,