qed: introduce bdrv_qed_init_state
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 <pbonzini@redhat.com> Message-Id: <20170629132749.997-9-pbonzini@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com>
This commit is contained in:
parent
61124f03ab
commit
61c7887e0f
16
block/qed.c
16
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,
|
static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
@ -371,9 +380,6 @@ static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags,
|
|||||||
int64_t file_size;
|
int64_t file_size;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
s->bs = bs;
|
|
||||||
qemu_co_queue_init(&s->allocating_write_reqs);
|
|
||||||
|
|
||||||
ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header));
|
ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
@ -507,6 +513,7 @@ static int bdrv_qed_open(BlockDriverState *bs, QDict *options, int flags,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bdrv_qed_init_state(bs);
|
||||||
return bdrv_qed_do_open(bs, options, flags, errp);
|
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)
|
static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp)
|
||||||
{
|
{
|
||||||
BDRVQEDState *s = bs->opaque;
|
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
bdrv_qed_close(bs);
|
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);
|
ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user