Commit 69368d2d authored by Hongbo Li's avatar Hongbo Li Committed by Gao Xiang
Browse files

erofs: pass inode to trace_erofs_read_folio



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: default avatarHongbo Li <lihongbo22@huawei.com>
Reviewed-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
parent 5ef3208e
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -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;
}
@@ -401,7 +400,6 @@ static void erofs_readahead(struct readahead_control *rac)

	trace_erofs_readahead(rac->mapping->host, readahead_index(rac),
			      readahead_count(rac), true);

	iomap_readahead(&erofs_iomap_ops, &read_ctx, &iter_ctx);
}

+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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);
+5 −5
Original line number Diff line number Diff line
@@ -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;