On Sat, Jul 15, 2017 at 07:15:56AM +0800, Ming Lei wrote: > stopping queue may cause race and may not stop the queue really > after the API returns, and we have improved quiescing > interface and it really can block dispatching once it returns. > > So switch to quiesce/unquiece like what we did on other drivers > (NVMe, NBD, mtip32xx, ...) > > The blk_mq_stop_hw_queues() and blk_mq_start_stopped_hw_queues() > used in blkif_queue_rq() and blkif_interrupt() are for congestion > control, we leave it as it is since it is safe for this usage. Again I yet don't understand the difference between those two, neither why start/stop is not fixed instead of introducing quiesce/unquiece. Not to mention that start/stop is not documented, which makes all this even more fun. Anyway I would like to ask, is the way to re-start a stopped queue the same way to unquiece? If not I would rather prefer that start/stop or quiece/unquiece is used exclusively, in order to not make the code even more complex. It seems fairly easy to mess up and call "start" on a "quiesced" queue (or the other way around). Roger.