On Wed, Jan 20, 2021 at 10:15:22AM +0800, Liu Xiang wrote: > The commit "40d09b53bfc557af7481b9d80f060a7ac9c7d314" has solved the > irqsoff problem by completing the request in softirq. But it may cause > the system to suffer bad preemptoff time. > Introduce the REQ_COMPLETE_WQ flag and blk_complete workqueue. > This flag makes the request to be completed in the blk_complete workqueue. > It can be used for requests that want to cut down both irqsoff and > preemptoff time. In addition to bloating the request_queue and introducing the completion fast path this seems to lack an actual user. I have tested mmc and virtio_blk drivers. They both have preemptoff problem. The mmc driver has its own complete workqueue. But it can not work well now. I think it is better to complete request directly with REQ_HIPRI flag. The virtio_blk driver can use REQ_COMPLETE_WQ flag to avoid preemptoff problem.