[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v9 1/7] include: add zoned device structs
From: |
Sam Li |
Subject: |
Re: [PATCH v9 1/7] include: add zoned device structs |
Date: |
Thu, 15 Sep 2022 18:06:38 +0800 |
Eric Blake <eblake@redhat.com> 于2022年9月15日周四 16:05写道:
>
> On Sat, Sep 10, 2022 at 01:27:53PM +0800, Sam Li wrote:
> > 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>
> > ---
> > include/block/block-common.h | 43 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 43 insertions(+)
> >
> > diff --git a/include/block/block-common.h b/include/block/block-common.h
> > index fdb7306e78..36bd0e480e 100644
> > --- a/include/block/block-common.h
> > +++ b/include/block/block-common.h
> > @@ -49,6 +49,49 @@ typedef struct BlockDriver BlockDriver;
> > typedef struct BdrvChild BdrvChild;
> > typedef struct BdrvChildClass BdrvChildClass;
> >
> > +typedef enum BlockZoneOp {
> > + BLK_ZO_OPEN,
> > + BLK_ZO_CLOSE,
> > + BLK_ZO_FINISH,
> > + BLK_ZO_RESET,
> > +} BlockZoneOp;
> > +
> > +typedef enum BlockZoneModel {
> > + BLK_Z_NONE = 0x0, /* Regular block device */
> > + BLK_Z_HM = 0x1, /* Host-managed zoned block device */
> > + BLK_Z_HA = 0x2, /* Host-aware zoned block device */
> > +} BlockZoneModel;
> > +
> > +typedef enum BlockZoneCondition {
> > + BLK_ZS_NOT_WP = 0x0,
> > + BLK_ZS_EMPTY = 0x1,
> > + BLK_ZS_IOPEN = 0x2,
> > + BLK_ZS_EOPEN = 0x3,
> > + BLK_ZS_CLOSED = 0x4,
> > + BLK_ZS_RDONLY = 0xD,
> > + BLK_ZS_FULL = 0xE,
> > + BLK_ZS_OFFLINE = 0xF,
> > +} BlockZoneCondition;
> > +
> > +typedef enum BlockZoneType {
> > + BLK_ZT_CONV = 0x1, /* Conventional random writes supported */
> > + BLK_ZT_SWR = 0x2, /* Sequential writes required */
> > + BLK_ZT_SWP = 0x3, /* Sequential writes preferred */
> > +} BlockZoneType;
> > +
> > +/*
> > + * Zone descriptor data structure.
> > + * Provides information on a zone with all position and size values in
> > bytes.
>
> I'm glad that you chose bytes here for use in qemu. But since the
> kernel struct blk_zone uses sectors instead of bytes, is it worth
> adding a sentence that we intentionally use bytes here, different from
> Linux, to make it easier for reviewers to realize that scaling when
> translating between qemu and kernel is necessary?
Sorry about the unit mistake. The zone information is in sectors which
is the same as kernel struct blk_zone. I think adding a sentence to
inform the sector unit makes it clear what the zone descriptor is.
>
> > + */
> > +typedef struct BlockZoneDescriptor {
> > + uint64_t start;
> > + uint64_t length;
> > + uint64_t cap;
> > + uint64_t wp;
> > + BlockZoneType type;
> > + BlockZoneCondition cond;
> > +} BlockZoneDescriptor;
> > +
> > typedef struct BlockDriverInfo {
> > /* in bytes, 0 if irrelevant */
> > int cluster_size;
> > --
> > 2.37.3
> >
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3266
> Virtualization: qemu.org | libvirt.org
>
[PATCH v9 2/7] file-posix: introduce helper functions for sysfs attributes, Sam Li, 2022/09/10
[PATCH v9 3/7] block: add block layer APIs resembling Linux ZonedBlockDevice ioctls, Sam Li, 2022/09/10