From: Hannes Reinecke <hare@suse.de>
To: Yu Kuai <yukuai1@huaweicloud.com>,
dlemoal@kernel.org, jack@suse.cz, tj@kernel.org,
josef@toxicpanda.com, axboe@kernel.dk, yukuai3@huawei.com
Cc: cgroups@vger.kernel.org, linux-block@vger.kernel.org,
linux-kernel@vger.kernel.org, yi.zhang@huawei.com,
yangerkun@huawei.com, johnny.chenyi@huawei.com
Subject: Re: [PATCH v2 2/5] mq-deadline: switch to use elevator lock
Date: Thu, 31 Jul 2025 08:20:39 +0200 [thread overview]
Message-ID: <750643e5-9f24-4e4c-8270-e421a03cf463@suse.de> (raw)
In-Reply-To: <20250730082207.4031744-3-yukuai1@huaweicloud.com>
On 7/30/25 10:22, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
>
> Replace the internal spinlock 'dd->lock' with the new spinlock in
> elevator_queue, there are no functional changes.
>
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> ---
> block/mq-deadline.c | 58 +++++++++++++++++++++------------------------
> 1 file changed, 27 insertions(+), 31 deletions(-)
>
> diff --git a/block/mq-deadline.c b/block/mq-deadline.c
> index 9ab6c6256695..2054c023e855 100644
> --- a/block/mq-deadline.c
> +++ b/block/mq-deadline.c
> @@ -101,7 +101,7 @@ struct deadline_data {
> u32 async_depth;
> int prio_aging_expire;
>
> - spinlock_t lock;
> + spinlock_t *lock;
> };
>
> /* Maps an I/O priority class to a deadline scheduler priority. */
> @@ -213,7 +213,7 @@ static void dd_merged_requests(struct request_queue *q, struct request *req,
> const u8 ioprio_class = dd_rq_ioclass(next);
> const enum dd_prio prio = ioprio_class_to_prio[ioprio_class];
>
> - lockdep_assert_held(&dd->lock);
> + lockdep_assert_held(dd->lock);
>
> dd->per_prio[prio].stats.merged++;
>
> @@ -253,7 +253,7 @@ static u32 dd_queued(struct deadline_data *dd, enum dd_prio prio)
> {
> const struct io_stats_per_prio *stats = &dd->per_prio[prio].stats;
>
> - lockdep_assert_held(&dd->lock);
> + lockdep_assert_held(dd->lock);
>
> return stats->inserted - atomic_read(&stats->completed);
> }
> @@ -323,7 +323,7 @@ static struct request *__dd_dispatch_request(struct deadline_data *dd,
> enum dd_prio prio;
> u8 ioprio_class;
>
> - lockdep_assert_held(&dd->lock);
> + lockdep_assert_held(dd->lock);
>
> if (!list_empty(&per_prio->dispatch)) {
> rq = list_first_entry(&per_prio->dispatch, struct request,
> @@ -434,7 +434,7 @@ static struct request *dd_dispatch_prio_aged_requests(struct deadline_data *dd,
> enum dd_prio prio;
> int prio_cnt;
>
> - lockdep_assert_held(&dd->lock);
> + lockdep_assert_held(dd->lock);
>
> prio_cnt = !!dd_queued(dd, DD_RT_PRIO) + !!dd_queued(dd, DD_BE_PRIO) +
> !!dd_queued(dd, DD_IDLE_PRIO);
> @@ -466,10 +466,9 @@ static struct request *dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
> struct request *rq;
> enum dd_prio prio;
>
> - spin_lock(&dd->lock);
> rq = dd_dispatch_prio_aged_requests(dd, now);
> if (rq)
> - goto unlock;
> + return rq;
>
> /*
> * Next, dispatch requests in priority order. Ignore lower priority
> @@ -481,9 +480,6 @@ static struct request *dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
> break;
> }
>
> -unlock:
> - spin_unlock(&dd->lock);
> -
> return rq;
> }
>
> @@ -538,9 +534,9 @@ static void dd_exit_sched(struct elevator_queue *e)
> WARN_ON_ONCE(!list_empty(&per_prio->fifo_list[DD_READ]));
> WARN_ON_ONCE(!list_empty(&per_prio->fifo_list[DD_WRITE]));
>
> - spin_lock(&dd->lock);
> + spin_lock(dd->lock);
> queued = dd_queued(dd, prio);
> - spin_unlock(&dd->lock);
> + spin_unlock(dd->lock);
>
> WARN_ONCE(queued != 0,
> "statistics for priority %d: i %u m %u d %u c %u\n",
Do you still need 'dd->lock'? Can't you just refer to the lock from the
elevator_queue structure directly?
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
next prev parent reply other threads:[~2025-07-31 6:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-30 8:22 [PATCH v2 0/5] blk-mq-sched: support request batch dispatching for sq elevator Yu Kuai
2025-07-30 8:22 ` [PATCH v2 1/5] blk-mq-sched: introduce high level elevator lock Yu Kuai
2025-07-30 17:19 ` Bart Van Assche
2025-07-30 17:59 ` Yu Kuai
2025-07-31 6:17 ` Hannes Reinecke
2025-07-30 8:22 ` [PATCH v2 2/5] mq-deadline: switch to use " Yu Kuai
2025-07-30 17:21 ` Bart Van Assche
2025-07-30 18:01 ` Yu Kuai
2025-07-30 18:10 ` Bart Van Assche
2025-07-31 6:20 ` Hannes Reinecke [this message]
2025-07-31 6:22 ` Damien Le Moal
2025-07-31 6:32 ` Yu Kuai
2025-07-31 7:04 ` Damien Le Moal
2025-07-31 7:14 ` Yu Kuai
2025-07-30 8:22 ` [PATCH v2 3/5] block, bfq: " Yu Kuai
2025-07-30 17:24 ` Bart Van Assche
2025-07-31 6:22 ` Hannes Reinecke
2025-07-30 8:22 ` [PATCH v2 4/5] blk-mq-sched: refactor __blk_mq_do_dispatch_sched() Yu Kuai
2025-07-30 18:32 ` Bart Van Assche
2025-07-31 0:49 ` Yu Kuai
2025-07-30 8:22 ` [PATCH v2 5/5] blk-mq-sched: support request batch dispatching for sq elevator Yu Kuai
2025-07-31 8:18 ` [PATCH v2 0/5] " Ming Lei
2025-07-31 8:42 ` Yu Kuai
2025-07-31 9:25 ` Ming Lei
2025-07-31 9:33 ` Yu Kuai
2025-07-31 10:22 ` Ming Lei
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=750643e5-9f24-4e4c-8270-e421a03cf463@suse.de \
--to=hare@suse.de \
--cc=axboe@kernel.dk \
--cc=cgroups@vger.kernel.org \
--cc=dlemoal@kernel.org \
--cc=jack@suse.cz \
--cc=johnny.chenyi@huawei.com \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@kernel.org \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
--cc=yukuai1@huaweicloud.com \
--cc=yukuai3@huawei.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: link
Be 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.