[PATCH v2] erofs: set SB_I_ALLOW_HSM for bdev-based mounts

From: Friendy Su

Date: Thu Oct 22 2026 - 22:19:57 EST


SB_I_ALLOW_HSM makes erofs support fanotify FAN_PRE_ACCESS event
for bdev-based mounts. file-backed mounts do not support this.

This is for use case that erofs file data is not available on
local block device at mount, but need to be filled at fanotify
FAN_PRE_ACCESS event handler.

E.g. format erofs to blob mode, meta data on /dev/pmem0, file data
on blob device /dev/pmem1. The file content in blob device is dummy.

mount as below:

$ sudo mount -o dax,device=/dev/pmem1 /dev/pmem0 /mnt/erofs/

In FAN_PRE_ACCESS handler, actual file content is fetched from remote
then filled into the DAX mounted block device /dev/pmem1.

Signed-off-by: Friendy Su <friendy.su@xxxxxxxx>
Reviewed-by: Yuezhang Mo <Yuezhang.Mo@xxxxxxxx>
Reviewed-by: Daniel Palmer <daniel.palmer@xxxxxxxx>
---
fs/erofs/super.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/fs/erofs/super.c b/fs/erofs/super.c
index 0967aace9f7f..be8728b8d116 100644
--- a/fs/erofs/super.c
+++ b/fs/erofs/super.c
@@ -667,6 +667,15 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc)
errorfc(fc, "FSDAX is not allowed when inode_share is on");
return -EINVAL;
}
+ if (!erofs_is_fileio_mode(sbi)) {
+ /*
+ * Only enable HSM to support fanotify FAN_PRE_ACCESS event
+ * under block device backed mounts.
+ * For file-backed mounts, do not enable since erofs-utils
+ * has already supported FAN_PRE_ACCESS event on backend image.
+ */
+ sb->s_iflags |= SB_I_ALLOW_HSM;
+ }

sbi->blkszbits = PAGE_SHIFT;
if (erofs_is_fileio_mode(sbi)) {
--
2.34.1