blk-iocost: cleanup ioc_qos_write
authorChristoph Hellwig <hch@lst.de>
Wed, 21 Sep 2022 18:04:55 +0000 (20:04 +0200)
committerJens Axboe <axboe@kernel.dk>
Tue, 27 Sep 2022 01:17:27 +0000 (19:17 -0600)
Use a local disk variable instead of retrieving the disk and
request_queue over and over by various means.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Andreas Herrmann <aherrmann@suse.de>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20220921180501.1539876-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-iocost.c

index 6fb1c24..c0f69bc 100644 (file)
@@ -3167,6 +3167,7 @@ static ssize_t ioc_qos_write(struct kernfs_open_file *of, char *input,
                             size_t nbytes, loff_t off)
 {
        struct block_device *bdev;
+       struct gendisk *disk;
        struct ioc *ioc;
        u32 qos[NR_QOS_PARAMS];
        bool enable, user;
@@ -3177,12 +3178,13 @@ static ssize_t ioc_qos_write(struct kernfs_open_file *of, char *input,
        if (IS_ERR(bdev))
                return PTR_ERR(bdev);
 
-       ioc = q_to_ioc(bdev_get_queue(bdev));
+       disk = bdev->bd_disk;
+       ioc = q_to_ioc(disk->queue);
        if (!ioc) {
-               ret = blk_iocost_init(bdev->bd_disk);
+               ret = blk_iocost_init(disk);
                if (ret)
                        goto err;
-               ioc = q_to_ioc(bdev_get_queue(bdev));
+               ioc = q_to_ioc(disk->queue);
        }
 
        spin_lock_irq(&ioc->lock);
@@ -3259,11 +3261,11 @@ static ssize_t ioc_qos_write(struct kernfs_open_file *of, char *input,
        spin_lock_irq(&ioc->lock);
 
        if (enable) {
-               blk_stat_enable_accounting(ioc->rqos.q);
-               blk_queue_flag_set(QUEUE_FLAG_RQ_ALLOC_TIME, ioc->rqos.q);
+               blk_stat_enable_accounting(disk->queue);
+               blk_queue_flag_set(QUEUE_FLAG_RQ_ALLOC_TIME, disk->queue);
                ioc->enabled = true;
        } else {
-               blk_queue_flag_clear(QUEUE_FLAG_RQ_ALLOC_TIME, ioc->rqos.q);
+               blk_queue_flag_clear(QUEUE_FLAG_RQ_ALLOC_TIME, disk->queue);
                ioc->enabled = false;
        }