Skip to contentSkip to conversation

resize2fs: don't print minimum size if fs is not clean

PATCH Applied Eric Sandeen 2 participants 2 messages Mar 31, 2010 – May 12, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 resize2fs: don't print minimum size if fs is not clean

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.

---

resize/main.c +8 -0
index fd85d90..f5ffb0f 100644
@@ -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);