Re: [PATCH 2/6] ext4: remove unneeded bits mask in dx_get_block()

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

 




on 12/20/2024 9:10 AM, Andreas Dilger wrote:
> On Dec 19, 2024, at 4:00 AM, Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> wrote:
>>
>> As high four bits of block in dx_entry is not used by any feature for now, we can remove unneeded bits mask in dx_get_block() and add it back
>> when it's really needed.
> 
> Actually, the opposite is true.  This mask protects the *CURRENT* code
> from any future use for these bits, so removing it now means that they
> could never be used in the future, since the block number would be
> taken as all 32 bits instead of only the bottom 28 bits.  I don't think
> we are in any danger of having a 16TB single directory any time soon.
> 
> However, the top bits were intended to store a "fullness" for the index
> blocks, to optimize online directory shrinking without having to scan
> each of the blocks for how many entries are currently in the block.
> This would allow the dirent removal to easily see "this block and the
> previous/next block are only 1/3 full and could be merged".
> 
> See the following thread for a prototype patch and discussion on this:
> https://patchwork.ozlabs.org/project/linux-ext4/patch/20190821182740.97127-1-harshadshirwadkar@xxxxxxxxx/
> 
> I think removing this mask has a negative effect on future usefulness,
> and virtually no benefit to the code today, so I would object to landing
> it.
Sure, it makes sense to reserve bit for future use if it will likely be
used. But I wonder would it be better to catch using high four bits in
in ext4_append() in which case we could forbit using high four bits in
time rather than lost dir when reserved bits are really used in future.
This also reduce cpu cost as dx_get_block() is used likely more frequent
than ext4_append().
Just a thought.

Thanks,
Kemeng





[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