78 lines
2.9 KiB
Diff
78 lines
2.9 KiB
Diff
From 6223d779b4aa1733af2d7a7585a1c962475b5745 Mon Sep 17 00:00:00 2001
|
|
From: Jan Kara <jack@suse.cz>
|
|
Date: Wed, 25 Sep 2024 19:06:03 +0200
|
|
Subject: [PATCH] resize2fs: Check number of group descriptors only if meta_bg
|
|
is disabled
|
|
X-Developer-Signature: v=1; a=openpgp-sha256; l=2048; i=jack@suse.cz;
|
|
h=from:subject; bh=ryoE0l3Dbi93e3DsiIytuzvUJi4Da5CFtZYSnYtuFjE=;
|
|
b=owEBbQGS/pANAwAIAZydqgc/ZEDZAcsmYgBm9EYXvrGsWwc+ZDgM2pJFyTG4huornus+kexHD7Qw
|
|
p+w3t4GJATMEAAEIAB0WIQSrWdEr1p4yirVVKBycnaoHP2RA2QUCZvRGFwAKCRCcnaoHP2RA2QkdCA
|
|
CMdgRTusH0EKq+wMeK6RgRecYInS1+mNw7AO6qi7sSfnGjONLgJLweoc0L+30D6o0fhtMzOvEfVUxT
|
|
/xwh/nY7n6A/cw4lDq3MCQtIaAYl0fRFiqiZuUtVlbPbqLB+1dMKzMDYtemHy6uMEa4QxO6OXl7l+t
|
|
aTiapSBUhtCfGBVuOpgMzQ/7kfmNB1+ej5rV4uq3WcALHBEwYhr17uhqMATVnKUfTtSvXsary2lHHR
|
|
3vR9Xio0IzSF4YOqZIkTjbT6m2mlmux5iw/Qtd1fTny3RKXOCk9LwLfrkjk+tm+pGZHyH3EglRrKCs
|
|
7n7FtgukR4dAkRHo9/904i1A2Kemp0
|
|
X-Developer-Key: i=jack@suse.cz; a=openpgp;
|
|
fpr=93C6099A142276A28BBE35D815BC833443038D8C
|
|
|
|
When meta_bg feature is enabled, the total number of group descriptors
|
|
is not really limiting the filesystem size. So there's no reason to
|
|
check it in that case. This allows resize2fs to resize filesystems past
|
|
256TB boundary similarly as the kernel can do it.
|
|
|
|
Signed-off-by: Jan Kara <jack@suse.cz>
|
|
---
|
|
resize/main.c | 29 ++++++++++++++++-------------
|
|
1 file changed, 16 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/resize/main.c b/resize/main.c
|
|
index f914c0507e97..08a4bbaf7c65 100644
|
|
--- a/resize/main.c
|
|
+++ b/resize/main.c
|
|
@@ -270,8 +270,6 @@ int main (int argc, char ** argv)
|
|
long sysval;
|
|
int len, mount_flags;
|
|
char *mtpt, *undo_file = NULL;
|
|
- dgrp_t new_group_desc_count;
|
|
- unsigned long new_desc_blocks;
|
|
|
|
#ifdef ENABLE_NLS
|
|
setlocale(LC_MESSAGES, "");
|
|
@@ -551,17 +549,22 @@ int main (int argc, char ** argv)
|
|
new_size &= ~((blk64_t)(1ULL << fs->cluster_ratio_bits) - 1);
|
|
}
|
|
|
|
- new_group_desc_count = ext2fs_div64_ceil(new_size -
|
|
- fs->super->s_first_data_block,
|
|
- EXT2_BLOCKS_PER_GROUP(fs->super));
|
|
- new_desc_blocks = ext2fs_div_ceil(new_group_desc_count,
|
|
- EXT2_DESC_PER_BLOCK(fs->super));
|
|
- if ((new_desc_blocks + fs->super->s_first_data_block) >
|
|
- EXT2_BLOCKS_PER_GROUP(fs->super)) {
|
|
- com_err(program_name, 0,
|
|
- _("New size results in too many block group "
|
|
- "descriptors.\n"));
|
|
- goto errout;
|
|
+ if (!ext2fs_has_feature_meta_bg(fs->super)) {
|
|
+ dgrp_t new_group_desc_count;
|
|
+ unsigned long new_desc_blocks;
|
|
+
|
|
+ new_group_desc_count = ext2fs_div64_ceil(new_size -
|
|
+ fs->super->s_first_data_block,
|
|
+ EXT2_BLOCKS_PER_GROUP(fs->super));
|
|
+ new_desc_blocks = ext2fs_div_ceil(new_group_desc_count,
|
|
+ EXT2_DESC_PER_BLOCK(fs->super));
|
|
+ if ((new_desc_blocks + fs->super->s_first_data_block) >
|
|
+ EXT2_BLOCKS_PER_GROUP(fs->super)) {
|
|
+ com_err(program_name, 0,
|
|
+ _("New size results in too many block group "
|
|
+ "descriptors.\n"));
|
|
+ goto errout;
|
|
+ }
|
|
}
|
|
|
|
if (!force && new_size < min_size) {
|
|
--
|
|
2.35.3
|
|
|