Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

blktrace: expose ZONE APPEND completions to blktrace

Expose ZONE APPEND completions as a block trace completion action to
blktrace.

As tracing of zoned block commands needs the upper 32bit of the widened
64bit action, only add traces to blktrace if user-space has requested
version 2 of the blktrace protocol.

Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Johannes Thumshirn and committed by
Jens Axboe
1c164fcc f9ee38bb

+24
+3
include/uapi/linux/blktrace_api.h
··· 97 97 #define BLK_TA_ABORT (__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE)) 98 98 #define BLK_TA_DRV_DATA (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA)) 99 99 100 + #define BLK_TA_ZONE_APPEND (__BLK_TA_COMPLETE |\ 101 + BLK_TC_ACT(BLK_TC_ZONE_APPEND)) 102 + 100 103 #define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY)) 101 104 #define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY)) 102 105 #define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))
+21
kernel/trace/blktrace.c
··· 978 978 blk_trace_request_get_cgid(rq)); 979 979 } 980 980 981 + static void blk_add_trace_zone_update_request(void *ignore, struct request *rq) 982 + { 983 + struct blk_trace *bt; 984 + 985 + rcu_read_lock(); 986 + bt = rcu_dereference(rq->q->blk_trace); 987 + if (likely(!bt) || bt->version < 2) { 988 + rcu_read_unlock(); 989 + return; 990 + } 991 + rcu_read_unlock(); 992 + 993 + blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_ZONE_APPEND, 994 + blk_trace_request_get_cgid(rq)); 995 + } 996 + 981 997 /** 982 998 * blk_add_trace_bio - Add a trace for a bio oriented action 983 999 * @q: queue the io is for ··· 1224 1208 WARN_ON(ret); 1225 1209 ret = register_trace_block_getrq(blk_add_trace_getrq, NULL); 1226 1210 WARN_ON(ret); 1211 + ret = register_trace_blk_zone_append_update_request_bio( 1212 + blk_add_trace_zone_update_request, NULL); 1213 + WARN_ON(ret); 1227 1214 ret = register_trace_block_plug(blk_add_trace_plug, NULL); 1228 1215 WARN_ON(ret); 1229 1216 ret = register_trace_block_unplug(blk_add_trace_unplug, NULL); ··· 1246 1227 unregister_trace_block_split(blk_add_trace_split, NULL); 1247 1228 unregister_trace_block_unplug(blk_add_trace_unplug, NULL); 1248 1229 unregister_trace_block_plug(blk_add_trace_plug, NULL); 1230 + unregister_trace_blk_zone_append_update_request_bio( 1231 + blk_add_trace_zone_update_request, NULL); 1249 1232 unregister_trace_block_getrq(blk_add_trace_getrq, NULL); 1250 1233 unregister_trace_block_bio_queue(blk_add_trace_bio_queue, NULL); 1251 1234 unregister_trace_block_bio_frontmerge(blk_add_trace_bio_frontmerge, NULL);