Hi John, On Tue, Jul 16, 2019 at 2:55 PM John Garry <john.garry@xxxxxxxxxx> wrote: > > 在 12/07/2019 10:47, Ming Lei 写道: > > Hi, > > > > Thomas mentioned: > > " > > That was the constraint of managed interrupts from the very beginning: > > > > The driver/subsystem has to quiesce the interrupt line and the associated > > queue _before_ it gets shutdown in CPU unplug and not fiddle with it > > until it's restarted by the core when the CPU is plugged in again. > > " > > > > But no drivers or blk-mq do that before one hctx becomes dead(all > > CPUs for one hctx are offline), and even it is worse, blk-mq stills tries > > to run hw queue after hctx is dead, see blk_mq_hctx_notify_dead(). > > > > This patchset tries to address the issue by two stages: > > > > 1) add one new cpuhp state of CPUHP_AP_BLK_MQ_ONLINE > > > > - mark the hctx as internal stopped, and drain all in-flight requests > > if the hctx is going to be dead. > > > > 2) re-submit IO in the state of CPUHP_BLK_MQ_DEAD after the hctx becomes dead > > > > - steal bios from the request, and resubmit them via generic_make_request(), > > then these IO will be mapped to other live hctx for dispatch > > > > Please comment & review, thanks! > > > > Hi Ming, > > FWIW, to me this series looks reasonable. Thanks! > > So you have plans to post an updated "[PATCH 0/9] blk-mq/scsi: convert > private reply queue into blk_mq hw queue" then? V2 has been in the following tree for a while: https://github.com/ming1/linux/commits/v5.2-rc-host-tags-V2 It works, however the implementation is a bit ugly even though the idea is simple. So I think we may need to think of it further, for better implementation or approach. Thanks, Ming Lei