Re: [PATCH 1/2] block: move queue quiesce into elevator_change()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 07, 2025 at 03:53:49PM +0200, Christoph Hellwig wrote:
> On Wed, May 07, 2025 at 08:04:02PM +0800, Ming Lei wrote:
> > blk_mq_freeze_queue() can't be called on quiesced queue, otherwise it may
> > never return if there is any queued requests.
> > 
> > Fix it by moving queue quiesce int elevator_change() by adding one flag to
> > 'struct elv_change_ctx' for controlling this behavior.
> 
> Why do we even need to quiesce the queue here, and not anywhere else?

Quiesce is for draining the in-progress critical area, which can't be
covered by queue freeze. Typically, all requests are freed, the run queue
activity isn't finished yet, so schedule data can be touched by the un-finished
code path.

We did fix this kind of bugs by queue quiesce several times.

Thanks, 
Ming





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux