e2fsprogs/resize2fs-Make-minimum-size-estimates-more-reliable.patch
OBS User zkalmar ce4cab74d9 Set link to e2fsprogs.13246 via maintenance_release request
Rev SUSE:SLE-15:Update/4 Md5 17a0b9447be3ce8ef4d2e09a5c30c6f8 2019-11-29 13:41:34 zkalmar None
2019-11-29 13:41:34 +00:00

47 lines
1.8 KiB
Diff

From 1c580154d4e1ae3b4f13cf58a85f8a5ae792fbfc Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 18 Oct 2019 14:41:10 +0200
Subject: [PATCH] resize2fs: Make minimum size estimates more reliable for
mounted fs
References: bsc#1154295
Currently, the estimate of minimum filesystem size is using free blocks
counter in the superblock. The counter generally doesn't get updated
while the filesystem is mounted and thus the estimate is very unreliable
for a mounted filesystem. For some usecases such as automated
partitioning proposal to the user it is desirable that the estimate of
minimum filesystem size is reasonably accurate even for a mounted
filesystem. So use group descriptor counters of free blocks for the
estimate of minimum filesystem size. These get updated together with
block being allocated and so the resulting estimate is more accurate.
Signed-off-by: Jan Kara <jack@suse.cz>
Acked-by: Jan Kara <jack@suse.cz>
---
resize/resize2fs.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
index c2e10471bfd1..8a3d08db19f3 100644
--- a/resize/resize2fs.c
+++ b/resize/resize2fs.c
@@ -2926,11 +2926,11 @@ blk64_t calculate_minimum_resize_size(ext2_filsys fs, int flags)
fs->super->s_reserved_gdt_blocks;
/* calculate how many blocks are needed for data */
- data_needed = ext2fs_blocks_count(fs->super) -
- ext2fs_free_blocks_count(fs->super);
-
- for (grp = 0; grp < fs->group_desc_count; grp++)
+ data_needed = ext2fs_blocks_count(fs->super);
+ for (grp = 0; grp < fs->group_desc_count; grp++) {
data_needed -= calc_group_overhead(fs, grp, old_desc_blocks);
+ data_needed -= ext2fs_bg_free_blocks_count(fs, grp);
+ }
#ifdef RESIZE2FS_DEBUG
if (flags & RESIZE_DEBUG_MIN_CALC)
printf("fs requires %llu data blocks.\n", data_needed);
--
2.16.4