aboutsummaryrefslogtreecommitdiff
path: root/block/iscsi.c
diff options
context:
space:
mode:
authorGan Qixin <ganqixin@huawei.com>2020-12-03 15:50:55 +0800
committerKevin Wolf <kwolf@redhat.com>2020-12-11 17:52:39 +0100
commitc208b0ef968b108440b01a319b3699f1d330fbb1 (patch)
tree7672b1ddd4353f554b3a06a118f2d78a8f2c9e4d /block/iscsi.c
parent3af613ebdb32453469018e5431452ce9a53ea69c (diff)
downloadqemu-c208b0ef968b108440b01a319b3699f1d330fbb1.zip
qemu-c208b0ef968b108440b01a319b3699f1d330fbb1.tar.gz
qemu-c208b0ef968b108440b01a319b3699f1d330fbb1.tar.bz2
block/iscsi: Use lock guard macros
Replace manual lock()/unlock() calls with lock guard macros (QEMU_LOCK_GUARD/WITH_QEMU_LOCK_GUARD) in block/iscsi. Signed-off-by: Gan Qixin <ganqixin@huawei.com> Message-Id: <20201203075055.127773-5-ganqixin@huawei.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/iscsi.c')
-rw-r--r--block/iscsi.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/block/iscsi.c b/block/iscsi.c
index e30a7e3..7d4b3b5 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -322,25 +322,23 @@ iscsi_aio_cancel(BlockAIOCB *blockacb)
IscsiAIOCB *acb = (IscsiAIOCB *)blockacb;
IscsiLun *iscsilun = acb->iscsilun;
- qemu_mutex_lock(&iscsilun->mutex);
+ WITH_QEMU_LOCK_GUARD(&iscsilun->mutex) {
- /* If it was cancelled or completed already, our work is done here */
- if (acb->cancelled || acb->status != -EINPROGRESS) {
- qemu_mutex_unlock(&iscsilun->mutex);
- return;
- }
+ /* If it was cancelled or completed already, our work is done here */
+ if (acb->cancelled || acb->status != -EINPROGRESS) {
+ return;
+ }
- acb->cancelled = true;
+ acb->cancelled = true;
- qemu_aio_ref(acb); /* released in iscsi_abort_task_cb() */
+ qemu_aio_ref(acb); /* released in iscsi_abort_task_cb() */
- /* send a task mgmt call to the target to cancel the task on the target */
- if (iscsi_task_mgmt_abort_task_async(iscsilun->iscsi, acb->task,
- iscsi_abort_task_cb, acb) < 0) {
- qemu_aio_unref(acb); /* since iscsi_abort_task_cb() won't be called */
+ /* send a task mgmt call to the target to cancel the task on the target */
+ if (iscsi_task_mgmt_abort_task_async(iscsilun->iscsi, acb->task,
+ iscsi_abort_task_cb, acb) < 0) {
+ qemu_aio_unref(acb); /* since iscsi_abort_task_cb() won't be called */
+ }
}
-
- qemu_mutex_unlock(&iscsilun->mutex);
}
static const AIOCBInfo iscsi_aiocb_info = {
@@ -375,22 +373,22 @@ static void iscsi_timed_check_events(void *opaque)
{
IscsiLun *iscsilun = opaque;
- qemu_mutex_lock(&iscsilun->mutex);
+ WITH_QEMU_LOCK_GUARD(&iscsilun->mutex) {
+ /* check for timed out requests */
+ iscsi_service(iscsilun->iscsi, 0);
- /* check for timed out requests */
- iscsi_service(iscsilun->iscsi, 0);
+ if (iscsilun->request_timed_out) {
+ iscsilun->request_timed_out = false;
+ iscsi_reconnect(iscsilun->iscsi);
+ }
- if (iscsilun->request_timed_out) {
- iscsilun->request_timed_out = false;
- iscsi_reconnect(iscsilun->iscsi);
+ /*
+ * newer versions of libiscsi may return zero events. Ensure we are
+ * able to return to service once this situation changes.
+ */
+ iscsi_set_events(iscsilun);
}
- /* newer versions of libiscsi may return zero events. Ensure we are able
- * to return to service once this situation changes. */
- iscsi_set_events(iscsilun);
-
- qemu_mutex_unlock(&iscsilun->mutex);
-
timer_mod(iscsilun->event_timer,
qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + EVENT_INTERVAL);
}