<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div style="font-family:Calibri,Helvetica!important; font-size:17.0px; color:#333333">
<br>
<br>
<span style="color:#000000;font-size:14px;">Ok,</span><span style="color:#000000;font-size:14px;"> look good to me</span><br>
<br>
<span style="color:#000000;font-size:14px;">Reviewed</span><span style="color:#000000;font-size:14px;">-by: Hongbo Li <<a href="mailto:lihongbo22@huawei.com">lihongbo22@huawei.com</a>></span><br>
<br>
<span style="color:#000000;font-size:14px;">Thank</span><span style="color:#000000;font-size:14px;">s.</span><br>
<br>
<br>
<hr id="client_signature_separator" style="border-top:dotted 1px">
<span style="color:#000000;font-size:14px;">Li Hongbo </span><br>
<span style="color:#000000;font-size:14px;">Mail: <a href="mailto:lihongbo22@huawei.com">
lihongbo22@huawei.com</a></span></div>
<div name="AnyOffice-Background-Image" style="border-top:1px solid #B5C4DF;padding:8px; background-repeat: repeat-x;">
<div style="word-break:break-all;"><b>发件人:</b>Gao Xiang <<a href="mailto:hsiangkao@linux.alibaba.com">hsiangkao@linux.alibaba.com</a>></div>
<div style="word-break:break-all;"><b>收件人:</b>linux-erofs@lists.ozlabs.org <<a href="mailto:linux-erofs@lists.ozlabs.org">linux-erofs@lists.ozlabs.org</a>></div>
<div style="word-break:break-all;"><b>抄 送:</b>LKML <<a href="mailto:linux-kernel@vger.kernel.org">linux-kernel@vger.kernel.org</a>>; Gao Xiang <<a href="mailto:hsiangkao@linux.alibaba.com">hsiangkao@linux.alibaba.com</a>>; Lihongbo(hb-lee,OS Lab) <<a href="mailto:lihongbo22@huawei.com">lihongbo22@huawei.com</a>></div>
<div style="word-break:break-all;"><b>主 题:</b>[PATCH v2] erofs: fix .fadvise() for page cache sharing</div>
<div style="word-break:break-all;"><b>时 间:</b>2026-03-24 23:54:15</div>
<div><br>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Currently, .fadvise() doesn't work well if page cache sharing is on<br>
since shared inodes belong to a pseudo fs generated with init_pseudo(),<br>
and sb->s_bdi is the default one &noop_backing_dev_info.<br>
<br>
Then, generic_fadvise() will just behave as a no-op if sb->s_bdi is<br>
&noop_backing_dev_info, but as the bdev fs (the bdev fs changes<br>
inode_to_bdi() instead), it's actually NOT a pure memfs.<br>
<br>
Let's generate a real bdi for erofs_ishare_mnt instead.<br>
<br>
Fixes: d86d7817c042 ("erofs: implement .fadvise for page cache share")<br>
Cc: Hongbo Li <lihongbo22@huawei.com><br>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com><br>
---<br>
v2:<br>
 - handle super_setup_bdi() failure properly.<br>
<br>
 fs/erofs/ishare.c | 15 +++++++++++++--<br>
 1 file changed, 13 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/fs/erofs/ishare.c b/fs/erofs/ishare.c<br>
index 829d50d5c717..ec433bacc592 100644<br>
--- a/fs/erofs/ishare.c<br>
+++ b/fs/erofs/ishare.c<br>
@@ -200,8 +200,19 @@ struct inode *erofs_real_inode(struct inode *inode, bool *need_iput)<br>
 <br>
 int __init erofs_init_ishare(void)<br>
 {<br>
-       erofs_ishare_mnt = kern_mount(&erofs_anon_fs_type);<br>
-       return PTR_ERR_OR_ZERO(erofs_ishare_mnt);<br>
+       struct vfsmount *mnt;<br>
+       int ret;<br>
+<br>
+       mnt = kern_mount(&erofs_anon_fs_type);<br>
+       if (IS_ERR(mnt))<br>
+               return PTR_ERR(mnt);<br>
+       /* generic_fadvise() doesn't work if s_bdi == &noop_backing_dev_info */<br>
+       ret = super_setup_bdi(mnt->mnt_sb);<br>
+       if (ret)<br>
+               kern_unmount(mnt);<br>
+       else<br>
+               erofs_ishare_mnt = mnt;<br>
+       return ret;<br>
 }<br>
 <br>
 void erofs_exit_ishare(void)<br>
-- <br>
2.43.5<br>
<br>
</div>
</span></font></div>
</body>
</html>