diff mbox

mke2fs: Make s_inodes_per_group >= 8 in ext2fs_initialize.

Message ID 1304955522-4148-1-git-send-email-tm@tao.ma
State Accepted, archived
Headers show

Commit Message

Tao Ma May 9, 2011, 3:38 p.m. UTC
From: Tao Ma <boyu.mt@taobao.com>

current mkfs.ext4 fails if we tried with the following parameters.
mkfs.ext4  -m 0 -N 16 -O ^has_journal,^resize_inode,^uninit_bg,extent,meta_bg -b 1024 /dev/sdb3
It will cause segfault, but it is caused by another issue. See my patch
"mke2fs: Avoid segmentation fault in ext2fs_alloc_generic_bmap". And
with that patch, the mkfs.ext4 will fail with the error:
/dev/sdb3: Memory allocation failed while setting up superblock

The reason is that in ext2fs_initialize, we align s_inodes_per_group
to 8, but fails to consider the case that s_inodes_per_group < 8.
So make at least 8 inodes for s_inodes_per_group.

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
---
 lib/ext2fs/initialize.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Comments

Theodore Ts'o May 15, 2011, 3:28 a.m. UTC | #1
On Mon, May 09, 2011 at 11:38:42PM +0800, Tao Ma wrote:
> From: Tao Ma <boyu.mt@taobao.com>
> 
> current mkfs.ext4 fails if we tried with the following parameters.
> mkfs.ext4  -m 0 -N 16 -O ^has_journal,^resize_inode,^uninit_bg,extent,meta_bg -b 1024 /dev/sdb3
> It will cause segfault, but it is caused by another issue. See my patch
> "mke2fs: Avoid segmentation fault in ext2fs_alloc_generic_bmap". And
> with that patch, the mkfs.ext4 will fail with the error:
> /dev/sdb3: Memory allocation failed while setting up superblock
> 
> The reason is that in ext2fs_initialize, we align s_inodes_per_group
> to 8, but fails to consider the case that s_inodes_per_group < 8.
> So make at least 8 inodes for s_inodes_per_group.
> 
> Signed-off-by: Tao Ma <boyu.mt@taobao.com>

Thanks, I've added this to the "next" branch of e2fsprogs.

	     	   	       	      - Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index e1f229b..4706773 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -282,6 +282,8 @@  ipg_retry:
 	 * multiple of 8.  This is needed to simplify the bitmap
 	 * splicing code.
 	 */
+	if (super->s_inodes_per_group < 8)
+		super->s_inodes_per_group = 8;
 	super->s_inodes_per_group &= ~7;
 	fs->inode_blocks_per_group = (((super->s_inodes_per_group *
 					EXT2_INODE_SIZE(super)) +