diff mbox series

blktrace: Add 'P' identifier to mark I/O with REQ_POLLED flag

Message ID 20240823072529.438548-1-yangyongpeng1@oppo.com (mailing list archive)
State Handled Elsewhere
Headers show
Series blktrace: Add 'P' identifier to mark I/O with REQ_POLLED flag | expand

Commit Message

Yongpeng Yang Aug. 23, 2024, 7:25 a.m. UTC
blk_fill_rwbs function currently does not recognize REQ_POLLED I/O,
it's not convenient to trace the I/O handling process on the
HCTX_TYPE_POLL type hardware queue. Add a 'P' identifier to 'rwbs'
to mark such I/O for tracing.

Signed-off-by: Yongpeng Yang <yangyongpeng1@oppo.com>
---
 kernel/trace/blktrace.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Chao Yu Aug. 27, 2024, 2:15 a.m. UTC | #1
On 2024/8/23 15:25, Yongpeng Yang wrote:
> blk_fill_rwbs function currently does not recognize REQ_POLLED I/O,
> it's not convenient to trace the I/O handling process on the
> HCTX_TYPE_POLL type hardware queue. Add a 'P' identifier to 'rwbs'
> to mark such I/O for tracing.
> 
> Signed-off-by: Yongpeng Yang <yangyongpeng1@oppo.com>
> ---
>   kernel/trace/blktrace.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
> index 8fd292d34d89..69b7857d0189 100644
> --- a/kernel/trace/blktrace.c
> +++ b/kernel/trace/blktrace.c
> @@ -1908,6 +1908,8 @@ void blk_fill_rwbs(char *rwbs, blk_opf_t opf)
>   		rwbs[i++] = 'S';
>   	if (opf & REQ_META)
>   		rwbs[i++] = 'M';
> +	if (opf & REQ_POLLED)
> +		rwbs[i++] = 'P';

DECLARE_EVENT_CLASS(bio,
	TP_PROTO(struct bio *bio),
	TP_ARGS(bio),

	TP_STRUCT__entry(
		__field(dev_t,		dev			)
		__field(sector_t,	sector			)
		__field(unsigned int,	nr_sector		)
		__array(char,		rwbs,	6		)
	),

Not sure, maybe we need to expand one more byte for rwbs array, if
REQ_POLLED flag can be Ored w/ other flags.

Thanks,

>   
>   	rwbs[i] = '\0';
>   }
diff mbox series

Patch

diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index 8fd292d34d89..69b7857d0189 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -1908,6 +1908,8 @@  void blk_fill_rwbs(char *rwbs, blk_opf_t opf)
 		rwbs[i++] = 'S';
 	if (opf & REQ_META)
 		rwbs[i++] = 'M';
+	if (opf & REQ_POLLED)
+		rwbs[i++] = 'P';
 
 	rwbs[i] = '\0';
 }