Yeah this annoys me too...
> What I would like is to have a
>
> struct blk_dev {
> make_request_fn *make_request_fn;
> unplug_fn *unplug_fn;
> struct list_head plug_list;
> unsigned long queue_flags;
> spinlock_t *queue_lock;
> }
>
> which I can embed in mddev_s and umem card, and you can embed in
> struct request_queue.
To some extent, I agree with you. However, I'm not sure it's worth it
abstracting this bit out. The size of the request queue right now in
2.5.20 (with plug change) is 196 bytes on i386 SMP. If you really feel
it's worth saving these bytes, then I'd much rather go in a different
direction: only keep the "main" elements of request_queue_t, and have
blk_init_queue() alloc the "remainder"
> In ll_rw_blk.c we change blk_plug_device to avoid the check for
> the queue being empty as this may not be well define for
> umem/raid5. Instead, blk_plug_device is not called when
> the queue is not empty (which is mostly wasn' anyway).
I left it that way on purpose, and yes I did see you changed that in the
previous patch as well. I think it's a bit of a mess to have both
blk_plug_device and blk_plug_queue. Without looking at it, I have no
idea which does what?! blk_queue_empty() will always be true for
make_request_fn type drivers, so no change is necessary there.
-- Jens Axboe- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/