On 04/13/2012 09:50 AM, Stefan Hajnoczi wrote:> The virtio specification says:
>
> "The descriptors used for a buffer should not effect the semantics
> of the message,
> except for the total length of the buffer"
>
> and
>
> "In particular, no implementation should use the descriptor boundaries
> to determine the size of any header in a request"
This was the noble intention but all of the implementations actually rely on
boundary sizes.
Both QEMU and lguest rely on boundary sizes. We've removed some of it in
virtio-net in QEMU but it still looks like it's there for virtio-blk.
kvm tool also makes this assumption.
> Why should descriptor layout not be specified?
>
> It seems that implementing arbitrary descriptor layout support (e.g.
> 1-byte descriptors) requires more code and makes input validation
> harder.
>
> Why bother with the flexibility of unspecified descriptor layouts? As
> long as the layout is specified clearly it makes everyone's lives
> easier to use a strict descriptor layout.
I hate to just change the spec here but I don't see a better option.
Regards,
Anthony Liguori
>
> The only reason I can think of is that virtio should work over
> transports that do not have the concept of "descriptors"
(non-vring
> transports like pipes or streams).
>
> Stefan
>