259 #define zbc_zone_type(z) ((int)(z)->zbz_type)
262 #define zbc_zone_conventional(z) ((z)->zbz_type == ZBC_ZT_CONVENTIONAL)
265 #define zbc_zone_sequential_req(z) ((z)->zbz_type == ZBC_ZT_SEQUENTIAL_REQ)
268 #define zbc_zone_sequential_pref(z) ((z)->zbz_type == ZBC_ZT_SEQUENTIAL_PREF)
271 #define zbc_zone_sobr(z) ((z)->zbz_type == ZBC_ZT_SEQ_OR_BEF_REQ)
274 #define zbc_zone_sequential(z) (zbc_zone_sequential_req(z) || \
275 zbc_zone_sequential_pref(z))
278 #define zbc_zone_gap(z) ((z)->zbz_type == ZBC_ZT_GAP)
281 #define zbc_zone_condition(z) ((int)(z)->zbz_condition)
284 #define zbc_zone_not_wp(z) ((z)->zbz_condition == ZBC_ZC_NOT_WP)
287 #define zbc_zone_empty(z) ((z)->zbz_condition == ZBC_ZC_EMPTY)
290 #define zbc_zone_imp_open(z) ((z)->zbz_condition == ZBC_ZC_IMP_OPEN)
293 #define zbc_zone_exp_open(z) ((z)->zbz_condition == ZBC_ZC_EXP_OPEN)
296 #define zbc_zone_is_open(z) (zbc_zone_imp_open(z) || \
297 zbc_zone_exp_open(z))
300 #define zbc_zone_closed(z) ((z)->zbz_condition == ZBC_ZC_CLOSED)
303 #define zbc_zone_full(z) ((z)->zbz_condition == ZBC_ZC_FULL)
306 #define zbc_zone_rdonly(z) ((z)->zbz_condition == ZBC_ZC_RDONLY)
309 #define zbc_zone_offline(z) ((z)->zbz_condition == ZBC_ZC_OFFLINE)
312 #define zbc_zone_inactive(z) ((z)->zbz_condition == ZBC_ZC_INACTIVE)
315 #define zbc_zone_rwp_recommended(z) ((z)->zbz_attributes & \
316 ZBC_ZA_RWP_RECOMMENDED)
319 #define zbc_zone_non_seq(z) ((z)->zbz_attributes & ZBC_ZA_NON_SEQ)
322 #define zbc_zone_start(z) ((unsigned long long)(z)->zbz_start)
325 #define zbc_zone_length(z) ((unsigned long long)(z)->zbz_length)
328 #define zbc_zone_wp(z) ((unsigned long long)(z)->zbz_write_pointer)
334 ZBC_ZDF_SHIFTING_BOUNDARIES = 1 << 0,
335 ZBC_ZDF_VALID_ZONE_TYPE = 1 << 1,
388 static inline unsigned int zbc_zone_domain_id(
struct zbc_zone_domain *d)
394 static inline unsigned int zbc_zone_domain_type(
struct zbc_zone_domain *d)
400 static inline uint64_t zbc_zone_domain_start_sect(
struct zbc_zone_domain *d)
414 static inline uint64_t zbc_zone_domain_end_sect(
struct zbc_zone_domain *d)
424 static inline unsigned int zbc_zone_domain_nr_zones(
struct zbc_zone_domain *d)
430 static inline uint64_t zbc_zone_domain_sect_size(
struct zbc_zone_domain *d)
432 return zbc_zone_domain_end_sect(d) -
433 zbc_zone_domain_start_sect(d) + 1LL;
436 static inline unsigned int zbc_zone_domain_zone_size(
struct zbc_zone_domain *d)
454 #define ZBC_RESTRICT_ZONE_ACTIVATE 0x01
455 #define ZBC_RESTRICT_WP_RESET 0x02
461 #define ZBC_NR_ZONE_TYPES 4
579 static inline bool zbc_zone_realm_conventional(
struct zbc_zone_realm *r)
585 static inline uint8_t zbc_zone_realm_actv_flags(
struct zbc_zone_realm *r)
591 static inline uint8_t zbc_zone_realm_restrictions(
struct zbc_zone_realm *r)
610 static inline bool zbc_zone_realm_sequential(
struct zbc_zone_realm *r)
616 static inline bool zbc_zone_realm_seq_pref(
struct zbc_zone_realm *r)
622 static inline unsigned int zbc_realm_zone_type(
struct zbc_zone_realm *r,
629 static inline uint64_t zbc_realm_start_sector(
struct zbc_zone_realm *r,
638 unsigned int dom_id);
641 static inline uint64_t zbc_realm_end_sector(
struct zbc_zone_realm *r,
650 unsigned int dom_id);
655 unsigned int dom_id);
658 static inline uint64_t zbc_realm_sector_length(
struct zbc_zone_realm *r,
661 return zbc_realm_end_sector(r, dom_id) -
662 zbc_realm_start_sector(r, dom_id) + 1LL;
666 static inline uint64_t zbc_realm_lblock_length(
struct zbc_device *dev,
682 static inline bool zbc_realm_activation_allowed(
struct zbc_zone_realm *r)
688 static inline bool zbc_realm_wp_reset_allowed(
struct zbc_zone_realm *r)
690 return !(r->
zbr_restr & ZBC_RESTRICT_WP_RESET);
693 static inline bool zbc_realm_actv_as_dom_id(
struct zbc_zone_realm *r,
700 static inline bool zbc_realm_actv_as_type(
struct zbc_zone_realm *r,
714 static inline bool zbc_zone_realm_actv_as_conv(
struct zbc_zone_realm *r)
729 static inline bool zbc_zone_realm_actv_as_seq(
struct zbc_zone_realm *r)
795 #define zbc_actv_res_type(r) ((int)(r)->zbe_type)
798 #define zbc_actv_res_conventional(r) ((r)->zbe_type == ZBC_ZT_CONVENTIONAL)
801 #define zbc_actv_res_seq_req(r) ((r)->zbe_type == ZBC_ZT_SEQUENTIAL_REQ)
804 #define zbc_actv_res_seq_pref(r) ((r)->zbe_type == ZBC_ZT_SEQUENTIAL_PREF)
807 #define zbc_actv_res_sobr(r) ((r)->zbe_type == ZBC_ZT_SEQ_OR_BEF_REQ)
810 #define zbc_actv_res_nonseq(r) (zbc_actv_res_conventional(r) || \
811 zbc_actv_res_sobr(r))
814 #define zbc_actv_res_seq(r) (zbc_actv_res_seq_req(r) || \
815 zbc_actv_res_seq_pref(r))
847 #define ZBC_DEVICE_INFO_LENGTH 32
1049 #define ZBC_NOT_REPORTED ((uint32_t)0xFFFFFFFF)
1055 #define ZBC_NO_LIMIT ((uint32_t)0xFFFFFFFF)
1164 static inline bool zbc_zone_count_supported(
struct zbc_device_info *info)
1171 return zbc_device_is_zdr(info) ||
1180 #define zbc_lba2sect(info, lba) (((lba) * (info)->zbd_lblock_size) >> 9)
1182 #define zbc_lba2sect_end(info, lba) ((((lba + 1) * (info)->zbd_lblock_size) >> 9) - 1)
1189 #define zbc_sect2lba(info, sect) (((sect) << 9) / (info)->zbd_lblock_size)
1404 ZBC_O_DRV_BLOCK = 0x00000000,
1434 extern int zbc_open(
const char *filename,
int flags,
struct zbc_device **dev);
1445 extern int zbc_close(
struct zbc_device *dev);
1559 #define zbc_reporting_options zbc_zone_reporting_options
1560 #define ZBC_RO_ALL ZBC_RZ_RO_ALL
1561 #define ZBC_RO_EMPTY ZBC_RZ_RO_EMPTY
1562 #define ZBC_RO_IMP_OPEN ZBC_RZ_RO_IMP_OPEN
1563 #define ZBC_RO_EXP_OPEN ZBC_RZ_RO_EXP_OPEN
1564 #define ZBC_RO_CLOSED ZBC_RZ_RO_CLOSED
1565 #define ZBC_RO_FULL ZBC_RZ_RO_FULL
1566 #define ZBC_RO_RDONLY ZBC_RZ_RO_RDONLY
1567 #define ZBC_RO_OFFLINE ZBC_RZ_RO_OFFLINE
1568 #define ZBC_RO_INACTIVE ZBC_RZ_RO_INACTIVE
1569 #define ZBC_RO_RWP_RECOMMENDED ZBC_RZ_RO_RWP_RECMND
1570 #define ZBC_RO_NON_SEQ ZBC_RZ_RO_NON_SEQ
1571 #define ZBC_RO_GAP ZBC_RZ_RO_GAP
1572 #define ZBC_RO_NOT_WP ZBC_RZ_RO_NOT_WP
1573 #define ZBC_RO_PARTIAL ZBC_RZ_RO_PARTIAL
1595 struct zbc_zone *zones,
unsigned int *nr_zones);
1611 static inline int zbc_report_nr_zones(
struct zbc_device *dev, uint64_t sector,
1613 unsigned int *nr_zones)
1638 struct zbc_zone **zones,
unsigned int *nr_zones);
1728 unsigned int flags);
1749 static inline int zbc_open_zone(
struct zbc_device *dev,
1750 uint64_t sector,
unsigned int flags)
1776 static inline int zbc_open_zones(
struct zbc_device *dev, uint64_t sector,
1777 unsigned int count,
unsigned int flags)
1799 static inline int zbc_close_zone(
struct zbc_device *dev,
1800 uint64_t sector,
unsigned int flags)
1823 static inline int zbc_close_zones(
struct zbc_device *dev, uint64_t sector,
1824 unsigned int count,
unsigned int flags)
1847 static inline int zbc_finish_zone(
struct zbc_device *dev,
1848 uint64_t sector,
unsigned int flags)
1871 static inline int zbc_finish_zones(
struct zbc_device *dev, uint64_t sector,
1872 unsigned int count,
unsigned int flags)
1894 static inline int zbc_reset_zone(
struct zbc_device *dev,
1895 uint64_t sector,
unsigned int flags)
1918 static inline int zbc_reset_zones(
struct zbc_device *dev, uint64_t sector,
1919 unsigned int count,
unsigned int flags)
1934 ZBC_RZD_RO_ALL = 0x00,
1937 ZBC_RZD_RO_ALL_ACTIVE = 0x01,
1940 ZBC_RZD_RO_ACTIVE = 0x02,
1943 ZBC_RZD_RO_INACTIVE = 0x03,
1968 unsigned int nr_domains);
1991 unsigned int *pnr_domains);
2002 ZBC_RR_RO_ALL = 0x00,
2005 ZBC_RR_RO_SOBR = 0x01,
2008 ZBC_RR_RO_SWR = 0x02,
2011 ZBC_RR_RO_SWP = 0x03,
2033 unsigned int *nr_realms);
2048 static inline int zbc_report_nr_realms(
struct zbc_device *dev,
2049 unsigned int *nr_realms)
2075 unsigned int *pnr_realms);
2090 bool use_32_byte_cdb, uint64_t start_zone,
2091 unsigned int nr_zones,
unsigned int domain_id,
2093 unsigned int *nr_actv_recs);
2107 extern int zbc_zone_query(
struct zbc_device *dev,
bool zsrc,
bool all,
2108 bool use_32_byte_cdb, uint64_t start_zone,
2109 unsigned int nr_zones,
unsigned int domain_id,
2111 unsigned int *nr_actv_recs);
2124 bool use_32_byte_cdb, uint64_t start_zone,
2125 unsigned int nr_zones,
2126 unsigned int domain_id);
2141 bool use_32_byte_cdb, uint64_t start_zone,
2142 unsigned int nr_zones,
unsigned int domain_id,
2144 unsigned int *pnr_actv_recs);
2239 extern ssize_t
zbc_pread(
struct zbc_device *dev,
void *buf,
2240 size_t count, uint64_t offset);
2265 extern ssize_t
zbc_pwrite(
struct zbc_device *dev,
const void *buf,
2266 size_t count, uint64_t offset);
2281 extern ssize_t
zbc_preadv(
struct zbc_device *dev,
2282 const struct iovec *iov,
int iovcnt,
2298 extern ssize_t
zbc_pwritev(
struct zbc_device *dev,
2299 const struct iovec *iov,
int iovcnt,
2318 extern int zbc_map_iov(
const void *buf,
size_t sectors,
2319 struct iovec *iov,
int iovcnt,
size_t iovlen);
2330 extern int zbc_flush(
struct zbc_device *dev);
int zbc_map_iov(const void *buf, size_t sectors, struct iovec *iov, int iovcnt, size_t iovlen)
Map a buffer to an I/O vector.
uint64_t zbd_pblocks
Definition: zbc.h:1107
uint32_t zbd_opt_nr_open_seq_pref
Definition: zbc.h:1120
uint64_t zbc_realm_high_sector(struct zbc_device *dev, struct zbc_zone_realm *r, unsigned int dom_id)
Get realm highest 512B sector for a particular domain.
uint8_t zbr_type
Definition: zbc.h:530
uint64_t zbi_end_sector
Definition: zbc.h:479
uint64_t zbm_start_sector
Definition: zbc.h:351
int zbc_get_zbd_stats(struct zbc_device *dev, struct zbc_zoned_blk_dev_stats *stats)
Get Zoned Block Device statistics.
zbc_zone_domain_flags
Zone domain flags.
Definition: zbc.h:333
zbc_zone_condition
Zone condition definitions.
Definition: zbc.h:121
const char * zbc_sk_str(enum zbc_sk sk)
Returns a string describing a sense key.
uint8_t zbm_id
Definition: zbc.h:367
uint64_t zbz_write_pointer
Definition: zbc.h:234
int zbc_list_zones(struct zbc_device *dev, uint64_t sector, enum zbc_zone_reporting_options ro, struct zbc_zone **zones, unsigned int *nr_zones)
Get zone information.
zbc_zone_attributes
Zone attributes definitions.
Definition: zbc.h:187
struct zbc_realm_item zbr_ri[ZBC_NR_ZONE_TYPES]
Definition: zbc.h:557
uint8_t zbr_nr_domains
Definition: zbc.h:541
uint8_t zbi_type
Definition: zbc.h:496
Zone Activation Results record.
Definition: zbc.h:765
uint8_t zbz_attributes
Definition: zbc.h:249
int zbc_zone_activate(struct zbc_device *dev, bool zsrc, bool all, bool use_32_byte_cdb, uint64_t start_zone, unsigned int nr_zones, unsigned int domain_id, struct zbc_actv_res *actv_recs, unsigned int *nr_actv_recs)
Activate the specified zones at a new zone domain.
enum zbc_dev_type zbd_type
Definition: zbc.h:1067
const char * zbc_asc_ascq_str(enum zbc_asc_ascq asc_ascq)
Returns a string describing a sense code.
uint32_t zbi_length
Definition: zbc.h:485
uint8_t zbr_dom_id
Definition: zbc.h:524
Zone domain descriptor.
Definition: zbc.h:346
zbc_realm_report_options
REPORT REALMS reporting options definitions.
Definition: zbc.h:1999
uint64_t zbd_max_rw_sectors
Definition: zbc.h:1113
uint32_t zbd_max_nr_open_seq_req
Definition: zbc.h:1135
zbc_zone_op
Zone operation codes definitions.
Definition: zbc.h:1645
int zbc_flush(struct zbc_device *dev)
Flush a device write cache.
const char * zbc_zone_type_str(enum zbc_zone_type type)
returns a string describing a zone type
uint64_t zbc_realm_end_lba(struct zbc_device *dev, struct zbc_zone_realm *r, unsigned int dom_id)
Get realm end logical block for a particular domain.
Zone realm descriptor.
Definition: zbc.h:512
uint16_t err_za
Definition: zbc.h:1310
zbc_dev_type
Device type definitions.
Definition: zbc.h:854
uint64_t zbi_start_sector
Definition: zbc.h:474
uint8_t __pad[5]
Definition: zbc.h:254
enum zbc_sk sk
Definition: zbc.h:1295
void zbc_print_device_info(struct zbc_device_info *info, FILE *out)
Print a device information.
uint64_t zbc_realm_start_lba(struct zbc_device *dev, struct zbc_zone_realm *r, unsigned int dom_id)
Get realm start logical block for a particular domain.
zbc_asc_ascq
SCSI Additional sense codes and qualifiers definitions.
Definition: zbc.h:1223
zbc_domain_report_options
REPORT ZONE DOMAINS reporting options definitions.
Definition: zbc.h:1931
uint8_t zbr_restr
Definition: zbc.h:546
#define ZBC_RESTRICT_ZONE_ACTIVATE
Definition: zbc.h:454
unsigned long long max_exp_open_seq_zones
Definition: zbc.h:2171
zbc_dev_flags
Device flags definitions.
Definition: zbc.h:941
uint8_t __pad[2]
Definition: zbc.h:501
int zbc_zone_operation(struct zbc_device *dev, uint64_t sector, enum zbc_zone_op op, unsigned int flags)
Execute an operation on a zone.
uint16_t zbm_flags
Definition: zbc.h:379
zbc_zone_type
Zone type definitions.
Definition: zbc.h:70
int zbc_zone_group_op(struct zbc_device *dev, uint64_t sector, unsigned int count, enum zbc_zone_op op, unsigned int flags)
Execute an operation on a group of zones.
Zone information data structure.
Definition: zbc.h:219
unsigned long long failed_exp_opens
Definition: zbc.h:2195
uint32_t zbd_max_activation
Definition: zbc.h:1141
int zbc_report_domains(struct zbc_device *dev, uint64_t sector, enum zbc_domain_report_options ro, struct zbc_zone_domain *domains, unsigned int nr_domains)
Get zone domain information.
uint8_t zbt_urswrz
URSWRZ setting. Zero value means off.
Definition: zbc.h:840
uint8_t zbz_type
Definition: zbc.h:239
Device information data structure.
Definition: zbc.h:1062
enum zbc_asc_ascq asc_ascq
Definition: zbc.h:1298
unsigned long long err_info
Definition: zbc.h:1301
unsigned long long max_non_seq_zones
Definition: zbc.h:2186
ssize_t zbc_preadv(struct zbc_device *dev, const struct iovec *iov, int iovcnt, uint64_t offset)
Read sectors from a device using multiple buffers.
int zbc_list_domains(struct zbc_device *dev, uint64_t sector, enum zbc_domain_report_options ro, struct zbc_zone_domain **pdomains, unsigned int *pnr_domains)
List zone domain information.
uint32_t zbd_pblock_size
Definition: zbc.h:1102
zbc_zone_op_flags
Zone operation flag definitions.
Definition: zbc.h:1677
ssize_t zbc_pwritev(struct zbc_device *dev, const struct iovec *iov, int iovcnt, uint64_t offset)
Write sectors to a device usig multiple buffers.
int zbc_zone_query(struct zbc_device *dev, bool zsrc, bool all, bool use_32_byte_cdb, uint64_t start_zone, unsigned int nr_zones, unsigned int domain_id, struct zbc_actv_res *actv_recs, unsigned int *nr_actv_recs)
Query about possible results of zone activation.
uint8_t __pad[4]
Definition: zbc.h:384
uint16_t zbr_number
Definition: zbc.h:518
const char * zbc_device_model_str(enum zbc_dev_model model)
Returns a device zone model name.
uint8_t __pad[2]
Definition: zbc.h:551
unsigned long long max_open_zones
Definition: zbc.h:2168
int zbc_zone_query_list(struct zbc_device *dev, bool zsrc, bool all, bool use_32_byte_cdb, uint64_t start_zone, unsigned int nr_zones, unsigned int domain_id, struct zbc_actv_res **pactv_recs, unsigned int *pnr_actv_recs)
Query about possible activation results of a number of zones.
int zbc_device_is_zoned(const char *filename, bool unused, struct zbc_device_info *info)
Test if a device is a zoned block device.
unsigned long long min_empty_zones
Definition: zbc.h:2180
int zbc_report_realms(struct zbc_device *dev, uint64_t sector, enum zbc_realm_report_options ro, struct zbc_zone_realm *realms, unsigned int *nr_realms)
Get zone realm information.
Detailed error information data structure.
Definition: zbc.h:1292
zbc_dev_model
Device model definitions.
Definition: zbc.h:893
uint64_t zbm_end_sector
Definition: zbc.h:356
unsigned long long subopt_write_cmds
Definition: zbc.h:2189
ssize_t zbc_pwrite(struct zbc_device *dev, const void *buf, size_t count, uint64_t offset)
Write sectors to a device.
uint8_t zbr_actv_flags
Definition: zbc.h:536
int zbc_list_zone_realms(struct zbc_device *dev, uint64_t sector, enum zbc_realm_report_options ro, struct zbc_zone_realm **prealms, unsigned int *pnr_realms)
List zone realm information.
uint64_t zbc_zone_domain_end_lba(struct zbc_device *dev, struct zbc_zone_domain *d)
Get zone domain end logical block.
char const * zbc_version(void)
return libzbc version as a string.
int zbc_open(const char *filename, int flags, struct zbc_device **dev)
Open a ZBC device.
uint8_t zbe_condition
Zone condition of all zones in this range.
Definition: zbc.h:790
void zbc_errno_ext(struct zbc_device *dev, struct zbc_err_ext *err, size_t size)
Get detailed error code of last operation.
#define ZBC_DEVICE_INFO_LENGTH
Definition: zbc.h:847
uint16_t zbt_max_activate
Maximum number of LBA realms that can be activated at once.
Definition: zbc.h:832
uint8_t zbe_domain
Domain ID of all zones in this range.
Definition: zbc.h:780
const char * zbc_zone_condition_str(enum zbc_zone_condition cond)
Returns a string describing a zone condition.
Zone realm item.
Definition: zbc.h:469
unsigned long long cmds_above_opt_lim
Definition: zbc.h:2192
unsigned long long max_imp_open_seq_zones
Definition: zbc.h:2174
uint32_t zbd_snoz
Definition: zbc.h:1147
zbc_oflags
ZBC device open flags.
Definition: zbc.h:1398
uint8_t zbi_dom_id
Definition: zbc.h:490
uint64_t zbz_length
Definition: zbc.h:224
uint64_t zbe_nr_zones
Number of contiguous activated zones.
Definition: zbc.h:775
unsigned long long zones_emptied
Definition: zbc.h:2183
void zbc_errno(struct zbc_device *dev, struct zbc_errno *err)
Get legacy error code of last operation.
uint64_t zbd_sectors
Definition: zbc.h:1087
uint8_t zbm_type
Definition: zbc.h:373
unsigned long long read_rule_fails
Definition: zbc.h:2198
int zbc_report_zones(struct zbc_device *dev, uint64_t sector, enum zbc_zone_reporting_options ro, struct zbc_zone *zones, unsigned int *nr_zones)
Get zone information.
uint8_t zbe_type
Zone type of all zones in this range.
Definition: zbc.h:785
Zone Domains device control structure.
Definition: zbc.h:823
enum zbc_dev_model zbd_model
Definition: zbc.h:1072
uint32_t zbt_nr_zones
Default number of zones to activate.
Definition: zbc.h:827
uint64_t zbz_start
Definition: zbc.h:229
ssize_t zbc_pread(struct zbc_device *dev, void *buf, size_t count, uint64_t offset)
Read sectors from a device.
uint32_t zbm_nr_zones
Definition: zbc.h:361
uint32_t zbd_flags
Definition: zbc.h:1082
uint64_t zbc_zone_domain_high_sect(struct zbc_device *dev, struct zbc_zone_domain *d)
Get zone domain highest 512B sector.
unsigned long long err_csinfo
Definition: zbc.h:1304
uint32_t zbd_lblock_size
Definition: zbc.h:1092
int zbc_get_nr_actv_records(struct zbc_device *dev, bool zsrc, bool all, bool use_32_byte_cdb, uint64_t start_zone, unsigned int nr_zones, unsigned int domain_id)
Return the expected number of activation records.
uint8_t zbz_condition
Definition: zbc.h:244
int zbc_zone_activation_ctl(struct zbc_device *dev, struct zbc_zd_dev_control *ctl, bool set)
Read or change persistent XMR device settings.
#define ZBC_NR_ZONE_TYPES
Definition: zbc.h:461
uint64_t zbd_lblocks
Definition: zbc.h:1097
char zbd_vendor_id[ZBC_DEVICE_INFO_LENGTH]
Definition: zbc.h:1077
void zbc_set_log_level(char const *log_level)
Set the library log level.
const char * zbc_device_type_str(enum zbc_dev_type type)
Returns a device type name.
void zbc_get_device_info(struct zbc_device *dev, struct zbc_device_info *info)
Get a ZBC device information.
uint32_t zbd_opt_nr_non_seq_write_seq_pref
Definition: zbc.h:1128
unsigned long long write_rule_fails
Definition: zbc.h:2201
zbc_zone_reporting_options
REPORT ZONES reporting options definitions.
Definition: zbc.h:1479
zbc_sk
SCSI Sense keys definitions.
Definition: zbc.h:1196
Zoned Block Device Statistics.
Definition: zbc.h:2165
uint64_t zbe_start_zone
Starting zone ID.
Definition: zbc.h:770
int zbc_close(struct zbc_device *dev)
Close a ZBC device.
uint64_t zbc_zone_domain_start_lba(struct zbc_device *dev, struct zbc_zone_domain *d)
Get zone domain start logical block.
unsigned long long max_imp_open_sobr_zones
Definition: zbc.h:2177