scsi: move status to SCSIRequest.

Also add and use the scsi_req_complete() helper function for calling the
completion callback.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Gerd Hoffmann 2009-11-26 15:34:00 +01:00 committed by Anthony Liguori
parent 251882b7e4
commit ed3a34a3c8
4 changed files with 27 additions and 15 deletions

View file

@ -84,16 +84,19 @@ static SCSIDiskReq *scsi_find_request(SCSIDiskState *s, uint32_t tag)
return DO_UPCAST(SCSIDiskReq, req, scsi_req_find(&s->qdev, tag));
}
static void scsi_req_set_status(SCSIRequest *req, int status, int sense_code)
{
req->status = status;
scsi_dev_set_sense(req->dev, sense_code);
}
/* Helper function for command completion. */
static void scsi_command_complete(SCSIDiskReq *r, int status, int sense)
{
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, r->req.dev);
uint32_t tag;
DPRINTF("Command complete tag=0x%x status=%d sense=%d\n",
r->req.tag, status, sense);
scsi_dev_set_sense(&s->qdev, sense);
tag = r->req.tag;
r->req.bus->complete(r->req.bus, SCSI_REASON_DONE, tag, status);
scsi_req_set_status(&r->req, status, sense);
scsi_req_complete(&r->req);
scsi_remove_request(r);
}