Thread (30 messages) 30 messages, 6 authors, 2013-02-06

Re: [PATCH v2 1/5] virtio: add functions for piecewise addition of buffers

From: Paolo Bonzini <pbonzini@redhat.com>
Date: 2013-01-07 14:28:00
Also in: kvm, linux-scsi, lkml

Il 07/01/2013 01:02, Rusty Russell ha scritto:
Paolo Bonzini [off-list ref] writes:
quoted
Il 02/01/2013 06:03, Rusty Russell ha scritto:
quoted
Paolo Bonzini [off-list ref] writes:
quoted
The virtqueue_add_buf function has two limitations:

1) it requires the caller to provide all the buffers in a single call;

2) it does not support chained scatterlists: the buffers must be
provided as an array of struct scatterlist;
Chained scatterlists are a horrible interface, but that doesn't mean we
shouldn't support them if there's a need.

I think I once even had a patch which passed two chained sgs, rather
than a combo sg and two length numbers.  It's very old, but I've pasted
it below.

Duplicating the implementation by having another interface is pretty
nasty; I think I'd prefer the chained scatterlists, if that's optimal
for you.
Unfortunately, that cannot work because not all architectures support
chained scatterlists.
WHAT?  I can't figure out what an arch needs to do to support this?
It needs to use the iterator functions in its DMA driver.
All archs we care about support them, though, so I think we can ignore
this issue for now.
Kind of... In principle all QEMU-supported arches can use virtio, and
the speedup can be quite useful.  And there is no Kconfig symbol for SG
chains that I can use to disable virtio-scsi on unsupported arches. :/

Paolo
quoted
(Also, as you mention chained scatterlists are horrible.  They'd happen
to work for virtio-scsi, but not for virtio-blk where the response
status is part of the footer, not the header).
We lost that debate 5 years ago, so we hack around it as needed.  We can
add helpers to append if we need.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help