[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/32] lsi: introduce lsi_request_free
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 04/32] lsi: introduce lsi_request_free |
Date: |
Fri, 27 Jul 2012 17:02:31 +0200 |
Split the common bits of lsi_request_cancelled and lsi_command_complete
out to a new function.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/lsi53c895a.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
index f04cc68..078ab6d 100644
--- a/hw/lsi53c895a.c
+++ b/hw/lsi53c895a.c
@@ -641,23 +641,24 @@ static lsi_request *lsi_find_by_tag(LSIState *s, uint32_t
tag)
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)
{
LSIState *s = DO_UPCAST(LSIState, dev.qdev, req->bus->qbus.parent);
lsi_request *p = req->hba_private;
- if (s->current && req == s->current->req) {
- scsi_req_unref(req);
- g_free(s->current);
- s->current = NULL;
- return;
- }
-
- if (p) {
- QTAILQ_REMOVE(&s->queue, p, next);
- scsi_req_unref(req);
- g_free(p);
- }
+ req->hba_private = NULL;
+ lsi_request_free(s, p);
+ scsi_req_unref(req);
}
/* 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) {
- scsi_req_unref(s->current->req);
- g_free(s->current);
- s->current = NULL;
+ req->hba_private = NULL;
+ lsi_request_free(s, s->current);
+ scsi_req_unref(req);
}
lsi_resume_script(s);
}
--
1.7.10.4
- [Qemu-devel] [PULL 00/32] SCSI patches for 2012-08-27, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 03/32] lsi: use qdev_reset_all, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 02/32] megasas: fix misuse of scsi_req_abort, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 01/32] megasas: Replace trace_megasas_dcmd_dump_frame(), Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 05/32] lsi: avoid redundant tests of s->current != NULL, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 06/32] scsi-block: remove properties that are not relevant for passthrough, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 04/32] lsi: introduce lsi_request_free,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 09/32] scsi-disk: make discard asynchronous, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 07/32] cutils: add strpadcpy(), Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 10/32] scsi-disk: move all non-DMA commands to scsi_disk_emulate_command, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 11/32] scsi-disk: split scsi-disk reqops, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 13/32] scsi-disk: support emulated TO_DEV requests, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 08/32] scsi-disk: let the user customize vendor and product name, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 14/32] scsi-disk: adjust offsets in MODE SENSE by 2, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 17/32] scsi-disk: support toggling the write cache, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 23/32] scsi: introduce hotplug() and hot_unplug() interfaces for SCSI bus, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 24/32] scsi: establish precedence levels for unit attention, Paolo Bonzini, 2012/07/27