You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.6 KiB
81 lines
2.6 KiB
6 years ago
|
commit 7d7a8fe4ea4d9162977a1a6b32c4737d9ca9dd1f
|
||
|
Author: Eric Sandeen <sandeen@redhat.com>
|
||
|
Date: Mon Jun 9 09:52:19 2014 -0400
|
||
|
|
||
|
resize2fs: don't attempt to calculate minimum size on fs with errors
|
||
|
|
||
|
My old patch:
|
||
|
|
||
|
resize2fs: don't print minimum size if fs is not clean
|
||
|
|
||
|
almost did this, but it still calculated the size; it just didn't print
|
||
|
it. Which is a bit silly.
|
||
|
|
||
|
Jes had a pretty badly corrupted image which made the minimum size
|
||
|
calculation go off into the weeds. It was corrupted, and also marked
|
||
|
as having an error.
|
||
|
|
||
|
We'll eventually bail out for an unmounted filesystem if it's marked
|
||
|
as being in an error state anyway; just move that test & bail-out
|
||
|
to a much earlier point, and remove the now-duplicate one under the
|
||
|
print_min_size block.
|
||
|
|
||
|
This will catch & block all resize operations on an offline filesystem
|
||
|
with errors, in one central place.
|
||
|
|
||
|
Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
|
||
|
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
|
||
|
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||
|
|
||
|
diff --git a/resize/main.c b/resize/main.c
|
||
|
index 2b7abff..e65c8e4 100644
|
||
|
--- a/resize/main.c
|
||
|
+++ b/resize/main.c
|
||
|
@@ -319,6 +319,17 @@ int main (int argc, char ** argv)
|
||
|
exit (1);
|
||
|
}
|
||
|
|
||
|
+ 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))) {
|
||
|
+ fprintf(stderr,
|
||
|
+ _("Please run 'e2fsck -f %s' first.\n\n"),
|
||
|
+ device_name);
|
||
|
+ exit(1);
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
/*
|
||
|
* Check for compatibility with the feature sets. We need to
|
||
|
* be more stringent than ext2fs_open().
|
||
|
@@ -332,13 +343,6 @@ int main (int argc, char ** argv)
|
||
|
min_size = calculate_minimum_resize_size(fs, flags);
|
||
|
|
||
|
if (print_min_size) {
|
||
|
- if (!force && ((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: %llu\n"),
|
||
|
min_size);
|
||
|
exit(0);
|
||
|
@@ -444,14 +448,6 @@ int main (int argc, char ** argv)
|
||
|
bigalloc_check(fs, force);
|
||
|
retval = online_resize_fs(fs, mtpt, &new_size, flags);
|
||
|
} else {
|
||
|
- 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);
|
||
|
- }
|
||
|
bigalloc_check(fs, force);
|
||
|
printf(_("Resizing the filesystem on "
|
||
|
"%s to %llu (%dk) blocks.\n"),
|