Re: [dm-devel] [PATCH 05/10] block: remove per-queue plugging
From: Jens Axboe <hidden>
Date: 2011-04-18 09:47:47
Also in:
dm-devel, lkml
On 2011-04-18 11:40, Hannes Reinecke wrote:
On 04/18/2011 11:19 AM, hch@infradead.org wrote:quoted
Btw, I really start to wonder if the request level is the right place to do this on-stack plugging. Wouldn't it be better to just plug bios in the on-stack queue? That way we could also stop doing the special case merging when adding to the plug list, and leave all the merging / I/O schedule logic in the __make_request path. Probably not .39 material, but worth a prototype? Also what this dicussion brought up is that the block layer data structures are highly confusing. Using a small subset of the request_queue also for make_request based driver just doesn't make sense. It seems like we should try to migrate the required state to struct gendisk, and submit I/O through a block_device_ops.submit method, leaving the request_queue as an internal abstraction for the request based drivers.Good point. It would also help us we the device-mapper redesign agk and myself discussed at LSF. Having a block_device_ops.submit function would allow us remap the actual request queue generically; and we would even be able to address more than one request queue, which sounds awfully similar to what Jens is trying to do ...
The multiqueue bits would still have one request_queue, but multiple queueing structures (I called those blk_queue_ctx, iirc). -- Jens Axboe