]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
erofs: pass inode to trace_erofs_read_folio
authorHongbo Li <lihongbo22@huawei.com>
Fri, 23 Jan 2026 01:31:29 +0000 (01:31 +0000)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Fri, 23 Jan 2026 12:02:09 +0000 (20:02 +0800)
The trace_erofs_read_folio accesses inode information through folio,
but this method fails if the real inode is not associated with the
folio(such as in the upcoming page cache sharing case). Therefore,
we pass the real inode to it so that the inode information can be
printed out in that case.

Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
fs/erofs/data.c
fs/erofs/fileio.c
fs/erofs/zdata.c
include/trace/events/erofs.h

index 71e23d91123dc5ea8b79fdc36e16ab425e580928..ea198defb531023d69f29e886c23a2e979e02d29 100644 (file)
@@ -385,8 +385,7 @@ static int erofs_read_folio(struct file *file, struct folio *folio)
        };
        struct erofs_iomap_iter_ctx iter_ctx = {};
 
-       trace_erofs_read_folio(folio, true);
-
+       trace_erofs_read_folio(folio_inode(folio), folio, true);
        iomap_read_folio(&erofs_iomap_ops, &read_ctx, &iter_ctx);
        return 0;
 }
@@ -400,8 +399,7 @@ static void erofs_readahead(struct readahead_control *rac)
        struct erofs_iomap_iter_ctx iter_ctx = {};
 
        trace_erofs_readahead(rac->mapping->host, readahead_index(rac),
-                                       readahead_count(rac), true);
-
+                             readahead_count(rac), true);
        iomap_readahead(&erofs_iomap_ops, &read_ctx, &iter_ctx);
 }
 
index 932e8b353ba11e288f081656801819e79f60837c..d07dc248d264c6f4178a326009a309896c08c339 100644 (file)
@@ -161,7 +161,7 @@ static int erofs_fileio_read_folio(struct file *file, struct folio *folio)
        struct erofs_fileio io = {};
        int err;
 
-       trace_erofs_read_folio(folio, true);
+       trace_erofs_read_folio(folio_inode(folio), folio, true);
        err = erofs_fileio_scan_folio(&io, folio);
        erofs_fileio_rq_submit(io.rq);
        return err;
index 5860ea6dbc60cd49d4365303f746f1740a3923dc..c5fa07af34f5877bf99e5fb933a9404027459810 100644 (file)
@@ -1879,7 +1879,7 @@ static int z_erofs_read_folio(struct file *file, struct folio *folio)
        Z_EROFS_DEFINE_FRONTEND(f, inode, folio_pos(folio));
        int err;
 
-       trace_erofs_read_folio(folio, false);
+       trace_erofs_read_folio(inode, folio, false);
        z_erofs_pcluster_readmore(&f, NULL, true);
        err = z_erofs_scan_folio(&f, folio, false);
        z_erofs_pcluster_readmore(&f, NULL, false);
index dad7360f42f9534ed6cd96dd08e4838ea95b9071..def20d06507b11f1dcc12bef4751c01999a4d06f 100644 (file)
@@ -82,9 +82,9 @@ TRACE_EVENT(erofs_fill_inode,
 
 TRACE_EVENT(erofs_read_folio,
 
-       TP_PROTO(struct folio *folio, bool raw),
+       TP_PROTO(struct inode *inode, struct folio *folio, bool raw),
 
-       TP_ARGS(folio, raw),
+       TP_ARGS(inode, folio, raw),
 
        TP_STRUCT__entry(
                __field(dev_t,          dev     )
@@ -96,9 +96,9 @@ TRACE_EVENT(erofs_read_folio,
        ),
 
        TP_fast_assign(
-               __entry->dev    = folio->mapping->host->i_sb->s_dev;
-               __entry->nid    = EROFS_I(folio->mapping->host)->nid;
-               __entry->dir    = S_ISDIR(folio->mapping->host->i_mode);
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->nid    = EROFS_I(inode)->nid;
+               __entry->dir    = S_ISDIR(inode->i_mode);
                __entry->index  = folio->index;
                __entry->uptodate = folio_test_uptodate(folio);
                __entry->raw = raw;