Message ID | 20120224075437.GA6937@localhost.localdomain |
---|---|
State | New |
Headers | show |
On 02/24/2012 08:54 AM, Hu Tao wrote:
> should be req->req.tmf->lun here and elsewhere in this function?
Yes, good catch!
Paolo
On 02/24/2012 08:54 AM, Hu Tao wrote: > diff --git a/hw/virtio-scsi.c b/hw/virtio-scsi.c > index 380073a..1f3b851 100644 > --- a/hw/virtio-scsi.c > +++ b/hw/virtio-scsi.c > @@ -239,7 +239,7 @@ static VirtIOSCSIReq *virtio_scsi_pop_req(VirtIOSCSI *s, VirtQueue *vq) > > static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) > { > - SCSIDevice *d = virtio_scsi_device_find(s, req->req.cmd->lun); > + SCSIDevice *d = virtio_scsi_device_find(s, req->req.tmf->lun); > SCSIRequest *r, *next; > DeviceState *qdev; > int target; > @@ -253,11 +253,11 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) > if (!d) { > goto fail; > } > - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { > + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { > goto incorrect_lun; > } > QTAILQ_FOREACH_SAFE(r, &d->requests, next, next) { > - if (r->tag == req->req.cmd->tag) { > + if (r->tag == req->req.tmf->tag) { > break; > } > } > @@ -277,7 +277,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) > if (!d) { > goto fail; > } > - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { > + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { > goto incorrect_lun; > } > s->resetting++; > @@ -291,7 +291,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) > if (!d) { > goto fail; > } > - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { > + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { > goto incorrect_lun; > } > QTAILQ_FOREACH_SAFE(r, &d->requests, next, next) { > @@ -310,7 +310,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) > break; > > case VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET: > - target = req->req.cmd->lun[1]; > + target = req->req.tmf->lun[1]; > s->resetting++; > QTAILQ_FOREACH(qdev, &s->bus.qbus.children, sibling) { > d = DO_UPCAST(SCSIDevice, qdev, qdev); This is now fixed on github. Paolo
diff --git a/hw/virtio-scsi.c b/hw/virtio-scsi.c index 380073a..1f3b851 100644 --- a/hw/virtio-scsi.c +++ b/hw/virtio-scsi.c @@ -239,7 +239,7 @@ static VirtIOSCSIReq *virtio_scsi_pop_req(VirtIOSCSI *s, VirtQueue *vq) static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) { - SCSIDevice *d = virtio_scsi_device_find(s, req->req.cmd->lun); + SCSIDevice *d = virtio_scsi_device_find(s, req->req.tmf->lun); SCSIRequest *r, *next; DeviceState *qdev; int target; @@ -253,11 +253,11 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) if (!d) { goto fail; } - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { goto incorrect_lun; } QTAILQ_FOREACH_SAFE(r, &d->requests, next, next) { - if (r->tag == req->req.cmd->tag) { + if (r->tag == req->req.tmf->tag) { break; } } @@ -277,7 +277,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) if (!d) { goto fail; } - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { goto incorrect_lun; } s->resetting++; @@ -291,7 +291,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) if (!d) { goto fail; } - if (d->lun != virtio_scsi_get_lun(req->req.cmd->lun)) { + if (d->lun != virtio_scsi_get_lun(req->req.tmf->lun)) { goto incorrect_lun; } QTAILQ_FOREACH_SAFE(r, &d->requests, next, next) { @@ -310,7 +310,7 @@ static void virtio_scsi_do_tmf(VirtIOSCSI *s, VirtIOSCSIReq *req) break; case VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET: - target = req->req.cmd->lun[1]; + target = req->req.tmf->lun[1]; s->resetting++; QTAILQ_FOREACH(qdev, &s->bus.qbus.children, sibling) { d = DO_UPCAST(SCSIDevice, qdev, qdev);