summaryrefslogtreecommitdiff
path: root/zbd_types.h
blob: 0a8630cb71adf6dc596e579b577ae8da6b03c9d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
 *
 * This file is released under the GPL.
 */
#ifndef FIO_ZBD_TYPES_H
#define FIO_ZBD_TYPES_H

#include <inttypes.h>

#define ZBD_MAX_OPEN_ZONES	4096

/*
 * Zoned block device models.
 */
enum zbd_zoned_model {
	ZBD_NONE		= 0x1,	/* No zone support. Emulate zones. */
	ZBD_HOST_AWARE		= 0x2,	/* Host-aware zoned block device */
	ZBD_HOST_MANAGED	= 0x3,	/* Host-managed zoned block device */
};

/*
 * Zone types.
 */
enum zbd_zone_type {
	ZBD_ZONE_TYPE_CNV	= 0x1,	/* Conventional */
	ZBD_ZONE_TYPE_SWR	= 0x2,	/* Sequential write required */
	ZBD_ZONE_TYPE_SWP	= 0x3,	/* Sequential write preferred */
};

/*
 * Zone conditions.
 */
enum zbd_zone_cond {
        ZBD_ZONE_COND_NOT_WP    = 0x0,
        ZBD_ZONE_COND_EMPTY     = 0x1,
        ZBD_ZONE_COND_IMP_OPEN  = 0x2,
        ZBD_ZONE_COND_EXP_OPEN  = 0x3,
        ZBD_ZONE_COND_CLOSED    = 0x4,
        ZBD_ZONE_COND_READONLY  = 0xD,
        ZBD_ZONE_COND_FULL      = 0xE,
        ZBD_ZONE_COND_OFFLINE   = 0xF,
};

/*
 * Zone descriptor.
 */
struct zbd_zone {
	uint64_t		start;
	uint64_t		wp;
	uint64_t		len;
	uint64_t		capacity;
	enum zbd_zone_type	type;
	enum zbd_zone_cond	cond;
};

#endif /* FIO_ZBD_TYPES_H */