public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>, Alasdair Kergon <agk@redhat.com>,
	Mike Snitzer <snitzer@kernel.org>,
	linux-block@vger.kernel.org, dm-devel@lists.linux.dev
Subject: Re: [PATC] block: update queue limits atomically
Date: Thu, 20 Mar 2025 10:22:11 +0800	[thread overview]
Message-ID: <Z9t709DZs-Flq1qS@fedora> (raw)
In-Reply-To: <d04fcd9f-b4a7-100a-e9a4-b0d4d45b372b@redhat.com>

On Wed, Mar 19, 2025 at 10:18:39PM +0100, Mikulas Patocka wrote:
> 
> 
> On Tue, 18 Mar 2025, Jens Axboe wrote:
> 
> > > Yeah, it looks fine, but I feel it is still fragile, and not sure it is one
> > > accepted solution.
> > 
> > Agree - it'd be much better to have the bio drivers provide the same
> > guarantees that we get on the request side, rather than play games with
> > this and pretend that concurrent update and usage is fine.
> > 
> > -- 
> > Jens Axboe
> 
> And what mechanism should they use to read the queue limits?
> * locking? (would degrade performance)
> * percpu-rwsem? (no overhead for readers, writers wait for the RCU 
>   synchronization)
> * RCU?
> * anything else?

1) queue usage counter is for covering fast IO code path

- in __submit_bio(), queue usage counter is grabbed when calling
  ->submit_bio()

- the only trouble should be from dm-crypt or thin-provision which offloads
bio submission to other context, so you can grab the usage counter by
percpu_ref_get(&q->q_usage_counter) until this bio submission or queue
limit consumption is done

2) slow path: dm_set_device_limits

which is done before DM disk is on, so it should be fine by holding limit lock.

3) changing queue limits from bio->end_io() or request completion handler

- this usage need fix



thanks,
Ming


  reply	other threads:[~2025-03-20  2:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-18 14:26 [PATC] block: update queue limits atomically Mikulas Patocka
2025-03-18 14:56 ` Ming Lei
2025-03-18 15:31   ` Mikulas Patocka
2025-03-19  1:22     ` Ming Lei
2025-03-19  1:58       ` Jens Axboe
2025-03-19 21:18         ` Mikulas Patocka
2025-03-20  2:22           ` Ming Lei [this message]
2025-03-20 12:58             ` Jens Axboe
2025-03-20  5:26         ` Christoph Hellwig
2025-03-18 15:58 ` Bart Van Assche
2025-03-18 16:13   ` Mikulas Patocka
2025-03-20  5:25 ` 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=Z9t709DZs-Flq1qS@fedora \
    --to=ming.lei@redhat.com \
    --cc=agk@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=dm-devel@lists.linux.dev \
    --cc=linux-block@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=snitzer@kernel.org \
    /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