mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
virtio-blk: add SGI_IO passthru support
[had the qemu list address wrong the first time, reply to this message, not the previous if you were on Cc] Add support for SG_IO passthru (packet commands) to the virtio-blk backend. Conceptually based on an older patch from Hannes Reinecke but largely rewritten to match the code structure and layering in virtio-blk. Note that currently we issue the hose SG_IO synchronously. We could easily switch to async I/O, but that would required either bloating the VirtIOBlockReq by the size of struct sg_io_hdr or an additional memory allocation for each SG_IO request. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
451c4abd8c
commit
1063b8b15f
2 changed files with 128 additions and 7 deletions
|
@ -28,6 +28,9 @@
|
|||
#define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */
|
||||
#define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */
|
||||
#define VIRTIO_BLK_F_GEOMETRY 4 /* Indicates support of legacy geometry */
|
||||
#define VIRTIO_BLK_F_RO 5 /* Disk is read-only */
|
||||
#define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/
|
||||
#define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */
|
||||
|
||||
struct virtio_blk_config
|
||||
{
|
||||
|
@ -70,6 +73,15 @@ struct virtio_blk_inhdr
|
|||
unsigned char status;
|
||||
};
|
||||
|
||||
/* SCSI pass-through header */
|
||||
struct virtio_scsi_inhdr
|
||||
{
|
||||
uint32_t errors;
|
||||
uint32_t data_len;
|
||||
uint32_t sense_len;
|
||||
uint32_t residual;
|
||||
};
|
||||
|
||||
void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue