On 3/31/19 11:09 AM, Ming Lei wrote: > Now freeing dispatch resource is moved to queue's release handler, > we don't need to worry about the race between blk_cleanup_queue and > run queue any more. > > So don't drain in-progress dispatch in blk_cleanup_queue(). Unless this direction is not followed, how about we mention that this is revert of prior two fixes (which are not required any longer) so that people working on backport would feel much more easier to track the issue. c2856ae2f315 ("blk-mq: quiesce queue before freeing queue") 1311326cf4755c7 ("blk-mq: avoid to synchronize rcu inside blk_cleanup_queue()") Thank you very much! Dongli Zhang > > Cc: James Smart <james.smart@xxxxxxxxxxxx> > Cc: Bart Van Assche <bart.vanassche@xxxxxxx> > Cc: linux-scsi@xxxxxxxxxxxxxxx, > Cc: Martin K . Petersen <martin.petersen@xxxxxxxxxx>, > Cc: Christoph Hellwig <hch@xxxxxx>, > Cc: James E . J . Bottomley <jejb@xxxxxxxxxxxxxxxxxx>, > Cc: jianchao wang <jianchao.w.wang@xxxxxxxxxx> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > block/blk-core.c | 12 ------------ > 1 file changed, 12 deletions(-) > > diff --git a/block/blk-core.c b/block/blk-core.c > index b3bbf8a5110d..491dc0295778 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -347,18 +347,6 @@ void blk_cleanup_queue(struct request_queue *q) > > blk_queue_flag_set(QUEUE_FLAG_DEAD, q); > > - /* > - * make sure all in-progress dispatch are completed because > - * blk_freeze_queue() can only complete all requests, and > - * dispatch may still be in-progress since we dispatch requests > - * from more than one contexts. > - * > - * We rely on driver to deal with the race in case that queue > - * initialization isn't done. > - */ > - if (queue_is_mq(q) && blk_queue_init_done(q)) > - blk_mq_quiesce_queue(q); > - > /* for synchronous bio-based driver finish in-flight integrity i/o */ > blk_flush_integrity(); > >