Re: [PATCH] block: mq-deadline: Fix write completion handling

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

 



On 12/16/18 11:14 PM, Damien Le Moal wrote:
> For a zoned block device using mq-deadline, if a write request for a
> zone is received while another write was already dispatched for the same
> zone, dd_dispatch_request() will return NULL and the newly inserted
> write request is kept in the scheduler queue waiting for the ongoing
> zone write to complete. With this behavior, when no other request has
> been dispatched, rq_list in blk_mq_sched_dispatch_requests() is empty
> and blk_mq_sched_mark_restart_hctx() not called. This in turn leads to
> __blk_mq_free_request() call of blk_mq_sched_restart() to not run the
> queue when the already dispatched write request completes. The newly
> dispatched request stays stuck in the scheduler queue until eventually
> another request is submitted.
> 
> This problem does not affect SCSI disk as the SCSI stack handles queue
> restart on request completion. However, this problem is can be triggered
> the nullblk driver with zoned mode enabled.
> 
> Fix this by always requesting a queue restart in dd_dispatch_request()
> if no request was dispatched while WRITE requests are queued.

Applied, thanks.

-- 
Jens Axboe




[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