rpms/e2fsprogs/F-11 e2fsprogs-1.41.4-minimum-resize.patch, NONE, 1.1 e2fsprogs.spec, 1.134, 1.135

Eric Sandeen sandeen at fedoraproject.org
Wed May 20 20:42:06 UTC 2009


Author: sandeen

Update of /cvs/pkgs/rpms/e2fsprogs/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20027

Modified Files:
	e2fsprogs.spec 
Added Files:
	e2fsprogs-1.41.4-minimum-resize.patch 
Log Message:
* Wed May 20 2009 Eric Sandeen <sandeen at redhat.com> 1.41.4-10
- Fix minimum resize calculation and enforce it (#499452)


e2fsprogs-1.41.4-minimum-resize.patch:

--- NEW FILE e2fsprogs-1.41.4-minimum-resize.patch ---
Sent to the list:

[PATCH] fix minimum size calculations

The extra padding added to the minimum size calculations:

        /*
         * We need to reserve a few extra blocks if extents are
         * enabled, in case we need to grow the extent tree.  The more
         * we shrink the file system, the more space we need.
         */
        if (fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS)
                blks_needed += (fs->super->s_blocks_count - blks_needed)/500;

can go quite wrong if we've already added up more "blks_needed"
than our current size, and the above subtraction wraps.  This can
easily happen for a filesystem which is almost completely full.

In this case, just return the current fs size as the minimum and
be done with it.

With this fix we could probably call calculate_minimum_resize_size()
for each resize2fs invocation and refuse to resize smaller than that?

Signed-off-by: Eric Sandeen <sandeen at redhat.com>

[PATCH] resize2fs: don't try to resize below calculated minimum

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 at redhat.com>
---

Index: e2fsprogs/resize/resize2fs.c
===================================================================
--- e2fsprogs.orig/resize/resize2fs.c
+++ e2fsprogs/resize/resize2fs.c
@@ -2003,6 +2003,12 @@ blk_t calculate_minimum_resize_size(ext2
 	blks_needed += overhead;
 
 	/*
+	 * If at this point we've already added up more "needed" than
+	 * the current size, just return current size as minimum.
+	 */
+	if (blks_needed >= fs->super->s_blocks_count)
+		return fs->super->s_blocks_count;
+	/*
 	 * We need to reserve a few extra blocks if extents are
 	 * enabled, in case we need to grow the extent tree.  The more
 	 * we shrink the file system, the more space we need.

Index: e2fsprogs/resize/main.c
===================================================================
--- e2fsprogs.orig/resize/main.c
+++ e2fsprogs/resize/main.c
@@ -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,



Index: e2fsprogs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/e2fsprogs/F-11/e2fsprogs.spec,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -p -r1.134 -r1.135
--- e2fsprogs.spec	15 May 2009 04:32:17 -0000	1.134
+++ e2fsprogs.spec	20 May 2009 20:41:35 -0000	1.135
@@ -4,7 +4,7 @@
 Summary: Utilities for managing ext2, ext3, and ext4 filesystems
 Name: e2fsprogs
 Version: 1.41.4
-Release: 9%{?dist}
+Release: 10%{?dist}
 # License based on upstream-modified COPYING file,
 # which clearly states "V2" intent.
 License: GPLv2
@@ -22,6 +22,7 @@ Patch6: e2fsprogs-1.41.4-ignore-NEEDS_RE
 Patch7: e2fsprogs-1.41.4-ext4-resize-fixes.patch 
 Patch8: e2fsprogs-1.41.4-fix-external-journals.patch
 Patch9: e2fsprogs-1.41.4-i_file_acl_high-fix.patch
+Patch10: e2fsprogs-1.41.4-minimum-resize.patch
 
 Url: http://e2fsprogs.sourceforge.net/
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -113,6 +114,8 @@ SMP systems.
 %patch8 -p1 -b .ext-journal
 # e2fsck: On a 32-bit filesystem, make sure i_file_acl_high is zero
 %patch9 -p1 -b .acl_hi
+# Fix minimum resize calculation and enforce it
+%patch10 -p1 -b .resize_min
 
 %build
 %configure --enable-elf-shlibs --enable-nls --disable-e2initrd-helper  --enable-blkid-devmapper --enable-blkid-selinux
@@ -311,6 +314,9 @@ fi
 %dir %attr(2775, uuidd, uuidd) /var/lib/libuuid
 
 %changelog
+* Wed May 20 2009 Eric Sandeen <sandeen at redhat.com> 1.41.4-10
+- Fix minimum resize calculation and enforce it (#499452)
+
 * Thu May 14 2009 Eric Sandeen <sandeen at redhat.com> 1.41.4-9
 - Fix corrupted filesystems with mis-set i_file_acl_hi (#500935)
 




More information about the fedora-extras-commits mailing list