On Thu, Mar 23, 2023 at 01:19:05PM +0800, Sam Li wrote: > diff --git a/block/io.c b/block/io.c > index 5dbf1e50f2..fe9cabaaf6 100644 > --- a/block/io.c > +++ b/block/io.c > @@ -3152,6 +3152,27 @@ out: > return co.ret; > } > > +int coroutine_fn bdrv_co_zone_append(BlockDriverState *bs, int64_t *offset, > + QEMUIOVector *qiov, > + BdrvRequestFlags flags) > +{ > + BlockDriver *drv = bs->drv; > + CoroutineIOCompletion co = { > + .coroutine = qemu_coroutine_self(), > + }; > + IO_CODE(); > + > + bdrv_inc_in_flight(bs); > + if (!drv || !drv->bdrv_co_zone_append || bs->bl.zoned == BLK_Z_NONE) { > + co.ret = -ENOTSUP; > + goto out; > + }
No bdrv_check_qiov_request()? We need to validate inputs. For example, code later on assumes that offset / bs.bl.zone_size < bs.bl.nr_zones. > + co.ret = drv->bdrv_co_zone_append(bs, offset, qiov, flags); > +out: > + bdrv_dec_in_flight(bs); > + return co.ret; > +}
signature.asc
Description: PGP signature