android_kernel_xiaomi_sm8450/fs/erofs
Gao Xiang 8c723eef98 erofs: fix compact 4B support for 16k block size
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)
       _____________________________________________
      |___@_____ 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: 152a333a58 ("staging: erofs: add compacted compression indexes support")
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230601112341.56960-1-hsiangkao@linux.alibaba.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-07-27 08:44:26 +02:00
..
compress.h erofs: Replace HTTP links with HTTPS ones 2020-08-03 21:04:29 +08:00
data.c erofs: avoid using generic_block_bmap 2020-12-30 11:53:46 +01:00
decompressor.c erofs: avoid consecutive detection for Highmem memory 2022-08-21 15:15:35 +02:00
dir.c erofs: Replace HTTP links with HTTPS ones 2020-08-03 21:04:29 +08:00
erofs_fs.h erofs: add unsupported inode i_format check 2021-05-11 14:47:13 +02:00
inode.c erofs: add unsupported inode i_format check 2021-05-11 14:47:13 +02:00
internal.h erofs: fix potential overflow calculating xattr_isize 2023-05-17 11:47:38 +02:00
Kconfig erofs: support superblock checksum 2019-11-24 11:02:41 +08:00
Makefile
namei.c erofs: Replace HTTP links with HTTPS ones 2020-08-03 21:04:29 +08:00
super.c erofs: fix error return code in erofs_read_superblock() 2021-07-14 16:56:53 +02:00
tagptr.h
utils.c erofs: fix deadlock when shrink erofs slab 2021-12-01 09:19:05 +01:00
xattr.c erofs: initialized fields can only be observed after bit is set 2021-03-04 11:38:28 +01:00
xattr.h erofs: Replace HTTP links with HTTPS ones 2020-08-03 21:04:29 +08:00
zdata.c erofs: avoid infinite loop in z_erofs_do_read_page() when reading beyond EOF 2023-07-27 08:44:23 +02:00
zdata.h erofs: Replace HTTP links with HTTPS ones 2020-08-03 21:04:29 +08:00
zmap.c erofs: fix compact 4B support for 16k block size 2023-07-27 08:44:26 +02:00
zpvec.h erofs: fix unsafe pagevec reuse of hooked pclusters 2021-11-21 13:46:37 +01:00