Message ID | 20221103134206.4041928-8-eesposit@redhat.com |
---|---|
State | New |
Headers | show |
Series | Still more coroutine and various fixes in block layer | expand |
On 11/3/22 14:42, Emanuele Giuseppe Esposito wrote: > It is always called in coroutine_fn callbacks, therefore > it can directly call bdrv_co_create(). > > Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> > --- > block.c | 6 ++++-- > include/block/block-global-state.h | 3 ++- > 2 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/block.c b/block.c > index eeb7a02aa2..e5e70acf15 100644 > --- a/block.c > +++ b/block.c > @@ -527,6 +527,7 @@ static int coroutine_fn bdrv_co_create(BlockDriver *drv, const char *filename, > { > int ret; > GLOBAL_STATE_CODE(); > + assert(qemu_in_coroutine()); > assert(*errp == NULL); > > if (!drv->bdrv_co_create_opts) { > @@ -717,7 +718,8 @@ out: > return ret; > } > > -int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp) > +int coroutine_fn bdrv_create_file(const char *filename, QemuOpts *opts, > + Error **errp) > { > QemuOpts *protocol_opts; > BlockDriver *drv; > @@ -758,7 +760,7 @@ int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp) > goto out; > } > > - ret = bdrv_create(drv, filename, protocol_opts, errp); > + ret = bdrv_co_create(drv, filename, protocol_opts, errp); > out: > qemu_opts_del(protocol_opts); > qobject_unref(qdict); > diff --git a/include/block/block-global-state.h b/include/block/block-global-state.h > index 73795a0095..bd461f06a1 100644 > --- a/include/block/block-global-state.h > +++ b/include/block/block-global-state.h > @@ -57,7 +57,8 @@ BlockDriver *bdrv_find_protocol(const char *filename, > BlockDriver *bdrv_find_format(const char *format_name); > int bdrv_create(BlockDriver *drv, const char* filename, > QemuOpts *opts, Error **errp); > -int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp); > +int coroutine_fn bdrv_create_file(const char *filename, QemuOpts *opts, > + Error **errp); > > BlockDriverState *bdrv_new(void); > int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top, Ah, I see now why patch 6 is needed, but please adjust the commit message. Paolo
diff --git a/block.c b/block.c index eeb7a02aa2..e5e70acf15 100644 --- a/block.c +++ b/block.c @@ -527,6 +527,7 @@ static int coroutine_fn bdrv_co_create(BlockDriver *drv, const char *filename, { int ret; GLOBAL_STATE_CODE(); + assert(qemu_in_coroutine()); assert(*errp == NULL); if (!drv->bdrv_co_create_opts) { @@ -717,7 +718,8 @@ out: return ret; } -int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp) +int coroutine_fn bdrv_create_file(const char *filename, QemuOpts *opts, + Error **errp) { QemuOpts *protocol_opts; BlockDriver *drv; @@ -758,7 +760,7 @@ int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp) goto out; } - ret = bdrv_create(drv, filename, protocol_opts, errp); + ret = bdrv_co_create(drv, filename, protocol_opts, errp); out: qemu_opts_del(protocol_opts); qobject_unref(qdict); diff --git a/include/block/block-global-state.h b/include/block/block-global-state.h index 73795a0095..bd461f06a1 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -57,7 +57,8 @@ BlockDriver *bdrv_find_protocol(const char *filename, BlockDriver *bdrv_find_format(const char *format_name); int bdrv_create(BlockDriver *drv, const char* filename, QemuOpts *opts, Error **errp); -int bdrv_create_file(const char *filename, QemuOpts *opts, Error **errp); +int coroutine_fn bdrv_create_file(const char *filename, QemuOpts *opts, + Error **errp); BlockDriverState *bdrv_new(void); int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,
It is always called in coroutine_fn callbacks, therefore it can directly call bdrv_co_create(). Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> --- block.c | 6 ++++-- include/block/block-global-state.h | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-)