]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
block/mq-deadline: Introduce dd_start_request()
authorBart Van Assche <bvanassche@acm.org>
Mon, 13 Oct 2025 19:28:02 +0000 (12:28 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Dec 2025 12:54:45 +0000 (13:54 +0100)
[ Upstream commit 93a358af59c6e8ab00b57cfdb1c437516a4948ca ]

Prepare for adding a second caller of this function. No functionality
has been changed.

Cc: Damien Le Moal <dlemoal@kernel.org>
Cc: Yu Kuai <yukuai@kernel.org>
Cc: chengkaitao <chengkaitao@kylinos.cn>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Stable-dep-of: d60055cf5270 ("block/mq-deadline: Switch back to a single dispatch list")
Signed-off-by: Sasha Levin <sashal@kernel.org>
block/mq-deadline.c

index 19473a9b50440400ab7c49c7a96ef782184b1a85..690b51587301df49f20542a236d93e4d9d578759 100644 (file)
@@ -310,6 +310,19 @@ static bool started_after(struct deadline_data *dd, struct request *rq,
        return time_after(start_time, latest_start);
 }
 
+static struct request *dd_start_request(struct deadline_data *dd,
+                                       enum dd_data_dir data_dir,
+                                       struct request *rq)
+{
+       u8 ioprio_class = dd_rq_ioclass(rq);
+       enum dd_prio prio = ioprio_class_to_prio[ioprio_class];
+
+       dd->per_prio[prio].latest_pos[data_dir] = blk_rq_pos(rq);
+       dd->per_prio[prio].stats.dispatched++;
+       rq->rq_flags |= RQF_STARTED;
+       return rq;
+}
+
 /*
  * deadline_dispatch_requests selects the best request according to
  * read/write expire, fifo_batch, etc and with a start time <= @latest_start.
@@ -320,8 +333,6 @@ static struct request *__dd_dispatch_request(struct deadline_data *dd,
 {
        struct request *rq, *next_rq;
        enum dd_data_dir data_dir;
-       enum dd_prio prio;
-       u8 ioprio_class;
 
        lockdep_assert_held(&dd->lock);
 
@@ -415,12 +426,7 @@ dispatch_request:
        dd->batching++;
        deadline_move_request(dd, per_prio, rq);
 done:
-       ioprio_class = dd_rq_ioclass(rq);
-       prio = ioprio_class_to_prio[ioprio_class];
-       dd->per_prio[prio].latest_pos[data_dir] = blk_rq_pos(rq);
-       dd->per_prio[prio].stats.dispatched++;
-       rq->rq_flags |= RQF_STARTED;
-       return rq;
+       return dd_start_request(dd, data_dir, rq);
 }
 
 /*