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.
80 lines
2.6 KiB
80 lines
2.6 KiB
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"),
|
|
|