Message ID | 20220512235103.2224817-4-afaria@redhat.com |
---|---|
State | New |
Headers | show |
Series | Implement bdrv_{pread, pwrite, pwrite_sync, pwrite_zeroes}() using generated_co_wrapper | expand |
On 5/13/22 01:51, Alberto Faria wrote: > Also convert bdrv_pwrite_sync() to being implemented using > generated_co_wrapper. > > Signed-off-by: Alberto Faria <afaria@redhat.com> > --- > block/io.c | 5 +++-- > include/block/block-io.h | 8 ++++++-- > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/block/io.c b/block/io.c > index ecd1c2a53c..19f9251c11 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -1109,8 +1109,9 @@ int bdrv_make_zero(BdrvChild *child, BdrvRequestFlags flags) > * > * Returns 0 on success, -errno in error cases. > */ > -int bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes, > - const void *buf, BdrvRequestFlags flags) > +int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset, > + int64_t bytes, const void *buf, > + BdrvRequestFlags flags) > { > int ret; > IO_CODE(); Please change the implementation to use bdrv_co_ functions as well (bdrv_co_pwrite, bdrv_co_flush). Some callers could be changed to bdrv_co_pwrite_sync, for example qcow2_shrink_reftable[1], but that can be done later (and preferably in a somewhat automated way). Paolo [1] qcow2_shrink_reftable could be a coroutine_fn because it is only called from qcow2_co_truncate > diff --git a/include/block/block-io.h b/include/block/block-io.h > index c81739ad16..ae90d1e588 100644 > --- a/include/block/block-io.h > +++ b/include/block/block-io.h > @@ -49,8 +49,12 @@ int generated_co_wrapper bdrv_pread(BdrvChild *child, int64_t offset, > int generated_co_wrapper bdrv_pwrite(BdrvChild *child, int64_t offset, > int64_t bytes, const void *buf, > BdrvRequestFlags flags); > -int bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes, > - const void *buf, BdrvRequestFlags flags); > +int generated_co_wrapper bdrv_pwrite_sync(BdrvChild *child, int64_t offset, > + int64_t bytes, const void *buf, > + BdrvRequestFlags flags); > +int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset, > + int64_t bytes, const void *buf, > + BdrvRequestFlags flags); > /* > * Efficiently zero a region of the disk image. Note that this is a regular > * I/O request like read or write and should have a reasonable size. This
diff --git a/block/io.c b/block/io.c index ecd1c2a53c..19f9251c11 100644 --- a/block/io.c +++ b/block/io.c @@ -1109,8 +1109,9 @@ int bdrv_make_zero(BdrvChild *child, BdrvRequestFlags flags) * * Returns 0 on success, -errno in error cases. */ -int bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes, - const void *buf, BdrvRequestFlags flags) +int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset, + int64_t bytes, const void *buf, + BdrvRequestFlags flags) { int ret; IO_CODE(); diff --git a/include/block/block-io.h b/include/block/block-io.h index c81739ad16..ae90d1e588 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -49,8 +49,12 @@ int generated_co_wrapper bdrv_pread(BdrvChild *child, int64_t offset, int generated_co_wrapper bdrv_pwrite(BdrvChild *child, int64_t offset, int64_t bytes, const void *buf, BdrvRequestFlags flags); -int bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes, - const void *buf, BdrvRequestFlags flags); +int generated_co_wrapper bdrv_pwrite_sync(BdrvChild *child, int64_t offset, + int64_t bytes, const void *buf, + BdrvRequestFlags flags); +int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset, + int64_t bytes, const void *buf, + BdrvRequestFlags flags); /* * Efficiently zero a region of the disk image. Note that this is a regular * I/O request like read or write and should have a reasonable size. This
Also convert bdrv_pwrite_sync() to being implemented using generated_co_wrapper. Signed-off-by: Alberto Faria <afaria@redhat.com> --- block/io.c | 5 +++-- include/block/block-io.h | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-)