The field of 'q_usage_counter' is always fetched in fast path of every
block driver, and move it into front of 'request_queue', so it can be
fetched into 1st cacheline of 'request_queue' instance.

Cc: Sagi Grimberg <s...@grimberg.me>
Cc: Tejun Heo <t...@kernel.org>
Cc: Christoph Hellwig <h...@lst.de>
Cc: Jens Axboe <ax...@kernel.dk>
Cc: Bart Van Assche <bvanass...@acm.org>
Signed-off-by: Ming Lei <ming....@redhat.com>
---
 include/linux/blkdev.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index bb5636cc17b9..d8dba550ecac 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -396,6 +396,8 @@ struct request_queue {
        struct request          *last_merge;
        struct elevator_queue   *elevator;
 
+       struct percpu_ref       q_usage_counter;
+
        struct blk_queue_stats  *stats;
        struct rq_qos           *rq_qos;
 
@@ -566,7 +568,6 @@ struct request_queue {
         * percpu_ref_kill() and percpu_ref_reinit().
         */
        struct mutex            mq_freeze_lock;
-       struct percpu_ref       q_usage_counter;
 
        struct blk_mq_tag_set   *tag_set;
        struct list_head        tag_set_list;
-- 
2.25.2

Reply via email to