[PATCH stable 5.15.y] erofs: fix compact 4B support for 16k block size

Greg Kroah-Hartman gregkh at linuxfoundation.org
Fri Jul 21 15:29:26 AEST 2023


On Fri, Jul 21, 2023 at 10:22:21AM +0800, Gao Xiang wrote:
> commit 001b8ccd0650727e54ec16ef72bf1b8eeab7168e upstream.
> 
> In compact 4B, two adjacent lclusters are packed together as a unit to
> form on-disk indexes for effective random access, as below:
> 
> (amortized = 4, vcnt = 2)
>        _____________________________________________
>       |___ at _____ encoded bits __________|_ blkaddr _|
>       0        .                                    amortized * vcnt = 8
>       .             .
>       .                  .              amortized * vcnt - 4 = 4
>       .                        .
>       .____________________________.
>       |_type (2 bits)_|_clusterofs_|
> 
> Therefore, encoded bits for each pack are 32 bits (4 bytes). IOWs,
> since each lcluster can get 16 bits for its type and clusterofs, the
> maximum supported lclustersize for compact 4B format is 16k (14 bits).
> 
> Fix this to enable compact 4B format for 16k lclusters (blocks), which
> is tested on an arm64 server with 16k page size.
> 
> Fixes: 152a333a5895 ("staging: erofs: add compacted compression indexes support")
> Link: https://lore.kernel.org/r/20230601112341.56960-1-hsiangkao@linux.alibaba.com
> Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
> ---
> resolve a trivial conflict.

All now queued up.

thanks,

greg k-h


More information about the Linux-erofs mailing list