Merge branch 'evelu-peak' of https://github.com/ErwanAliasr1/fio
[fio.git] / zbd_types.h
1 /*
2  * Copyright (C) 2020 Western Digital Corporation or its affiliates.
3  *
4  * This file is released under the GPL.
5  */
6 #ifndef FIO_ZBD_TYPES_H
7 #define FIO_ZBD_TYPES_H
8
9 #include <inttypes.h>
10
11 #define ZBD_MAX_OPEN_ZONES      4096
12
13 /*
14  * Zoned block device models.
15  */
16 enum zbd_zoned_model {
17         ZBD_NONE                = 0x1,  /* No zone support. Emulate zones. */
18         ZBD_HOST_AWARE          = 0x2,  /* Host-aware zoned block device */
19         ZBD_HOST_MANAGED        = 0x3,  /* Host-managed zoned block device */
20 };
21
22 /*
23  * Zone types.
24  */
25 enum zbd_zone_type {
26         ZBD_ZONE_TYPE_CNV       = 0x1,  /* Conventional */
27         ZBD_ZONE_TYPE_SWR       = 0x2,  /* Sequential write required */
28         ZBD_ZONE_TYPE_SWP       = 0x3,  /* Sequential write preferred */
29 };
30
31 /*
32  * Zone conditions.
33  */
34 enum zbd_zone_cond {
35         ZBD_ZONE_COND_NOT_WP    = 0x0,
36         ZBD_ZONE_COND_EMPTY     = 0x1,
37         ZBD_ZONE_COND_IMP_OPEN  = 0x2,
38         ZBD_ZONE_COND_EXP_OPEN  = 0x3,
39         ZBD_ZONE_COND_CLOSED    = 0x4,
40         ZBD_ZONE_COND_READONLY  = 0xD,
41         ZBD_ZONE_COND_FULL      = 0xE,
42         ZBD_ZONE_COND_OFFLINE   = 0xF,
43 };
44
45 /*
46  * Zone descriptor.
47  */
48 struct zbd_zone {
49         uint64_t                start;
50         uint64_t                wp;
51         uint64_t                len;
52         uint64_t                capacity;
53         enum zbd_zone_type      type;
54         enum zbd_zone_cond      cond;
55 };
56
57 #endif /* FIO_ZBD_TYPES_H */