All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>,
	linux-block@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>,
	Ming Lei <ming.lei@redhat.com>
Subject: Re: [PATCH v4 08/11] block: mq-deadline: Reduce lock contention
Date: Fri, 5 May 2023 09:16:50 -0700	[thread overview]
Message-ID: <0b68d517-ac3d-3893-7449-143662c130be@acm.org> (raw)
In-Reply-To: <20230505055626.GD11748@lst.de>

On 5/4/23 22:56, Christoph Hellwig wrote:
> On Wed, May 03, 2023 at 03:52:05PM -0700, Bart Van Assche wrote:
>> blk_mq_free_requests() calls dd_finish_request() indirectly. Prevent
>> nested locking of dd->lock and dd->zone_lock by unlocking dd->lock
>> before calling blk_mq_free_requests().
> 
> Do you have a reproducer for this that we could wire up in blktests?
> Also please add a Fixes tag and move it to the beginning of the series.

Hi Christoph,

I think the nested locking is triggered during every run of blktests.
Additionally, I don't think that nested locking of spinlocks is a bug
so I'm surprised to see a request to add a Fixes: tag?

>>   static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
>>   			      blk_insert_t flags)
>> +	__must_hold(dd->lock)
>>   {
>>   	struct request_queue *q = hctx->queue;
>>   	struct deadline_data *dd = q->elevator->elevator_data;
>> @@ -784,7 +785,9 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
>>   	}
>>   
>>   	if (blk_mq_sched_try_insert_merge(q, rq, &free)) {
>> +		spin_unlock(&dd->lock);
>>   		blk_mq_free_requests(&free);
>> +		spin_lock(&dd->lock);
>>   		return;
> 
> Fiven that free is a list, why don't we declare the free list in
> dd_insert_requests and just pass it to dd_insert_request and then do
> one single blk_mq_free_requests call after the loop?

That sounds like an interesting approach to me. I will make this change.

Thanks,

Bart.

  reply	other threads:[~2023-05-05 16:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-03 22:51 [PATCH v4 00/11] mq-deadline: Improve support for zoned block devices Bart Van Assche
2023-05-03 22:51 ` [PATCH v4 01/11] block: Simplify blk_req_needs_zone_write_lock() Bart Van Assche
2023-05-03 22:51 ` [PATCH v4 02/11] block: Fix the type of the second bdev_op_is_zoned_write() argument Bart Van Assche
2023-05-04  7:16   ` Johannes Thumshirn
2023-05-04  8:18   ` Pankaj Raghav
2023-05-05  5:52   ` Christoph Hellwig
2023-05-03 22:52 ` [PATCH v4 03/11] block: Introduce op_is_zoned_write() Bart Van Assche
2023-05-05  5:52   ` Christoph Hellwig
2023-05-03 22:52 ` [PATCH v4 04/11] block: Introduce blk_rq_is_seq_zoned_write() Bart Van Assche
2023-05-05  5:53   ` Christoph Hellwig
2023-05-05 21:56     ` Bart Van Assche
2023-05-03 22:52 ` [PATCH v4 05/11] block: mq-deadline: Clean up deadline_check_fifo() Bart Van Assche
2023-05-03 22:52 ` [PATCH v4 06/11] block: mq-deadline: Simplify deadline_skip_seq_writes() Bart Van Assche
2023-05-03 22:52 ` [PATCH v4 07/11] block: mq-deadline: Improve deadline_skip_seq_writes() Bart Van Assche
2023-05-03 22:52 ` [PATCH v4 08/11] block: mq-deadline: Reduce lock contention Bart Van Assche
2023-05-05  5:56   ` Christoph Hellwig
2023-05-05 16:16     ` Bart Van Assche [this message]
2023-05-03 22:52 ` [PATCH v4 09/11] block: mq-deadline: Track the dispatch position Bart Van Assche
2023-05-05  5:56   ` Christoph Hellwig
2023-05-03 22:52 ` [PATCH v4 10/11] block: mq-deadline: Handle requeued requests correctly Bart Van Assche
2023-05-05  5:57   ` Christoph Hellwig
2023-05-03 22:52 ` [PATCH v4 11/11] block: mq-deadline: Fix handling of at-head zoned writes Bart Van Assche
2023-05-05  5:57   ` Christoph Hellwig

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=0b68d517-ac3d-3893-7449-143662c130be@acm.org \
    --to=bvanassche@acm.org \
    --cc=axboe@kernel.dk \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=hch@lst.de \
    --cc=jaegeuk@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.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.