On Thu, May 19, 2022 at 03:48:36PM +0100, Alberto Faria wrote: > For consistency with other I/O functions, and in preparation to > implement bdrv_{pread,pwrite}() using generated_co_wrapper. > > unsigned int fits in int64_t, so all callers remain correct. > > Signed-off-by: Alberto Faria <afa...@redhat.com> > --- > block/coroutines.h | 4 ++-- > include/block/block_int-io.h | 8 ++++++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/block/coroutines.h b/block/coroutines.h > index 830ecaa733..3f41238b33 100644 > --- a/block/coroutines.h > +++ b/block/coroutines.h > @@ -91,11 +91,11 @@ int coroutine_fn blk_co_do_flush(BlockBackend *blk); > */ > > int generated_co_wrapper > -bdrv_preadv(BdrvChild *child, int64_t offset, unsigned int bytes, > +bdrv_preadv(BdrvChild *child, int64_t offset, int64_t bytes, > QEMUIOVector *qiov, BdrvRequestFlags flags); > > int generated_co_wrapper > -bdrv_pwritev(BdrvChild *child, int64_t offset, unsigned int bytes, > +bdrv_pwritev(BdrvChild *child, int64_t offset, int64_t bytes, > QEMUIOVector *qiov, BdrvRequestFlags flags); > > int generated_co_wrapper > diff --git a/include/block/block_int-io.h b/include/block/block_int-io.h > index d4d3bed783..e31f2b4311 100644 > --- a/include/block/block_int-io.h > +++ b/include/block/block_int-io.h > @@ -56,20 +56,24 @@ int coroutine_fn bdrv_co_pwritev_part(BdrvChild *child, > QEMUIOVector *qiov, size_t qiov_offset, BdrvRequestFlags flags); > > static inline int coroutine_fn bdrv_co_pread(BdrvChild *child, > - int64_t offset, unsigned int bytes, void *buf, BdrvRequestFlags flags) > + int64_t offset, int64_t bytes, void *buf, BdrvRequestFlags flags) > { > QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes); > IO_CODE(); > > + assert(bytes <= SIZE_MAX);
Maybe let the existing bdrv_check_request32() call in bdrv_co_preadv() check this? It returns -EIO if bytes is too large.
signature.asc
Description: PGP signature