[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 08/15] qed: introduce bdrv_qed_init_state
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PULL 08/15] qed: introduce bdrv_qed_init_state |
Date: |
Mon, 17 Jul 2017 11:48:18 +0800 |
From: Paolo Bonzini <address@hidden>
This will be used in the next patch, which will call bdrv_qed_do_open
with a CoMutex taken. bdrv_qed_init_state provides a nice place to
initialize it.
Signed-off-by: Paolo Bonzini <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
---
block/qed.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/block/qed.c b/block/qed.c
index 6625320..adcc5c9 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -363,6 +363,15 @@ static void coroutine_fn
bdrv_qed_co_drain(BlockDriverState *bs)
}
}
+static void bdrv_qed_init_state(BlockDriverState *bs)
+{
+ BDRVQEDState *s = bs->opaque;
+
+ memset(s, 0, sizeof(BDRVQEDState));
+ s->bs = bs;
+ qemu_co_queue_init(&s->allocating_write_reqs);
+}
+
static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags,
Error **errp)
{
@@ -371,9 +380,6 @@ static int bdrv_qed_do_open(BlockDriverState *bs, QDict
*options, int flags,
int64_t file_size;
int ret;
- s->bs = bs;
- qemu_co_queue_init(&s->allocating_write_reqs);
-
ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header));
if (ret < 0) {
return ret;
@@ -507,6 +513,7 @@ static int bdrv_qed_open(BlockDriverState *bs, QDict
*options, int flags,
return -EINVAL;
}
+ bdrv_qed_init_state(bs);
return bdrv_qed_do_open(bs, options, flags, errp);
}
@@ -1462,13 +1469,12 @@ static int
bdrv_qed_change_backing_file(BlockDriverState *bs,
static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp)
{
- BDRVQEDState *s = bs->opaque;
Error *local_err = NULL;
int ret;
bdrv_qed_close(bs);
- memset(s, 0, sizeof(BDRVQEDState));
+ bdrv_qed_init_state(bs);
ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err);
if (local_err) {
error_propagate(errp, local_err);
--
2.9.4
- [Qemu-devel] [PULL 00/15] Block and testing patches, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 01/15] qcow2: call CoQueue APIs under CoMutex, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 02/15] coroutine-lock: add qemu_co_rwlock_downgrade and qemu_co_rwlock_upgrade, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 03/15] vdi: make it thread-safe, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 04/15] vpc: make it thread-safe, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 05/15] vvfat: make it thread-safe, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 06/15] qed: move tail of qed_aio_write_main to qed_aio_write_{cow, alloc}, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 08/15] qed: introduce bdrv_qed_init_state,
Fam Zheng <=
- [Qemu-devel] [PULL 07/15] block: invoke .bdrv_drain callback in coroutine context and from AioContext, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 09/15] qed: protect table cache with CoMutex, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 12/15] docker: Don't enable networking as a side-effect of DEBUG=1, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 13/15] docker.py: Drop infile parameter, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 11/15] ssh: support I/O from any AioContext, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 10/15] sheepdog: add queue_lock, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 14/15] docker.py: Improve subprocess exit code handling, Fam Zheng, 2017/07/16
- [Qemu-devel] [PULL 15/15] travis: add no-TCG build, Fam Zheng, 2017/07/16
- Re: [Qemu-devel] [PULL 00/15] Block and testing patches, Peter Maydell, 2017/07/17