Re: [PATCH] blk-mq: introduce REQ_COMPLETE_WQ and add a workqueue to complete the request

From: liu xiang
Date: Thu Jan 21 2021 - 02:36:19 EST


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.