Data Structures | |
struct | __bdev_internal_fields |
Fields that are used internally by the bdev subsystem. More... | |
Public Member Functions | |
TAILQ_HEAD (spdk_bdev_aliases_list, spdk_bdev_alias) aliases | |
Unique aliases for this block device. | |
Data Fields | ||
void * | ctxt | |
User context passed in by the backend. | ||
char * | name | |
Unique name for this block device. | ||
char * | product_name | |
Unique product name for this kind of block device. | ||
int | write_cache | |
write cache enabled, not used at the moment | ||
uint32_t | blocklen | |
Size in bytes of a logical block for the backend. | ||
uint32_t | phys_blocklen | |
Size in bytes of a physical block for the backend. | ||
uint64_t | blockcnt | |
Number of blocks. | ||
bool | split_on_write_unit | |
Specifies whether the write_unit_size is mandatory or only advisory. | ||
uint32_t | write_unit_size | |
Number of blocks required for write. | ||
uint16_t | acwu | |
Atomic compare & write unit. | ||
uint8_t | required_alignment | |
Specifies an alignment requirement for data buffers associated with an spdk_bdev_io. | ||
bool | split_on_optimal_io_boundary | |
Specifies whether the optimal_io_boundary is mandatory or only advisory. | ||
uint32_t | optimal_io_boundary | |
Optimal I/O boundary in blocks, or 0 for no value reported. | ||
uint32_t | max_segment_size | |
Max io size in bytes of a single segment. | ||
uint32_t | max_num_segments | |
uint32_t | max_unmap | |
uint32_t | max_unmap_segments | |
uint32_t | max_write_zeroes | |
uint32_t | max_copy | |
Maximum copy size in unit of logical block Should be set explicitly when backing device support copy command. | ||
uint32_t | max_rw_size | |
Maximum number of blocks in a single read/write I/O. | ||
struct spdk_uuid | uuid | |
UUID for this bdev. | ||
uint32_t | md_len | |
Size in bytes of a metadata for the backend. | ||
bool | md_interleave | |
Specify metadata location and set to true if metadata is interleaved with block data or false if metadata is separated with block data. | ||
enum spdk_dif_type | dif_type | |
DIF type for this bdev. | ||
enum spdk_dif_pi_format | dif_pi_format | |
DIF protection information format for this bdev. | ||
bool | dif_is_head_of_md | |
uint32_t | dif_check_flags | |
Specify whether each DIF check type is enabled. | ||
bool | zoned | |
Specify whether bdev is zoned device. | ||
uint64_t | zone_size | |
Default size of each zone (in blocks). | ||
uint32_t | max_zone_append_size | |
Maximum zone append data transfer size (in blocks). | ||
uint32_t | max_open_zones | |
Maximum number of open zones. | ||
uint32_t | max_active_zones | |
Maximum number of active zones. | ||
uint32_t | optimal_open_zones | |
Optimal number of open zones. | ||
bool | media_events | |
Specifies whether bdev supports media management events. | ||
union spdk_bdev_nvme_ctratt | ctratt | |
Specifies the bdev nvme controller attributes. | ||
uint16_t | reset_io_drain_timeout | |
struct { | ||
uint32_t id_valid: 1 | ||
Is numa.id valid? Needed to know whether numa.id == 0 was explicitly set by bdev module or implicitly set when calloc()'ing the structure. | ||
int32_t id: 31 | ||
NUMA node ID for the bdev. | ||
} | numa | |
struct spdk_bdev_module *const struct spdk_bdev_fn_table * | fn_table | |
Pointer to the bdev module that registered this bdev. | ||
struct spdk_bdev::__bdev_internal_fields | internal | |
enum spdk_dif_pi_format spdk_bdev::dif_pi_format |
DIF protection information format for this bdev.
Note that this field is valid only if there is metadata and dif_type is not SPDK_DIF_DISABLE.
enum spdk_dif_type spdk_bdev::dif_type |
DIF type for this bdev.
Note that this field is valid only if there is metadata.
struct spdk_bdev_module* const struct spdk_bdev_fn_table* spdk_bdev::fn_table |
Pointer to the bdev module that registered this bdev.
function table for all LUN ops
uint32_t spdk_bdev::max_rw_size |
Maximum number of blocks in a single read/write I/O.
Requests exceeding this value will be split by the bdev layer.
uint32_t spdk_bdev::max_segment_size |
Max io size in bytes of a single segment.
Note: both max_segment_size and max_num_segments should be zero or non-zero.
bool spdk_bdev::md_interleave |
Specify metadata location and set to true if metadata is interleaved with block data or false if metadata is separated with block data.
Note that this field is valid only if there is metadata.
uint8_t spdk_bdev::required_alignment |
Specifies an alignment requirement for data buffers associated with an spdk_bdev_io.
0 = no alignment requirement >0 = alignment requirement is 2 ^ required_alignment. bdev layer will automatically double buffer any spdk_bdev_io that violates this alignment, before the spdk_bdev_io is submitted to the bdev module.
bool spdk_bdev::split_on_optimal_io_boundary |
Specifies whether the optimal_io_boundary is mandatory or only advisory.
If set to true, the bdev layer will split READ and WRITE I/O that span the optimal_io_boundary before submitting them to the bdev module.
Note that this field cannot be used to force splitting of UNMAP, WRITE_ZEROES or FLUSH I/O.
bool spdk_bdev::split_on_write_unit |
Specifies whether the write_unit_size is mandatory or only advisory.
If set to true, the bdev layer will split WRITE I/O that span the write_unit_size before submitting them to the bdev module.
This field takes precedence over split_on_optimal_io_boundary for WRITE I/O if both are set to true.
Note that this field cannot be used to force splitting of UNMAP, WRITE_ZEROES or FLUSH I/O.
struct spdk_uuid spdk_bdev::uuid |
UUID for this bdev.
If not provided, it will be generated by bdev layer.