On 08/15/2014 10:36 AM, Jens Axboe wrote: > On 08/15/2014 10:31 AM, Christoph Hellwig wrote: >>> +static void loop_queue_work(struct work_struct *work) >> >> Offloading work straight to a workqueue dosn't make much sense >> in the blk-mq model as we'll usually be called from one. If you >> need to avoid the cases where we are called directly a flag for >> the blk-mq code to always schedule a workqueue sounds like a much >> better plan. > > That's a good point - would clean up this bit, and be pretty close to a > one-liner to support in blk-mq for the drivers that always need blocking > context. Something like this should do the trick - totally untested. But with that, loop would just need to add BLK_MQ_F_WQ_CONTEXT to it's tag set flags and it could always do the work inline from ->queue_rq(). -- Jens Axboe