Message ID | 20221016145110.171262-5-faithilikerun@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for zoned device | expand |
On Sun, 2022-10-16 at 22:51 +0800, Sam Li wrote: > raw-format driver usually sits on top of file-posix driver. It needs to > pass through requests of zone commands. > > Signed-off-by: Sam Li <faithilikerun@gmail.com> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> > --- > block/raw-format.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/block/raw-format.c b/block/raw-format.c > index f337ac7569..bac43f1d25 100644 > --- a/block/raw-format.c > +++ b/block/raw-format.c > @@ -314,6 +314,17 @@ static int coroutine_fn raw_co_pdiscard(BlockDriverState > *bs, > return bdrv_co_pdiscard(bs->file, offset, bytes); > } > > +static int coroutine_fn raw_co_zone_report(BlockDriverState *bs, int64_t > offset, > + unsigned int *nr_zones, > + BlockZoneDescriptor *zones) { > + return bdrv_co_zone_report(bs->file->bs, offset, nr_zones, zones); > +} > + > +static int coroutine_fn raw_co_zone_mgmt(BlockDriverState *bs, BlockZoneOp op, > + int64_t offset, int64_t len) { > + return bdrv_co_zone_mgmt(bs->file->bs, op, offset, len); > +} > + > static int64_t raw_getlength(BlockDriverState *bs) > { > int64_t len; > @@ -615,6 +626,8 @@ BlockDriver bdrv_raw = { > .bdrv_co_pwritev = &raw_co_pwritev, > .bdrv_co_pwrite_zeroes = &raw_co_pwrite_zeroes, > .bdrv_co_pdiscard = &raw_co_pdiscard, > + .bdrv_co_zone_report = &raw_co_zone_report, > + .bdrv_co_zone_mgmt = &raw_co_zone_mgmt, > .bdrv_co_block_status = &raw_co_block_status, > .bdrv_co_copy_range_from = &raw_co_copy_range_from, > .bdrv_co_copy_range_to = &raw_co_copy_range_to,
diff --git a/block/raw-format.c b/block/raw-format.c index f337ac7569..bac43f1d25 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -314,6 +314,17 @@ static int coroutine_fn raw_co_pdiscard(BlockDriverState *bs, return bdrv_co_pdiscard(bs->file, offset, bytes); } +static int coroutine_fn raw_co_zone_report(BlockDriverState *bs, int64_t offset, + unsigned int *nr_zones, + BlockZoneDescriptor *zones) { + return bdrv_co_zone_report(bs->file->bs, offset, nr_zones, zones); +} + +static int coroutine_fn raw_co_zone_mgmt(BlockDriverState *bs, BlockZoneOp op, + int64_t offset, int64_t len) { + return bdrv_co_zone_mgmt(bs->file->bs, op, offset, len); +} + static int64_t raw_getlength(BlockDriverState *bs) { int64_t len; @@ -615,6 +626,8 @@ BlockDriver bdrv_raw = { .bdrv_co_pwritev = &raw_co_pwritev, .bdrv_co_pwrite_zeroes = &raw_co_pwrite_zeroes, .bdrv_co_pdiscard = &raw_co_pdiscard, + .bdrv_co_zone_report = &raw_co_zone_report, + .bdrv_co_zone_mgmt = &raw_co_zone_mgmt, .bdrv_co_block_status = &raw_co_block_status, .bdrv_co_copy_range_from = &raw_co_copy_range_from, .bdrv_co_copy_range_to = &raw_co_copy_range_to,