[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] vpc: unlock Coroutine lock to make IO submit Concur
From: |
Zhengui li |
Subject: |
[Qemu-devel] [PATCH] vpc: unlock Coroutine lock to make IO submit Concurrently |
Date: |
Fri, 15 Mar 2019 22:04:38 +0800 |
Concurrent IO becomes serial IO because of the qemu Coroutine lock,
which reduce IO performance severely.
So unlock Coroutine lock before bdrv_co_pwritev and
bdrv_co_preadv to fix it.
Signed-off-by: Zhengui li <address@hidden>
---
block/vpc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/block/vpc.c b/block/vpc.c
index 52ab717..1133855 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -639,8 +639,10 @@ vpc_co_preadv(BlockDriverState *bs, uint64_t offset,
uint64_t bytes,
qemu_iovec_reset(&local_qiov);
qemu_iovec_concat(&local_qiov, qiov, bytes_done, n_bytes);
+ qemu_co_mutex_unlock(&s->lock);
ret = bdrv_co_preadv(bs->file, image_offset, n_bytes,
&local_qiov, 0);
+ qemu_co_mutex_lock(&s->lock);
if (ret < 0) {
goto fail;
}
@@ -697,8 +699,10 @@ vpc_co_pwritev(BlockDriverState *bs, uint64_t offset,
uint64_t bytes,
qemu_iovec_reset(&local_qiov);
qemu_iovec_concat(&local_qiov, qiov, bytes_done, n_bytes);
+ qemu_co_mutex_unlock(&s->lock);
ret = bdrv_co_pwritev(bs->file, image_offset, n_bytes,
&local_qiov, 0);
+ qemu_co_mutex_lock(&s->lock);
if (ret < 0) {
goto fail;
}
--
2.7.2.windows.1
- [Qemu-devel] [PATCH] vpc: unlock Coroutine lock to make IO submit Concurrently,
Zhengui li <=