| From 046372e2f8e99a04033477e296e911672caffaeb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 3 Dec 2020 17:21:39 +0100 |
| Subject: block: remove the request_queue to argument request based tracepoints |
| |
| From: Christoph Hellwig <hch@lst.de> |
| |
| [ Upstream commit a54895fa057c67700270777f7661d8d3c7fda88a ] |
| |
| The request_queue can trivially be derived from the request. |
| |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> |
| Reviewed-by: Hannes Reinecke <hare@suse.de> |
| Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> |
| Acked-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| block/blk-merge.c | 2 +- |
| block/blk-mq-sched.c | 2 +- |
| block/blk-mq.c | 8 +++---- |
| drivers/md/dm-rq.c | 2 +- |
| drivers/s390/scsi/zfcp_fsf.c | 3 +-- |
| include/linux/blktrace_api.h | 5 ++-- |
| include/trace/events/block.h | 30 ++++++++++-------------- |
| kernel/trace/blktrace.c | 44 ++++++++++++++---------------------- |
| 8 files changed, 39 insertions(+), 57 deletions(-) |
| |
| diff --git a/block/blk-merge.c b/block/blk-merge.c |
| index 006b1f0a59bc..fbba277364f0 100644 |
| --- a/block/blk-merge.c |
| +++ b/block/blk-merge.c |
| @@ -806,7 +806,7 @@ static struct request *attempt_merge(struct request_queue *q, |
| */ |
| blk_account_io_merge_request(next); |
| |
| - trace_block_rq_merge(q, next); |
| + trace_block_rq_merge(next); |
| |
| /* |
| * ownership of bio passed from next to req, return 'next' for |
| diff --git a/block/blk-mq-sched.c b/block/blk-mq-sched.c |
| index e0117f5f969d..72e64ba661fc 100644 |
| --- a/block/blk-mq-sched.c |
| +++ b/block/blk-mq-sched.c |
| @@ -396,7 +396,7 @@ EXPORT_SYMBOL_GPL(blk_mq_sched_try_insert_merge); |
| |
| void blk_mq_sched_request_inserted(struct request *rq) |
| { |
| - trace_block_rq_insert(rq->q, rq); |
| + trace_block_rq_insert(rq); |
| } |
| EXPORT_SYMBOL_GPL(blk_mq_sched_request_inserted); |
| |
| diff --git a/block/blk-mq.c b/block/blk-mq.c |
| index c5d82b21a1cc..90f64bb42fbd 100644 |
| --- a/block/blk-mq.c |
| +++ b/block/blk-mq.c |
| @@ -733,7 +733,7 @@ void blk_mq_start_request(struct request *rq) |
| { |
| struct request_queue *q = rq->q; |
| |
| - trace_block_rq_issue(q, rq); |
| + trace_block_rq_issue(rq); |
| |
| if (test_bit(QUEUE_FLAG_STATS, &q->queue_flags)) { |
| rq->io_start_time_ns = ktime_get_ns(); |
| @@ -760,7 +760,7 @@ static void __blk_mq_requeue_request(struct request *rq) |
| |
| blk_mq_put_driver_tag(rq); |
| |
| - trace_block_rq_requeue(q, rq); |
| + trace_block_rq_requeue(rq); |
| rq_qos_requeue(q, rq); |
| |
| if (blk_mq_request_started(rq)) { |
| @@ -1806,7 +1806,7 @@ static inline void __blk_mq_insert_req_list(struct blk_mq_hw_ctx *hctx, |
| |
| lockdep_assert_held(&ctx->lock); |
| |
| - trace_block_rq_insert(hctx->queue, rq); |
| + trace_block_rq_insert(rq); |
| |
| if (at_head) |
| list_add(&rq->queuelist, &ctx->rq_lists[type]); |
| @@ -1863,7 +1863,7 @@ void blk_mq_insert_requests(struct blk_mq_hw_ctx *hctx, struct blk_mq_ctx *ctx, |
| */ |
| list_for_each_entry(rq, list, queuelist) { |
| BUG_ON(rq->mq_ctx != ctx); |
| - trace_block_rq_insert(hctx->queue, rq); |
| + trace_block_rq_insert(rq); |
| } |
| |
| spin_lock(&ctx->lock); |
| diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c |
| index 4833f4b20b2c..5f933dbb0152 100644 |
| --- a/drivers/md/dm-rq.c |
| +++ b/drivers/md/dm-rq.c |
| @@ -397,7 +397,7 @@ static int map_request(struct dm_rq_target_io *tio) |
| } |
| |
| /* The target has remapped the I/O so dispatch it */ |
| - trace_block_rq_remap(clone->q, clone, disk_devt(dm_disk(md)), |
| + trace_block_rq_remap(clone, disk_devt(dm_disk(md)), |
| blk_rq_pos(rq)); |
| ret = dm_dispatch_clone_request(clone, rq); |
| if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE) { |
| diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c |
| index 6cb963a06777..37d450f46952 100644 |
| --- a/drivers/s390/scsi/zfcp_fsf.c |
| +++ b/drivers/s390/scsi/zfcp_fsf.c |
| @@ -2359,8 +2359,7 @@ static void zfcp_fsf_req_trace(struct zfcp_fsf_req *req, struct scsi_cmnd *scsi) |
| } |
| } |
| |
| - blk_add_driver_data(scsi->request->q, scsi->request, &blktrc, |
| - sizeof(blktrc)); |
| + blk_add_driver_data(scsi->request, &blktrc, sizeof(blktrc)); |
| } |
| |
| /** |
| diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h |
| index 3b6ff5902edc..05556573b896 100644 |
| --- a/include/linux/blktrace_api.h |
| +++ b/include/linux/blktrace_api.h |
| @@ -75,8 +75,7 @@ static inline bool blk_trace_note_message_enabled(struct request_queue *q) |
| return ret; |
| } |
| |
| -extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |
| - void *data, size_t len); |
| +extern void blk_add_driver_data(struct request *rq, void *data, size_t len); |
| extern int blk_trace_setup(struct request_queue *q, char *name, dev_t dev, |
| struct block_device *bdev, |
| char __user *arg); |
| @@ -90,7 +89,7 @@ extern struct attribute_group blk_trace_attr_group; |
| #else /* !CONFIG_BLK_DEV_IO_TRACE */ |
| # define blk_trace_ioctl(bdev, cmd, arg) (-ENOTTY) |
| # define blk_trace_shutdown(q) do { } while (0) |
| -# define blk_add_driver_data(q, rq, data, len) do {} while (0) |
| +# define blk_add_driver_data(rq, data, len) do {} while (0) |
| # define blk_trace_setup(q, name, dev, bdev, arg) (-ENOTTY) |
| # define blk_trace_startstop(q, start) (-ENOTTY) |
| # define blk_trace_remove(q) (-ENOTTY) |
| diff --git a/include/trace/events/block.h b/include/trace/events/block.h |
| index 34d64ca306b1..76a6b3bbc01f 100644 |
| --- a/include/trace/events/block.h |
| +++ b/include/trace/events/block.h |
| @@ -64,7 +64,6 @@ DEFINE_EVENT(block_buffer, block_dirty_buffer, |
| |
| /** |
| * block_rq_requeue - place block IO request back on a queue |
| - * @q: queue holding operation |
| * @rq: block IO operation request |
| * |
| * The block operation request @rq is being placed back into queue |
| @@ -73,9 +72,9 @@ DEFINE_EVENT(block_buffer, block_dirty_buffer, |
| */ |
| TRACE_EVENT(block_rq_requeue, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq), |
| + TP_PROTO(struct request *rq), |
| |
| - TP_ARGS(q, rq), |
| + TP_ARGS(rq), |
| |
| TP_STRUCT__entry( |
| __field( dev_t, dev ) |
| @@ -147,9 +146,9 @@ TRACE_EVENT(block_rq_complete, |
| |
| DECLARE_EVENT_CLASS(block_rq, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq), |
| + TP_PROTO(struct request *rq), |
| |
| - TP_ARGS(q, rq), |
| + TP_ARGS(rq), |
| |
| TP_STRUCT__entry( |
| __field( dev_t, dev ) |
| @@ -181,7 +180,6 @@ DECLARE_EVENT_CLASS(block_rq, |
| |
| /** |
| * block_rq_insert - insert block operation request into queue |
| - * @q: target queue |
| * @rq: block IO operation request |
| * |
| * Called immediately before block operation request @rq is inserted |
| @@ -191,14 +189,13 @@ DECLARE_EVENT_CLASS(block_rq, |
| */ |
| DEFINE_EVENT(block_rq, block_rq_insert, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq), |
| + TP_PROTO(struct request *rq), |
| |
| - TP_ARGS(q, rq) |
| + TP_ARGS(rq) |
| ); |
| |
| /** |
| * block_rq_issue - issue pending block IO request operation to device driver |
| - * @q: queue holding operation |
| * @rq: block IO operation operation request |
| * |
| * Called when block operation request @rq from queue @q is sent to a |
| @@ -206,14 +203,13 @@ DEFINE_EVENT(block_rq, block_rq_insert, |
| */ |
| DEFINE_EVENT(block_rq, block_rq_issue, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq), |
| + TP_PROTO(struct request *rq), |
| |
| - TP_ARGS(q, rq) |
| + TP_ARGS(rq) |
| ); |
| |
| /** |
| * block_rq_merge - merge request with another one in the elevator |
| - * @q: queue holding operation |
| * @rq: block IO operation operation request |
| * |
| * Called when block operation request @rq from queue @q is merged to another |
| @@ -221,9 +217,9 @@ DEFINE_EVENT(block_rq, block_rq_issue, |
| */ |
| DEFINE_EVENT(block_rq, block_rq_merge, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq), |
| + TP_PROTO(struct request *rq), |
| |
| - TP_ARGS(q, rq) |
| + TP_ARGS(rq) |
| ); |
| |
| /** |
| @@ -605,7 +601,6 @@ TRACE_EVENT(block_bio_remap, |
| |
| /** |
| * block_rq_remap - map request for a block operation request |
| - * @q: queue holding the operation |
| * @rq: block IO operation request |
| * @dev: device for the operation |
| * @from: original sector for the operation |
| @@ -616,10 +611,9 @@ TRACE_EVENT(block_bio_remap, |
| */ |
| TRACE_EVENT(block_rq_remap, |
| |
| - TP_PROTO(struct request_queue *q, struct request *rq, dev_t dev, |
| - sector_t from), |
| + TP_PROTO(struct request *rq, dev_t dev, sector_t from), |
| |
| - TP_ARGS(q, rq, dev, from), |
| + TP_ARGS(rq, dev, from), |
| |
| TP_STRUCT__entry( |
| __field( dev_t, dev ) |
| diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c |
| index b89ff188a618..7f625400763b 100644 |
| --- a/kernel/trace/blktrace.c |
| +++ b/kernel/trace/blktrace.c |
| @@ -800,12 +800,12 @@ static u64 blk_trace_bio_get_cgid(struct request_queue *q, struct bio *bio) |
| #endif |
| |
| static u64 |
| -blk_trace_request_get_cgid(struct request_queue *q, struct request *rq) |
| +blk_trace_request_get_cgid(struct request *rq) |
| { |
| if (!rq->bio) |
| return 0; |
| /* Use the first bio */ |
| - return blk_trace_bio_get_cgid(q, rq->bio); |
| + return blk_trace_bio_get_cgid(rq->q, rq->bio); |
| } |
| |
| /* |
| @@ -846,40 +846,35 @@ static void blk_add_trace_rq(struct request *rq, int error, |
| rcu_read_unlock(); |
| } |
| |
| -static void blk_add_trace_rq_insert(void *ignore, |
| - struct request_queue *q, struct request *rq) |
| +static void blk_add_trace_rq_insert(void *ignore, struct request *rq) |
| { |
| blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_INSERT, |
| - blk_trace_request_get_cgid(q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| } |
| |
| -static void blk_add_trace_rq_issue(void *ignore, |
| - struct request_queue *q, struct request *rq) |
| +static void blk_add_trace_rq_issue(void *ignore, struct request *rq) |
| { |
| blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_ISSUE, |
| - blk_trace_request_get_cgid(q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| } |
| |
| -static void blk_add_trace_rq_merge(void *ignore, |
| - struct request_queue *q, struct request *rq) |
| +static void blk_add_trace_rq_merge(void *ignore, struct request *rq) |
| { |
| blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_BACKMERGE, |
| - blk_trace_request_get_cgid(q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| } |
| |
| -static void blk_add_trace_rq_requeue(void *ignore, |
| - struct request_queue *q, |
| - struct request *rq) |
| +static void blk_add_trace_rq_requeue(void *ignore, struct request *rq) |
| { |
| blk_add_trace_rq(rq, 0, blk_rq_bytes(rq), BLK_TA_REQUEUE, |
| - blk_trace_request_get_cgid(q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| } |
| |
| static void blk_add_trace_rq_complete(void *ignore, struct request *rq, |
| int error, unsigned int nr_bytes) |
| { |
| blk_add_trace_rq(rq, error, nr_bytes, BLK_TA_COMPLETE, |
| - blk_trace_request_get_cgid(rq->q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| } |
| |
| /** |
| @@ -1087,16 +1082,14 @@ static void blk_add_trace_bio_remap(void *ignore, |
| * Add a trace for that action. |
| * |
| **/ |
| -static void blk_add_trace_rq_remap(void *ignore, |
| - struct request_queue *q, |
| - struct request *rq, dev_t dev, |
| +static void blk_add_trace_rq_remap(void *ignore, struct request *rq, dev_t dev, |
| sector_t from) |
| { |
| struct blk_trace *bt; |
| struct blk_io_trace_remap r; |
| |
| rcu_read_lock(); |
| - bt = rcu_dereference(q->blk_trace); |
| + bt = rcu_dereference(rq->q->blk_trace); |
| if (likely(!bt)) { |
| rcu_read_unlock(); |
| return; |
| @@ -1108,13 +1101,12 @@ static void blk_add_trace_rq_remap(void *ignore, |
| |
| __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), |
| rq_data_dir(rq), 0, BLK_TA_REMAP, 0, |
| - sizeof(r), &r, blk_trace_request_get_cgid(q, rq)); |
| + sizeof(r), &r, blk_trace_request_get_cgid(rq)); |
| rcu_read_unlock(); |
| } |
| |
| /** |
| * blk_add_driver_data - Add binary message with driver-specific data |
| - * @q: queue the io is for |
| * @rq: io request |
| * @data: driver-specific data |
| * @len: length of driver-specific data |
| @@ -1123,14 +1115,12 @@ static void blk_add_trace_rq_remap(void *ignore, |
| * Some drivers might want to write driver-specific data per request. |
| * |
| **/ |
| -void blk_add_driver_data(struct request_queue *q, |
| - struct request *rq, |
| - void *data, size_t len) |
| +void blk_add_driver_data(struct request *rq, void *data, size_t len) |
| { |
| struct blk_trace *bt; |
| |
| rcu_read_lock(); |
| - bt = rcu_dereference(q->blk_trace); |
| + bt = rcu_dereference(rq->q->blk_trace); |
| if (likely(!bt)) { |
| rcu_read_unlock(); |
| return; |
| @@ -1138,7 +1128,7 @@ void blk_add_driver_data(struct request_queue *q, |
| |
| __blk_add_trace(bt, blk_rq_trace_sector(rq), blk_rq_bytes(rq), 0, 0, |
| BLK_TA_DRV_DATA, 0, len, data, |
| - blk_trace_request_get_cgid(q, rq)); |
| + blk_trace_request_get_cgid(rq)); |
| rcu_read_unlock(); |
| } |
| EXPORT_SYMBOL_GPL(blk_add_driver_data); |
| -- |
| 2.35.1 |
| |