mirror of https://github.com/xemu-project/xemu.git
block/block-common: add zoned device structs
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> Acked-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20230508045533.175575-2-faithilikerun@gmail.com Message-id: 20230324090605.28361-2-faithilikerun@gmail.com [Adjust commit message prefix as suggested by Philippe Mathieu-Daudé <philmd@linaro.org>. --Stefan] Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
8844bb8d89
commit
72ca800ec5
|
@ -75,6 +75,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 BlockZoneState {
|
||||
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,
|
||||
} BlockZoneState;
|
||||
|
||||
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.
|
||||
*/
|
||||
typedef struct BlockZoneDescriptor {
|
||||
uint64_t start;
|
||||
uint64_t length;
|
||||
uint64_t cap;
|
||||
uint64_t wp;
|
||||
BlockZoneType type;
|
||||
BlockZoneState state;
|
||||
} BlockZoneDescriptor;
|
||||
|
||||
typedef struct BlockDriverInfo {
|
||||
/* in bytes, 0 if irrelevant */
|
||||
int cluster_size;
|
||||
|
|
Loading…
Reference in New Issue