mirror of https://github.com/xemu-project/xemu.git
lsi: introduce lsi_request_free
Split the common bits of lsi_request_cancelled and lsi_command_complete out to a new function. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
2f0772c5b4
commit
d2a9998f88
|
@ -641,23 +641,24 @@ static lsi_request *lsi_find_by_tag(LSIState *s, uint32_t tag)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void lsi_request_free(LSIState *s, lsi_request *p)
|
||||||
|
{
|
||||||
|
if (p == s->current) {
|
||||||
|
s->current = NULL;
|
||||||
|
} else {
|
||||||
|
QTAILQ_REMOVE(&s->queue, p, next);
|
||||||
|
}
|
||||||
|
g_free(p);
|
||||||
|
}
|
||||||
|
|
||||||
static void lsi_request_cancelled(SCSIRequest *req)
|
static void lsi_request_cancelled(SCSIRequest *req)
|
||||||
{
|
{
|
||||||
LSIState *s = DO_UPCAST(LSIState, dev.qdev, req->bus->qbus.parent);
|
LSIState *s = DO_UPCAST(LSIState, dev.qdev, req->bus->qbus.parent);
|
||||||
lsi_request *p = req->hba_private;
|
lsi_request *p = req->hba_private;
|
||||||
|
|
||||||
if (s->current && req == s->current->req) {
|
req->hba_private = NULL;
|
||||||
scsi_req_unref(req);
|
lsi_request_free(s, p);
|
||||||
g_free(s->current);
|
scsi_req_unref(req);
|
||||||
s->current = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p) {
|
|
||||||
QTAILQ_REMOVE(&s->queue, p, next);
|
|
||||||
scsi_req_unref(req);
|
|
||||||
g_free(p);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Record that data is available for a queued command. Returns zero if
|
/* Record that data is available for a queued command. Returns zero if
|
||||||
|
@ -706,9 +707,9 @@ static void lsi_command_complete(SCSIRequest *req, uint32_t status, size_t resid
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->current && req == s->current->req) {
|
if (s->current && req == s->current->req) {
|
||||||
scsi_req_unref(s->current->req);
|
req->hba_private = NULL;
|
||||||
g_free(s->current);
|
lsi_request_free(s, s->current);
|
||||||
s->current = NULL;
|
scsi_req_unref(req);
|
||||||
}
|
}
|
||||||
lsi_resume_script(s);
|
lsi_resume_script(s);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue