238 #define zbc_zone_type(z) ((int)(z)->zbz_type)
241 #define zbc_zone_conventional(z) ((z)->zbz_type == ZBC_ZT_CONVENTIONAL)
244 #define zbc_zone_sequential_req(z) ((z)->zbz_type == ZBC_ZT_SEQUENTIAL_REQ)
247 #define zbc_zone_sequential_pref(z) ((z)->zbz_type == ZBC_ZT_SEQUENTIAL_PREF)
250 #define zbc_zone_sequential(z) (zbc_zone_sequential_req(z) || \
251 zbc_zone_sequential_pref(z))
254 #define zbc_zone_condition(z) ((int)(z)->zbz_condition)
257 #define zbc_zone_not_wp(z) ((z)->zbz_condition == ZBC_ZC_NOT_WP)
260 #define zbc_zone_empty(z) ((z)->zbz_condition == ZBC_ZC_EMPTY)
263 #define zbc_zone_imp_open(z) ((z)->zbz_condition == ZBC_ZC_IMP_OPEN)
266 #define zbc_zone_exp_open(z) ((z)->zbz_condition == ZBC_ZC_EXP_OPEN)
269 #define zbc_zone_is_open(z) (zbc_zone_imp_open(z) || \
270 zbc_zone_exp_open(z))
273 #define zbc_zone_closed(z) ((z)->zbz_condition == ZBC_ZC_CLOSED)
276 #define zbc_zone_full(z) ((z)->zbz_condition == ZBC_ZC_FULL)
279 #define zbc_zone_rdonly(z) ((z)->zbz_condition == ZBC_ZC_RDONLY)
282 #define zbc_zone_offline(z) ((z)->zbz_condition == ZBC_ZC_OFFLINE)
285 #define zbc_zone_rwp_recommended(z) ((z)->zbz_attributes & \
286 ZBC_ZA_RWP_RECOMMENDED)
289 #define zbc_zone_non_seq(z) ((z)->zbz_attributes & ZBC_ZA_NON_SEQ)
292 #define zbc_zone_start(z) ((unsigned long long)(z)->zbz_start)
295 #define zbc_zone_length(z) ((unsigned long long)(z)->zbz_length)
298 #define zbc_zone_wp(z) ((unsigned long long)(z)->zbz_write_pointer)
303 #define ZBC_DEVICE_INFO_LENGTH 32
427 #define ZBC_NOT_REPORTED ((uint32_t)0xFFFFFFFF)
433 #define ZBC_NO_LIMIT ((uint32_t)0xFFFFFFFF)
522 #define zbc_lba2sect(info, lba) (((lba) * (info)->zbd_lblock_size) >> 9)
529 #define zbc_sect2lba(info, sect) (((sect) << 9) / (info)->zbd_lblock_size)
707 extern int zbc_open(
const char *filename,
int flags,
struct zbc_device **dev);
718 extern int zbc_close(
struct zbc_device *dev);
840 struct zbc_zone *zones,
unsigned int *nr_zones);
856 static inline int zbc_report_nr_zones(
struct zbc_device *dev, uint64_t sector,
858 unsigned int *nr_zones)
883 struct zbc_zone **zones,
unsigned int *nr_zones);
971 static inline int zbc_open_zone(
struct zbc_device *dev,
972 uint64_t sector,
unsigned int flags)
994 static inline int zbc_close_zone(
struct zbc_device *dev,
995 uint64_t sector,
unsigned int flags)
1018 static inline int zbc_finish_zone(
struct zbc_device *dev,
1019 uint64_t sector,
unsigned int flags)
1041 static inline int zbc_reset_zone(
struct zbc_device *dev,
1042 uint64_t sector,
unsigned int flags)
1070 extern ssize_t
zbc_pread(
struct zbc_device *dev,
void *buf,
1071 size_t count, uint64_t offset);
1096 extern ssize_t
zbc_pwrite(
struct zbc_device *dev,
const void *buf,
1097 size_t count, uint64_t offset);
1112 extern ssize_t
zbc_preadv(
struct zbc_device *dev,
1113 const struct iovec *iov,
int iovcnt,
1129 extern ssize_t
zbc_pwritev(
struct zbc_device *dev,
1130 const struct iovec *iov,
int iovcnt,
1149 extern int zbc_map_iov(
const void *buf,
size_t sectors,
1150 struct iovec *iov,
int iovcnt,
size_t iovlen);
1161 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:485
uint32_t zbd_opt_nr_open_seq_pref
Definition: zbc.h:498
zbc_zone_condition
Zone condition definitions.
Definition: zbc.h:105
const char * zbc_sk_str(enum zbc_sk sk)
Returns a string describing a sense key.
uint64_t zbz_write_pointer
Definition: zbc.h:213
zbc_zone_attributes
Zone attributes definitions.
Definition: zbc.h:166
int zbc_device_is_zoned(const char *filename, bool fake, struct zbc_device_info *info)
Test if a device is a zoned block device.
enum zbc_sk sk
Definition: zbc.h:605
uint8_t zbz_attributes
Definition: zbc.h:228
enum zbc_dev_type zbd_type
Definition: zbc.h:445
const char * zbc_asc_ascq_str(enum zbc_asc_ascq asc_ascq)
Returns a string describing a sense code.
uint64_t zbd_max_rw_sectors
Definition: zbc.h:491
uint32_t zbd_max_nr_open_seq_req
Definition: zbc.h:513
enum zbc_asc_ascq asc_ascq
Definition: zbc.h:608
zbc_zone_op
Zone operation codes definitions.
Definition: zbc.h:890
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
zbc_dev_type
Device type definitions.
Definition: zbc.h:310
uint8_t __pad[5]
Definition: zbc.h:233
void zbc_print_device_info(struct zbc_device_info *info, FILE *out)
Print a device information.
zbc_asc_ascq
SCSI Additional sense codes and qualifiers definitions.
Definition: zbc.h:560
zbc_dev_flags
Device flags definitions.
Definition: zbc.h:412
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.
zbc_zone_type
Zone type definitions.
Definition: zbc.h:65
Zone information data structure.
Definition: zbc.h:198
uint8_t zbz_type
Definition: zbc.h:218
Device information data structure.
Definition: zbc.h:440
ssize_t zbc_preadv(struct zbc_device *dev, const struct iovec *iov, int iovcnt, uint64_t offset)
Read sectors from a device using mutliple buffers.
uint32_t zbd_pblock_size
Definition: zbc.h:480
zbc_zone_op_flags
Zone operation flag definitions.
Definition: zbc.h:922
ssize_t zbc_pwritev(struct zbc_device *dev, const struct iovec *iov, int iovcnt, uint64_t offset)
Write sectors to a device unsig multiple buffers.
const char * zbc_device_model_str(enum zbc_dev_model model)
Returns a device zone model name.
zbc_dev_model
Device model definitions.
Definition: zbc.h:359
ssize_t zbc_pwrite(struct zbc_device *dev, const void *buf, size_t count, uint64_t offset)
Write sectors to a device.
int zbc_open(const char *filename, int flags, struct zbc_device **dev)
Open a ZBC device.
#define ZBC_DEVICE_INFO_LENGTH
Definition: zbc.h:303
const char * zbc_zone_condition_str(enum zbc_zone_condition cond)
Returns a string describing a zone condition.
zbc_oflags
ZBC device open flags.
Definition: zbc.h:669
int zbc_list_zones(struct zbc_device *dev, uint64_t sector, enum zbc_reporting_options ro, struct zbc_zone **zones, unsigned int *nr_zones)
Get zone information.
uint64_t zbz_length
Definition: zbc.h:203
void zbc_errno(struct zbc_device *dev, struct zbc_errno *err)
Get detailed error code of last operation.
uint64_t zbd_sectors
Definition: zbc.h:465
zbc_reporting_options
Reporting options definitions.
Definition: zbc.h:752
enum zbc_dev_model zbd_model
Definition: zbc.h:450
Detailed error information data structure.
Definition: zbc.h:602
uint64_t zbz_start
Definition: zbc.h:208
ssize_t zbc_pread(struct zbc_device *dev, void *buf, size_t count, uint64_t offset)
Read sectors form a device.
uint32_t zbd_flags
Definition: zbc.h:460
uint32_t zbd_lblock_size
Definition: zbc.h:470
uint8_t zbz_condition
Definition: zbc.h:223
uint64_t zbd_lblocks
Definition: zbc.h:475
char zbd_vendor_id[ZBC_DEVICE_INFO_LENGTH]
Definition: zbc.h:455
int zbc_report_zones(struct zbc_device *dev, uint64_t sector, enum zbc_reporting_options ro, struct zbc_zone *zones, unsigned int *nr_zones)
Get zone information.
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:506
zbc_sk
SCSI Sense keys definitions.
Definition: zbc.h:536
int zbc_close(struct zbc_device *dev)
Close a ZBC device.