erofs: add 'fsoffset' mount option to specify filesystem offset
authorSheng Yong <shengyong1@xiaomi.com>
Sat, 17 May 2025 09:05:43 +0000 (17:05 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 22 May 2025 03:57:57 +0000 (11:57 +0800)
commitc36ec00d7f67590cb03e233959cd92fe969753a3
tree7120c2ae47c17c5027f4a2408e513359f96ca8b0
parent12bf25d1659b1ec55e44fad2485155707062df79
erofs: add 'fsoffset' mount option to specify filesystem offset

When attempting to use an archive file, such as APEX on android,
as a file-backed mount source, it fails because EROFS image within
the archive file does not start at offset 0. As a result, a loop
or a dm device is still needed to attach the image file at an
appropriate offset first. Similarly, if an EROFS image within a
block device does not start at offset 0, it cannot be mounted
directly either.

To address this issue, this patch adds a new mount option `fsoffset=x'
to accept a start offset for the primary device. The offset should be
aligned to the block size. EROFS will add this offset before performing
read requests.

Signed-off-by: Sheng Yong <shengyong1@xiaomi.com>
Signed-off-by: Wang Shuai <wangshuai12@xiaomi.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20250517090544.2687651-1-shengyong1@xiaomi.com
[ Gao Xiang: minor update on documentation and the error message. ]
Reviewed-by: Hongbo Li <lihongbo22@huawei.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Documentation/filesystems/erofs.rst
fs/erofs/data.c
fs/erofs/fileio.c
fs/erofs/internal.h
fs/erofs/super.c
fs/erofs/zdata.c