Paolo Bonzini [off-list ref] writes:
Il 05/10/2012 07:43, Rusty Russell ha scritto:
quoted
That's good. But virtio_blk's scsi command is insoluble AFAICT. As I
said to Anthony, the best rules are "always" and "never", so I'd really
rather not have to grandfather that in.
It is, but we can add a rule that if the (transport) flag
VIRTIO_RING_F_ANY_HEADER_SG is set, the cdb field is always 32 bytes in
virtio-blk.
Could we do that? It's the cmd length I'm concerned about; is it always
32 in practice for some reason?
Currently qemu does:
struct sg_io_hdr hdr;
memset(&hdr, 0, sizeof(struct sg_io_hdr));
hdr.interface_id = 'S';
hdr.cmd_len = req->elem.out_sg[1].iov_len;
hdr.cmdp = req->elem.out_sg[1].iov_base;
hdr.dxfer_len = 0;
If it's a command which expects more output data, there's no way to
guess where the boundary is between that command and the data.
Cheers,
Rusty.