From: Christoph Hellwig <hch@lst.de> To: Jens Axboe <axboe@kernel.dk> Cc: "Martin K. Petersen" <martin.petersen@oracle.com>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, linux-mtd@lists.infradead.org Subject: [PATCH 09/12] block: move blk_account_io_{start,done} to blk-mq.c Date: Mon, 25 Oct 2021 09:05:14 +0200 [thread overview] Message-ID: <20211025070517.1548584-10-hch@lst.de> (raw) In-Reply-To: <20211025070517.1548584-1-hch@lst.de> These are only used for request based I/O, so move them where they are used. Signed-off-by: Christoph Hellwig <hch@lst.de> --- block/blk-core.c | 27 +-------------------------- block/blk-mq.c | 42 ++++++++++++++++++++++++++++++++++++++++++ block/blk.h | 21 +-------------------- 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c index 98cb9d69a4068..5ca47d25a2ef2 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1088,8 +1088,7 @@ int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob, } EXPORT_SYMBOL_GPL(iocb_bio_iopoll); -static void update_io_ticks(struct block_device *part, unsigned long now, - bool end) +void update_io_ticks(struct block_device *part, unsigned long now, bool end) { unsigned long stamp; again: @@ -1104,30 +1103,6 @@ static void update_io_ticks(struct block_device *part, unsigned long now, } } -void __blk_account_io_done(struct request *req, u64 now) -{ - const int sgrp = op_stat_group(req_op(req)); - - part_stat_lock(); - update_io_ticks(req->part, jiffies, true); - part_stat_inc(req->part, ios[sgrp]); - part_stat_add(req->part, nsecs[sgrp], now - req->start_time_ns); - part_stat_unlock(); -} - -void __blk_account_io_start(struct request *rq) -{ - /* passthrough requests can hold bios that do not have ->bi_bdev set */ - if (rq->bio && rq->bio->bi_bdev) - rq->part = rq->bio->bi_bdev; - else - rq->part = rq->rq_disk->part0; - - part_stat_lock(); - update_io_ticks(rq->part, jiffies, false); - part_stat_unlock(); -} - static unsigned long __part_start_io_acct(struct block_device *part, unsigned int sectors, unsigned int op) { diff --git a/block/blk-mq.c b/block/blk-mq.c index 06fb74166aded..7df80c4da3777 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -790,6 +790,48 @@ bool blk_update_request(struct request *req, blk_status_t error, } EXPORT_SYMBOL_GPL(blk_update_request); +static void __blk_account_io_done(struct request *req, u64 now) +{ + const int sgrp = op_stat_group(req_op(req)); + + part_stat_lock(); + update_io_ticks(req->part, jiffies, true); + part_stat_inc(req->part, ios[sgrp]); + part_stat_add(req->part, nsecs[sgrp], now - req->start_time_ns); + part_stat_unlock(); +} + +static inline void blk_account_io_done(struct request *req, u64 now) +{ + /* + * Account IO completion. flush_rq isn't accounted as a + * normal IO on queueing nor completion. Accounting the + * containing request is enough. + */ + if (blk_do_io_stat(req) && req->part && + !(req->rq_flags & RQF_FLUSH_SEQ)) + __blk_account_io_done(req, now); +} + +static void __blk_account_io_start(struct request *rq) +{ + /* passthrough requests can hold bios that do not have ->bi_bdev set */ + if (rq->bio && rq->bio->bi_bdev) + rq->part = rq->bio->bi_bdev; + else + rq->part = rq->rq_disk->part0; + + part_stat_lock(); + update_io_ticks(rq->part, jiffies, false); + part_stat_unlock(); +} + +static inline void blk_account_io_start(struct request *req) +{ + if (blk_do_io_stat(req)) + __blk_account_io_start(req); +} + static inline void __blk_mq_end_request_acct(struct request *rq, u64 now) { if (rq->rq_flags & RQF_STATS) { diff --git a/block/blk.h b/block/blk.h index c5fc3f97d1e5a..8bcca0538faac 100644 --- a/block/blk.h +++ b/block/blk.h @@ -222,9 +222,6 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, bool blk_bio_list_merge(struct request_queue *q, struct list_head *list, struct bio *bio, unsigned int nr_segs); -void __blk_account_io_start(struct request *req); -void __blk_account_io_done(struct request *req, u64 now); - /* * Plug flush limits */ @@ -315,23 +312,7 @@ static inline bool blk_do_io_stat(struct request *rq) return (rq->rq_flags & RQF_IO_STAT) && rq->rq_disk; } -static inline void blk_account_io_done(struct request *req, u64 now) -{ - /* - * Account IO completion. flush_rq isn't accounted as a - * normal IO on queueing nor completion. Accounting the - * containing request is enough. - */ - if (blk_do_io_stat(req) && req->part && - !(req->rq_flags & RQF_FLUSH_SEQ)) - __blk_account_io_done(req, now); -} - -static inline void blk_account_io_start(struct request *req) -{ - if (blk_do_io_stat(req)) - __blk_account_io_start(req); -} +void update_io_ticks(struct block_device *part, unsigned long now, bool end); static inline void req_set_nomerge(struct request_queue *q, struct request *req) { -- 2.30.2
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Jens Axboe <axboe@kernel.dk> Cc: "Martin K. Petersen" <martin.petersen@oracle.com>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, linux-mtd@lists.infradead.org Subject: [PATCH 09/12] block: move blk_account_io_{start,done} to blk-mq.c Date: Mon, 25 Oct 2021 09:05:14 +0200 [thread overview] Message-ID: <20211025070517.1548584-10-hch@lst.de> (raw) In-Reply-To: <20211025070517.1548584-1-hch@lst.de> These are only used for request based I/O, so move them where they are used. Signed-off-by: Christoph Hellwig <hch@lst.de> --- block/blk-core.c | 27 +-------------------------- block/blk-mq.c | 42 ++++++++++++++++++++++++++++++++++++++++++ block/blk.h | 21 +-------------------- 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c index 98cb9d69a4068..5ca47d25a2ef2 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1088,8 +1088,7 @@ int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob, } EXPORT_SYMBOL_GPL(iocb_bio_iopoll); -static void update_io_ticks(struct block_device *part, unsigned long now, - bool end) +void update_io_ticks(struct block_device *part, unsigned long now, bool end) { unsigned long stamp; again: @@ -1104,30 +1103,6 @@ static void update_io_ticks(struct block_device *part, unsigned long now, } } -void __blk_account_io_done(struct request *req, u64 now) -{ - const int sgrp = op_stat_group(req_op(req)); - - part_stat_lock(); - update_io_ticks(req->part, jiffies, true); - part_stat_inc(req->part, ios[sgrp]); - part_stat_add(req->part, nsecs[sgrp], now - req->start_time_ns); - part_stat_unlock(); -} - -void __blk_account_io_start(struct request *rq) -{ - /* passthrough requests can hold bios that do not have ->bi_bdev set */ - if (rq->bio && rq->bio->bi_bdev) - rq->part = rq->bio->bi_bdev; - else - rq->part = rq->rq_disk->part0; - - part_stat_lock(); - update_io_ticks(rq->part, jiffies, false); - part_stat_unlock(); -} - static unsigned long __part_start_io_acct(struct block_device *part, unsigned int sectors, unsigned int op) { diff --git a/block/blk-mq.c b/block/blk-mq.c index 06fb74166aded..7df80c4da3777 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -790,6 +790,48 @@ bool blk_update_request(struct request *req, blk_status_t error, } EXPORT_SYMBOL_GPL(blk_update_request); +static void __blk_account_io_done(struct request *req, u64 now) +{ + const int sgrp = op_stat_group(req_op(req)); + + part_stat_lock(); + update_io_ticks(req->part, jiffies, true); + part_stat_inc(req->part, ios[sgrp]); + part_stat_add(req->part, nsecs[sgrp], now - req->start_time_ns); + part_stat_unlock(); +} + +static inline void blk_account_io_done(struct request *req, u64 now) +{ + /* + * Account IO completion. flush_rq isn't accounted as a + * normal IO on queueing nor completion. Accounting the + * containing request is enough. + */ + if (blk_do_io_stat(req) && req->part && + !(req->rq_flags & RQF_FLUSH_SEQ)) + __blk_account_io_done(req, now); +} + +static void __blk_account_io_start(struct request *rq) +{ + /* passthrough requests can hold bios that do not have ->bi_bdev set */ + if (rq->bio && rq->bio->bi_bdev) + rq->part = rq->bio->bi_bdev; + else + rq->part = rq->rq_disk->part0; + + part_stat_lock(); + update_io_ticks(rq->part, jiffies, false); + part_stat_unlock(); +} + +static inline void blk_account_io_start(struct request *req) +{ + if (blk_do_io_stat(req)) + __blk_account_io_start(req); +} + static inline void __blk_mq_end_request_acct(struct request *rq, u64 now) { if (rq->rq_flags & RQF_STATS) { diff --git a/block/blk.h b/block/blk.h index c5fc3f97d1e5a..8bcca0538faac 100644 --- a/block/blk.h +++ b/block/blk.h @@ -222,9 +222,6 @@ bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio, bool blk_bio_list_merge(struct request_queue *q, struct list_head *list, struct bio *bio, unsigned int nr_segs); -void __blk_account_io_start(struct request *req); -void __blk_account_io_done(struct request *req, u64 now); - /* * Plug flush limits */ @@ -315,23 +312,7 @@ static inline bool blk_do_io_stat(struct request *rq) return (rq->rq_flags & RQF_IO_STAT) && rq->rq_disk; } -static inline void blk_account_io_done(struct request *req, u64 now) -{ - /* - * Account IO completion. flush_rq isn't accounted as a - * normal IO on queueing nor completion. Accounting the - * containing request is enough. - */ - if (blk_do_io_stat(req) && req->part && - !(req->rq_flags & RQF_FLUSH_SEQ)) - __blk_account_io_done(req, now); -} - -static inline void blk_account_io_start(struct request *req) -{ - if (blk_do_io_stat(req)) - __blk_account_io_start(req); -} +void update_io_ticks(struct block_device *part, unsigned long now, bool end); static inline void req_set_nomerge(struct request_queue *q, struct request *req) { -- 2.30.2 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2021-10-25 7:05 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-25 7:05 move all struct request releated code out of blk-core.c Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-25 7:05 ` [PATCH 01/12] block: move blk_rq_err_bytes to scsi Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-26 23:55 ` Chaitanya Kulkarni 2021-10-26 23:55 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 02/12] block: remove blk_{get,put}_request Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-26 23:56 ` Chaitanya Kulkarni 2021-10-26 23:56 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 03/12] block: remove rq_flush_dcache_pages Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-25 7:05 ` [PATCH 04/12] block: remove blk-exec.c Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-26 23:58 ` Chaitanya Kulkarni 2021-10-26 23:58 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 05/12] blk-mq: move blk_mq_flush_plug_list Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:00 ` Chaitanya Kulkarni 2021-10-27 0:00 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 06/12] block: move request based cloning helpers to blk-mq.c Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:01 ` Chaitanya Kulkarni 2021-10-27 0:01 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 07/12] block: move blk_rq_init " Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:01 ` Chaitanya Kulkarni 2021-10-27 0:01 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 08/12] block: move blk_steal_bios " Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:02 ` Chaitanya Kulkarni 2021-10-27 0:02 ` Chaitanya Kulkarni 2021-10-25 7:05 ` Christoph Hellwig [this message] 2021-10-25 7:05 ` [PATCH 09/12] block: move blk_account_io_{start,done} " Christoph Hellwig 2021-10-27 0:04 ` Chaitanya Kulkarni 2021-10-27 0:04 ` [PATCH 09/12] block: move blk_account_io_{start, done} " Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 10/12] block: move blk_dump_rq_flags " Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:04 ` Chaitanya Kulkarni 2021-10-27 0:04 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 11/12] block: move blk_print_req_error " Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:06 ` Chaitanya Kulkarni 2021-10-27 0:06 ` Chaitanya Kulkarni 2021-10-25 7:05 ` [PATCH 12/12] block: don't include blk-mq headers in blk-core.c Christoph Hellwig 2021-10-25 7:05 ` Christoph Hellwig 2021-10-27 0:07 ` Chaitanya Kulkarni 2021-10-27 0:07 ` Chaitanya Kulkarni 2021-10-29 12:52 ` (subset) move all struct request releated code out of blk-core.c Jens Axboe 2021-10-29 12:52 ` Jens Axboe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211025070517.1548584-10-hch@lst.de \ --to=hch@lst.de \ --cc=axboe@kernel.dk \ --cc=linux-block@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=miquel.raynal@bootlin.com \ --cc=richard@nod.at \ --cc=vigneshr@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.