Blame SOURCES/e2fsprogs-1.42.9-14-libext2fs-fix-maximum-bg-overhead-calculation-with-m.patch

0ef434
From 80f665e8365607a9885ca6a136cdeffacf9860d6 Mon Sep 17 00:00:00 2001
0ef434
From: "Darrick J. Wong" <darrick.wong@oracle.com>
0ef434
Date: Sat, 24 Oct 2015 00:24:57 -0400
0ef434
Subject: [PATCH 02/16] libext2fs: fix maximum bg overhead calculation with
0ef434
 meta_bg enabled
0ef434
0ef434
commit 1abdd04eb1d19488493022f81c03f5b80aa7fcc7
0ef434
0ef434
When meta_bg is enabled at mkfs time, we put at most one group
0ef434
descriptor block in each blockgroup.  Unfortunately, the calculation
0ef434
of max overhead per bg doesn't know this, so mkfs fails when it isn't
0ef434
strictly necessary.  Fix it, since Dave reported that he couldn't
0ef434
create a 500TB ext4 filesystem.
0ef434
0ef434
Reported-by: Dave Chinner <david@fromorbit.com>
0ef434
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
0ef434
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
0ef434
---
0ef434
 lib/ext2fs/initialize.c | 7 ++++++-
0ef434
 1 file changed, 6 insertions(+), 1 deletion(-)
0ef434
0ef434
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
0ef434
index 2db8b3c2..3548c56c 100644
0ef434
--- a/lib/ext2fs/initialize.c
0ef434
+++ b/lib/ext2fs/initialize.c
0ef434
@@ -377,7 +377,12 @@ ipg_retry:
0ef434
 	 * table, and the reserved gdt blocks.
0ef434
 	 */
0ef434
 	overhead = (int) (3 + fs->inode_blocks_per_group +
0ef434
-			  fs->desc_blocks + super->s_reserved_gdt_blocks);
0ef434
+			  super->s_reserved_gdt_blocks);
0ef434
+
0ef434
+	if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG)
0ef434
+		overhead++;
0ef434
+	else
0ef434
+		overhead += fs->desc_blocks;
0ef434
 
0ef434
 	/* This can only happen if the user requested too many inodes */
0ef434
 	if (overhead > super->s_blocks_per_group) {
0ef434
-- 
0ef434
2.20.1
0ef434