linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Damien Le Moal <dlemoal@kernel.org>
Cc: Nilay Shroff <nilay@linux.ibm.com>,
	Ming Lei <ming.lei@redhat.com>, Christoph Hellwig <hch@lst.de>,
	Jens Axboe <axboe@kernel.dk>,
	linux-block@vger.kernel.org
Subject: Re: [PATCH 1/2] block: avoid to hold q->limits_lock across APIs for atomic update queue limits
Date: Thu, 19 Dec 2024 07:20:26 +0100	[thread overview]
Message-ID: <20241219062026.GC19575@lst.de> (raw)
In-Reply-To: <9e2ad956-4d20-456f-9676-8ea88dfd116e@kernel.org>

On Wed, Dec 18, 2024 at 06:57:45AM -0800, Damien Le Moal wrote:
> > Yeah agreed but I see sd_revalidate_disk() is probably the only exception 
> > which allocates the blk-mq request. Can't we fix it? 
> 
> If we change where limits_lock is taken now, we will again introduce races
> between user config and discovery/revalidation, which is what
> queue_limits_start_update() and queue_limits_commit_update() intended to fix in
> the first place.
> 
> So changing sd_revalidate_disk() is not the right approach.

Well, sd_revalidate_disk is a bit special in that it needs a command
on the same queue to query the information.  So it needs to be able
to issue commands without the queue frozen.  Freezing the queue inside
the limits lock support that, sd just can't use the convenience helpers
that lock and freeze.

> This is overly complicated ... As I suggested, I think that a simpler approach
> is to call blk_mq_freeze_queue() and blk_mq_unfreeze_queue() inside
> queue_limits_commit_update(). Doing so, no driver should need to directly call
> freeze/unfreeze. But that would be a cleanup. Let's first fix the few instances
> that have the update/freeze order wrong. As mentioned, the pattern simply needs

Yes, the queue only needs to be frozen for the actual update,
which would remove the need for the locking.  The big question for both
variants is if we can get rid of all the callers that have the queue
already frozen and then start an update.


  reply	other threads:[~2024-12-19  6:20 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-16  8:02 [PATCH 0/2] block: fix deadlock caused by atomic limits update Ming Lei
2024-12-16  8:02 ` [PATCH 1/2] block: avoid to hold q->limits_lock across APIs for atomic update queue limits Ming Lei
2024-12-16 15:49   ` Christoph Hellwig
2024-12-17  1:52     ` Ming Lei
2024-12-17  4:40       ` Christoph Hellwig
2024-12-17  7:05         ` Ming Lei
2024-12-17  7:19           ` Christoph Hellwig
2024-12-17  7:30             ` Ming Lei
2024-12-17 16:07               ` Damien Le Moal
2024-12-18  2:09                 ` Ming Lei
2024-12-18 11:33                   ` Nilay Shroff
2024-12-18 13:40                     ` Ming Lei
2024-12-18 14:05                       ` Nilay Shroff
2024-12-18 14:57                         ` Damien Le Moal
2024-12-19  6:20                           ` Christoph Hellwig [this message]
2024-12-19  7:16                             ` Nilay Shroff
2024-12-21 13:03                             ` Nilay Shroff
2024-12-30  9:02                               ` Ming Lei
2024-12-30 23:29                                 ` Damien Le Moal
2025-01-01 11:17                                   ` Nilay Shroff
2024-12-19  6:17                         ` Christoph Hellwig
2024-12-19  6:15                   ` Christoph Hellwig
2024-12-16  8:02 ` [PATCH 2/2] block: remove queue_limits_cancel_update() 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=20241219062026.GC19575@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=dlemoal@kernel.org \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=nilay@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).