diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2009-11-26 15:33:59 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-12-03 09:41:37 -0600 |
commit | 251882b7e4532cb42fca89412bb6670dcec4158f (patch) | |
tree | 5166a91844ca24fba4384c45be8f7c0b21d94f11 /hw/scsi-generic.c | |
parent | 37659e510483fd8758424356b76209124ccfd98c (diff) |
scsi: move dinfo to SCSIDevice
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/scsi-generic.c')
-rw-r--r-- | hw/scsi-generic.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/hw/scsi-generic.c b/hw/scsi-generic.c index e81facc7b6..31bd0669f5 100644 --- a/hw/scsi-generic.c +++ b/hw/scsi-generic.c @@ -58,7 +58,6 @@ typedef struct SCSIGenericReq { struct SCSIGenericState { SCSIDevice qdev; - DriveInfo *dinfo; int lun; int driver_status; uint8_t sensebuf[SCSI_SENSE_BUF_SIZE]; @@ -215,7 +214,7 @@ static void scsi_read_data(SCSIDevice *d, uint32_t tag) return; } - ret = execute_command(s->dinfo->bdrv, r, SG_DXFER_FROM_DEV, scsi_read_complete); + ret = execute_command(s->qdev.dinfo->bdrv, r, SG_DXFER_FROM_DEV, scsi_read_complete); if (ret == -1) { scsi_command_complete(r, -EINVAL); return; @@ -266,7 +265,7 @@ static int scsi_write_data(SCSIDevice *d, uint32_t tag) return 0; } - ret = execute_command(s->dinfo->bdrv, r, SG_DXFER_TO_DEV, scsi_write_complete); + ret = execute_command(s->qdev.dinfo->bdrv, r, SG_DXFER_TO_DEV, scsi_write_complete); if (ret == -1) { scsi_command_complete(r, -EINVAL); return 1; @@ -360,7 +359,7 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag, qemu_free(r->buf); r->buflen = 0; r->buf = NULL; - ret = execute_command(s->dinfo->bdrv, r, SG_DXFER_NONE, scsi_command_complete); + ret = execute_command(s->qdev.dinfo->bdrv, r, SG_DXFER_NONE, scsi_command_complete); if (ret == -1) { scsi_command_complete(r, -EINVAL); return 0; @@ -455,7 +454,7 @@ static void scsi_destroy(SCSIDevice *d) r = DO_UPCAST(SCSIGenericReq, req, QTAILQ_FIRST(&s->qdev.requests)); scsi_remove_request(r); } - drive_uninit(s->dinfo); + drive_uninit(s->qdev.dinfo); } static int scsi_generic_initfn(SCSIDevice *dev) @@ -464,26 +463,26 @@ static int scsi_generic_initfn(SCSIDevice *dev) int sg_version; struct sg_scsi_id scsiid; - if (!s->dinfo || !s->dinfo->bdrv) { + if (!s->qdev.dinfo || !s->qdev.dinfo->bdrv) { qemu_error("scsi-generic: drive property not set\n"); return -1; } /* check we are really using a /dev/sg* file */ - if (!bdrv_is_sg(s->dinfo->bdrv)) { + if (!bdrv_is_sg(s->qdev.dinfo->bdrv)) { qemu_error("scsi-generic: not /dev/sg*\n"); return -1; } /* check we are using a driver managing SG_IO (version 3 and after */ - if (bdrv_ioctl(s->dinfo->bdrv, SG_GET_VERSION_NUM, &sg_version) < 0 || + if (bdrv_ioctl(s->qdev.dinfo->bdrv, SG_GET_VERSION_NUM, &sg_version) < 0 || sg_version < 30000) { qemu_error("scsi-generic: scsi generic interface too old\n"); return -1; } /* get LUN of the /dev/sg? */ - if (bdrv_ioctl(s->dinfo->bdrv, SG_GET_SCSI_ID, &scsiid)) { + if (bdrv_ioctl(s->qdev.dinfo->bdrv, SG_GET_SCSI_ID, &scsiid)) { qemu_error("scsi-generic: SG_GET_SCSI_ID ioctl failed\n"); return -1; } @@ -494,11 +493,11 @@ static int scsi_generic_initfn(SCSIDevice *dev) s->qdev.type = scsiid.scsi_type; DPRINTF("device type %d\n", s->qdev.type); if (s->qdev.type == TYPE_TAPE) { - s->qdev.blocksize = get_stream_blocksize(s->dinfo->bdrv); + s->qdev.blocksize = get_stream_blocksize(s->qdev.dinfo->bdrv); if (s->qdev.blocksize == -1) s->qdev.blocksize = 0; } else { - s->qdev.blocksize = get_blocksize(s->dinfo->bdrv); + s->qdev.blocksize = get_blocksize(s->qdev.dinfo->bdrv); /* removable media returns 0 if not present */ if (s->qdev.blocksize <= 0) { if (s->qdev.type == TYPE_ROM || s->qdev.type == TYPE_WORM) @@ -525,7 +524,7 @@ static SCSIDeviceInfo scsi_generic_info = { .cancel_io = scsi_cancel_io, .get_buf = scsi_get_buf, .qdev.props = (Property[]) { - DEFINE_PROP_DRIVE("drive", SCSIGenericState, dinfo), + DEFINE_PROP_DRIVE("drive", SCSIGenericState, qdev.dinfo), DEFINE_PROP_END_OF_LIST(), }, }; |