Re: 答复: 答复: [PATCH] ext4: e2fsprogs: fix inode bitmap num not integer,incompatible for ancient android devices

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

 



On Thu, Jun 28, 2018 at 07:56:59AM +0000, Gaoming (ming, consumer BG) wrote:
> You see, Inodes per group is 1708,which is illegal as you said.
> 
> So, the problem exists a long time until Jun 21th 2018.
> 
> You complained the problem in 2011, they do not fix it till 2018.
> Just as
> I complained, fix it,  and you do not accept it. ^_^

Here's the commit.  (Note the date.)   Do you see it in your repository?

Or are you using an unusual inode size?  (e.g., not 256 bytes, or 16
inodes per block).


       	   	       	       	     	  - Ted

commit 06c35f935a7adadceb9ee326b3231f952f6ad203
Merge: 480a3b1 96cc54a
Author: Colin Cross <ccross@xxxxxxxxxxx>
Date:   Sat Apr 30 19:08:09 2011 -0700

    Merge "Make inodes per group a multiple of inodes per block"

diff --cc ext4_utils/make_ext4fs.c
index c9fd992,e37d617..22c9424
--- a/ext4_utils/make_ext4fs.c
+++ b/ext4_utils/make_ext4fs.c
@@@ -214,26 -215,10 +214,27 @@@ static u32 compute_inodes_per_group(
  {
  	u32 blocks = DIV_ROUND_UP(info.len, info.block_size);
  	u32 block_groups = DIV_ROUND_UP(blocks, info.blocks_per_group);
- 	return DIV_ROUND_UP(info.inodes, block_groups);
+ 	u32 inodes = DIV_ROUND_UP(info.inodes, block_groups);
+ 	return ALIGN(inodes, (info.block_size / info.inode_size));
  }
  
 +static u32 compute_bg_desc_reserve_blocks()
 +{
 +	u32 blocks = DIV_ROUND_UP(info.len, info.block_size);
 +	u32 block_groups = DIV_ROUND_UP(blocks, info.blocks_per_group);
 +	u32 bg_desc_blocks = DIV_ROUND_UP(block_groups * sizeof(struct ext2_group_desc),
 +			info.block_size);
 +
 +	u32 bg_desc_reserve_blocks =
 +			DIV_ROUND_UP(block_groups * 1024 * sizeof(struct ext2_group_desc),
 +					info.block_size) - bg_desc_blocks;
 +
 +	if (bg_desc_reserve_blocks > info.block_size / sizeof(u32))
 +		bg_desc_reserve_blocks = info.block_size / sizeof(u32);
 +
 +	return bg_desc_reserve_blocks;
 +}
 +
  void reset_ext4fs_info() {
      // Reset all the global data structures used by make_ext4fs so it
      // can be called again.



[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