erofs: sunset unneeded NOFAILs
authorGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 5 Sep 2024 08:47:32 +0000 (16:47 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 12 Sep 2024 12:26:43 +0000 (20:26 +0800)
commit2349d2fa02db19ebc5e9033ddc3ed09e22c4abb5
treeeff9af99fa189e3a9bd5e7eb69d5f593ecf2077f
parent8bdb6a8393dc32e3ab2cf89081e5b0f95cb7221b
erofs: sunset unneeded NOFAILs

With iterative development, our codebase can now deal with compressed
buffer misses properly if both in-place I/O and compressed buffer
allocation fail.

Note that if readahead fails (with non-uptodate folios), the original
request will then fall back to synchronous read, and `.read_folio()`
should return appropriate errnos; otherwise -EIO will be passed to
user space, which is unexpected.

To simplify rarely encountered failure paths, a mimic decompression
will be just used.  Before that, failure reasons are recorded in
compressed_bvecs[] and they also act as placeholders to avoid in-place
pages.  They will be parsed just before decompression and then pass
back to `.read_folio()`.

Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20240905084732.2684515-1-hsiangkao@linux.alibaba.com
fs/erofs/zdata.c