On Wed, 7 Mar 2001, Peter T. Breuer wrote:
> "GCS wrote:"
> I would appreciate it if the patch were less invasive. Has this been
> done? Surely changing make_request's type is intrinsically a bad idea?
>
> I agree that the implementation is clever - setting the bh argument null
> signals the new make_request to use the remaining args, kiobuff and
> friends, instead, so only kiobuff-aware code will make use of it. But
> in that case why not write a separate function? The kernel has
> provisions for overwriting make_request _cleanly_.
Agreed. The current state of the code is a historical artifact of trying
to keep pace with the evolutions in ll_rw_block/__make_request() and
friends. Originally, we did have a separate make_kio_request() function.
The provision you mention came in later, at which point in time it was going
to be a _lot_ more effort to provide for lvm/md type of remapping in the
make_kio_request() version. A quicker/easier fix was to modify the
make_request() signature to handle kiobufs.
> And surely kiobuff + sector + count should be passed as a single
> struct?
Indeed. And that is in the works. Jens Axboe and Christoph Hellwig are fine
tuning their new I/O container which can handle both sector-based (a la
buffer-heads) and page-based (a la kiobufs) dma area info. So, as far
as the block-queueing layer is concerned it'll only have to deal with this
new I/O container. This _should_, in theory, obviate the need for a separate
buffer-head/kiobuf make_request() function altogether.
Perhaps they can provide more info....
> What are the issues with respect to buffer locking that I see vaguely
> referred to in the faq? I am running xfs atop raid1 atop a block
Could you be more specific (wrt. "vaguely referred to in the faq")?
> driver that talks to the net, and a local partition or logical volume. I
> was seeing lockups when the net driver ran against localhost (i.e. like
> a loopback device).
Hmmm....this may be a loopback device codepath issue. I'm not sure. Perhaps
someone else can comment on this..
Cheers,
-Chait.
|