[PATCH] resize2fs: Check number of group descriptors only if meta_bg is disabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxx>
---
 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





[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux