[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] block/iscsi: Use lock guards
From: |
G S Niteesh Babu |
Subject: |
[PATCH] block/iscsi: Use lock guards |
Date: |
Sun, 7 Feb 2021 12:03:04 +0530 |
---
block/iscsi.c | 37 ++++++++++++-------------------------
1 file changed, 12 insertions(+), 25 deletions(-)
diff --git a/block/iscsi.c b/block/iscsi.c
index 4d2a416ce7..4f7abc665a 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -48,6 +48,7 @@
#include "crypto/secret.h"
#include "scsi/utils.h"
#include "trace.h"
+#include "qemu/lockable.h"
/* Conflict between scsi/utils.h and libiscsi! :( */
#define SCSI_XFER_NONE ISCSI_XFER_NONE
@@ -399,10 +400,9 @@ iscsi_process_read(void *arg)
IscsiLun *iscsilun = arg;
struct iscsi_context *iscsi = iscsilun->iscsi;
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
iscsi_service(iscsi, POLLIN);
iscsi_set_events(iscsilun);
- qemu_mutex_unlock(&iscsilun->mutex);
}
static void
@@ -411,10 +411,9 @@ iscsi_process_write(void *arg)
IscsiLun *iscsilun = arg;
struct iscsi_context *iscsi = iscsilun->iscsi;
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
iscsi_service(iscsi, POLLOUT);
iscsi_set_events(iscsilun);
- qemu_mutex_unlock(&iscsilun->mutex);
}
static int64_t sector_lun2qemu(int64_t sector, IscsiLun *iscsilun)
@@ -623,7 +622,7 @@ iscsi_co_writev(BlockDriverState *bs, int64_t sector_num,
int nb_sectors,
lba = sector_qemu2lun(sector_num, iscsilun);
num_sectors = sector_qemu2lun(nb_sectors, iscsilun);
iscsi_co_init_iscsitask(iscsilun, &iTask);
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
retry:
if (iscsilun->use_16_for_rw) {
#if LIBISCSI_API_VERSION >= (20160603)
@@ -652,7 +651,6 @@ retry:
}
#endif
if (iTask.task == NULL) {
- qemu_mutex_unlock(&iscsilun->mutex);
return -ENOMEM;
}
#if LIBISCSI_API_VERSION < (20160603)
@@ -684,7 +682,6 @@ retry:
nb_sectors * BDRV_SECTOR_SIZE);
out_unlock:
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
return r;
}
@@ -723,7 +720,7 @@ static int coroutine_fn
iscsi_co_block_status(BlockDriverState *bs,
lba = offset / iscsilun->block_size;
max_bytes = (iscsilun->num_blocks - lba) * iscsilun->block_size;
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
retry:
if (iscsi_get_lba_status_task(iscsilun->iscsi, iscsilun->lun,
lba, 8 + 16, iscsi_co_generic_cb,
@@ -785,7 +782,6 @@ retry:
*pnum = bytes;
}
out_unlock:
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
out:
if (iTask.task != NULL) {
@@ -858,7 +854,7 @@ static int coroutine_fn iscsi_co_readv(BlockDriverState *bs,
num_sectors = sector_qemu2lun(nb_sectors, iscsilun);
iscsi_co_init_iscsitask(iscsilun, &iTask);
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
retry:
if (iscsilun->use_16_for_rw) {
#if LIBISCSI_API_VERSION >= (20160603)
@@ -889,7 +885,6 @@ retry:
}
#endif
if (iTask.task == NULL) {
- qemu_mutex_unlock(&iscsilun->mutex);
return -ENOMEM;
}
#if LIBISCSI_API_VERSION < (20160603)
@@ -913,7 +908,6 @@ retry:
r = iTask.err_code;
}
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
return r;
}
@@ -925,11 +919,10 @@ static int coroutine_fn iscsi_co_flush(BlockDriverState
*bs)
int r = 0;
iscsi_co_init_iscsitask(iscsilun, &iTask);
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
retry:
if (iscsi_synchronizecache10_task(iscsilun->iscsi, iscsilun->lun, 0, 0, 0,
0, iscsi_co_generic_cb, &iTask) == NULL)
{
- qemu_mutex_unlock(&iscsilun->mutex);
return -ENOMEM;
}
@@ -950,7 +943,6 @@ retry:
r = iTask.err_code;
}
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
return r;
}
@@ -1085,7 +1077,8 @@ static BlockAIOCB *iscsi_aio_ioctl(BlockDriverState *bs,
acb->task->expxferlen = acb->ioh->dxfer_len;
data.size = 0;
- qemu_mutex_lock(&iscsilun->mutex);
+
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
if (acb->task->xfer_dir == SCSI_XFER_WRITE) {
if (acb->ioh->iovec_count == 0) {
data.data = acb->ioh->dxferp;
@@ -1101,7 +1094,6 @@ static BlockAIOCB *iscsi_aio_ioctl(BlockDriverState *bs,
iscsi_aio_ioctl_cb,
(data.size > 0) ? &data : NULL,
acb) != 0) {
- qemu_mutex_unlock(&iscsilun->mutex);
scsi_free_scsi_task(acb->task);
qemu_aio_unref(acb);
return NULL;
@@ -1121,7 +1113,6 @@ static BlockAIOCB *iscsi_aio_ioctl(BlockDriverState *bs,
}
iscsi_set_events(iscsilun);
- qemu_mutex_unlock(&iscsilun->mutex);
return &acb->common;
}
@@ -1161,7 +1152,7 @@ coroutine_fn iscsi_co_pdiscard(BlockDriverState *bs,
int64_t offset, int bytes)
list.num = bytes / iscsilun->block_size;
iscsi_co_init_iscsitask(iscsilun, &iTask);
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
retry:
if (iscsi_unmap_task(iscsilun->iscsi, iscsilun->lun, 0, 0, &list, 1,
iscsi_co_generic_cb, &iTask) == NULL) {
@@ -1198,7 +1189,6 @@ retry:
}
out_unlock:
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
return r;
}
@@ -1246,7 +1236,7 @@ coroutine_fn iscsi_co_pwrite_zeroes(BlockDriverState *bs,
int64_t offset,
}
}
- qemu_mutex_lock(&iscsilun->mutex);
+ QEMU_LOCK_GUARD(&iscsilun->mutex);
iscsi_co_init_iscsitask(iscsilun, &iTask);
retry:
if (use_16_for_ws) {
@@ -1261,7 +1251,6 @@ retry:
0, 0, iscsi_co_generic_cb, &iTask);
}
if (iTask.task == NULL) {
- qemu_mutex_unlock(&iscsilun->mutex);
return -ENOMEM;
}
@@ -1303,7 +1292,6 @@ retry:
}
out_unlock:
- qemu_mutex_unlock(&iscsilun->mutex);
g_free(iTask.err_str);
return r;
}
@@ -2358,7 +2346,7 @@ static int coroutine_fn
iscsi_co_copy_range_to(BlockDriverState *bs,
iscsi_co_init_iscsitask(dst_lun, &iscsi_task);
- qemu_mutex_lock(&dst_lun->mutex);
+ QEMU_LOCK_GUARD(&dst_lun->mutex);
iscsi_task.task = iscsi_xcopy_task(data.size);
retry:
if (iscsi_scsi_command_async(dst_lun->iscsi, dst_lun->lun,
@@ -2385,7 +2373,6 @@ out_unlock:
trace_iscsi_xcopy(src_lun, src_offset, dst_lun, dst_offset, bytes, r);
g_free(iscsi_task.task);
- qemu_mutex_unlock(&dst_lun->mutex);
g_free(iscsi_task.err_str);
return r;
}
--
2.17.1
- [PATCH] block/iscsi: Use lock guards,
G S Niteesh Babu <=