Re: [PATCH 5/5] block: add trace messages to zone write plugging

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/9/25 8:47 PM, Johannes Thumshirn wrote:
> Add tracepoints to zone write plugging plug and unplug events.
> 
>   kworker/u9:3-162  [000] d..1. 2231.939277: disk_zone_wplug_add_bio: 8,0 zone 12, BIO 6291456 + 14
>   kworker/0:1H-59   [000] d..1. 2231.939884: blk_zone_wplug_bio: 8,0 zone 24, BIO 12775168 + 4

This is showing "+ bio->__bi_nr_segments", which is odd...
Is this intentional ? Why not the "+ bio_sectors(bio)" ?

> 
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx>
> ---
>  block/blk-zoned.c            |  5 ++++
>  include/trace/events/block.h | 44 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 49 insertions(+)
> 
> diff --git a/block/blk-zoned.c b/block/blk-zoned.c
> index 48f75f58d05e..b881aadbe35f 100644
> --- a/block/blk-zoned.c
> +++ b/block/blk-zoned.c
> @@ -822,6 +822,8 @@ static inline void disk_zone_wplug_add_bio(struct gendisk *disk,
>  	 * at the tail of the list to preserve the sequential write order.
>  	 */
>  	bio_list_add(&zwplug->bio_list, bio);
> +	trace_disk_zone_wplug_add_bio(zwplug->disk->queue, zwplug->zone_no,
> +				      bio->bi_iter.bi_sector, nr_segs);
>  
>  	zwplug->flags |= BLK_ZONE_WPLUG_PLUGGED;
>  
> @@ -1317,6 +1319,9 @@ static void blk_zone_wplug_bio_work(struct work_struct *work)
>  		goto put_zwplug;
>  	}
>  
> +	trace_blk_zone_wplug_bio(zwplug->disk->queue, zwplug->zone_no,
> +				 bio->bi_iter.bi_sector, bio->__bi_nr_segments);
> +
>  	if (!blk_zone_wplug_prepare_bio(zwplug, bio)) {
>  		blk_zone_wplug_bio_io_error(zwplug, bio);
>  		goto again;
> diff --git a/include/trace/events/block.h b/include/trace/events/block.h
> index 9a25b686fd09..16d5a87f3030 100644
> --- a/include/trace/events/block.h
> +++ b/include/trace/events/block.h
> @@ -633,6 +633,50 @@ TRACE_EVENT(blkdev_zone_mgmt,
>  		  (unsigned long long)__entry->sector,
>  		  __entry->nr_sectors)
>  );
> +
> +DECLARE_EVENT_CLASS(block_zwplug,
> +
> +	TP_PROTO(struct request_queue *q, unsigned int zno, sector_t sector,
> +		 unsigned int nr_segs),
> +
> +	TP_ARGS(q, zno, sector, nr_segs),
> +
> +	TP_STRUCT__entry(
> +		__field( dev_t,		dev		)
> +		__field( unsigned int,	zno		)
> +		__field( sector_t,	sector		)
> +		__field( unsigned int,	nr_segs		)
> +	),
> +
> +	TP_fast_assign(
> +		__entry->dev		= disk_devt(q->disk);
> +		__entry->zno		= zno;
> +		__entry->sector		= sector;
> +		__entry->nr_segs	= nr_segs;
> +	),
> +
> +	TP_printk("%d,%d zone %u, BIO %llu + %u",
> +		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->zno,
> +		  (unsigned long long)__entry->sector,
> +		  __entry->nr_segs)
> +);
> +
> +DEFINE_EVENT(block_zwplug, disk_zone_wplug_add_bio,
> +
> +	TP_PROTO(struct request_queue *q, unsigned int zno, sector_t sector,
> +		 unsigned int nr_segs),
> +
> +	TP_ARGS(q, zno, sector, nr_segs)
> +);
> +
> +DEFINE_EVENT(block_zwplug, blk_zone_wplug_bio,
> +
> +	TP_PROTO(struct request_queue *q, unsigned int zno, sector_t sector,
> +		 unsigned int nr_segs),
> +
> +	TP_ARGS(q, zno, sector, nr_segs)
> +);
> +
>  #endif /* _TRACE_BLOCK_H */
>  
>  /* This part must be outside protection */


-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux