NVMe driver public API extension for Zoned Namespace Command Set. More...
Functions | |
const struct spdk_nvme_zns_ns_data * | spdk_nvme_zns_ns_get_data (struct spdk_nvme_ns *ns) |
Get the Zoned Namespace Command Set Specific Identify Namespace data as defined by the NVMe Zoned Namespace Command Set Specification. | |
uint64_t | spdk_nvme_zns_ns_get_zone_size_sectors (struct spdk_nvme_ns *ns) |
Get the zone size, in number of sectors, of the given namespace. | |
uint64_t | spdk_nvme_zns_ns_get_zone_size (struct spdk_nvme_ns *ns) |
Get the zone size, in bytes, of the given namespace. | |
uint64_t | spdk_nvme_zns_ns_get_num_zones (struct spdk_nvme_ns *ns) |
Get the number of zones for the given namespace. | |
uint32_t | spdk_nvme_zns_ns_get_max_open_zones (struct spdk_nvme_ns *ns) |
Get the maximum number of open zones for the given namespace. | |
uint32_t | spdk_nvme_zns_ns_get_max_active_zones (struct spdk_nvme_ns *ns) |
Get the maximum number of active zones for the given namespace. | |
const struct spdk_nvme_zns_ctrlr_data * | spdk_nvme_zns_ctrlr_get_data (struct spdk_nvme_ctrlr *ctrlr) |
Get the Zoned Namespace Command Set Specific Identify Controller data as defined by the NVMe Zoned Namespace Command Set Specification. | |
uint32_t | spdk_nvme_zns_ctrlr_get_max_zone_append_size (const struct spdk_nvme_ctrlr *ctrlr) |
Get the maximum zone append data transfer size of a given NVMe controller. | |
int | spdk_nvme_zns_zone_append (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, void *buffer, uint64_t zslba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg, uint32_t io_flags) |
Submit a zone append I/O to the specified NVMe namespace. | |
int | spdk_nvme_zns_zone_append_with_md (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, void *buffer, void *metadata, uint64_t zslba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg, uint32_t io_flags, uint16_t apptag_mask, uint16_t apptag) |
Submit a zone append I/O to the specified NVMe namespace. | |
int | spdk_nvme_zns_zone_appendv (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t zslba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg, uint32_t io_flags, spdk_nvme_req_reset_sgl_cb reset_sgl_fn, spdk_nvme_req_next_sge_cb next_sge_fn) |
Submit a zone append I/O to the specified NVMe namespace. | |
int | spdk_nvme_zns_zone_appendv_with_md (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t zslba, uint32_t lba_count, spdk_nvme_cmd_cb cb_fn, void *cb_arg, uint32_t io_flags, spdk_nvme_req_reset_sgl_cb reset_sgl_fn, spdk_nvme_req_next_sge_cb next_sge_fn, void *metadata, uint16_t apptag_mask, uint16_t apptag) |
Submit a zone append I/O to the specified NVMe namespace. | |
int | spdk_nvme_zns_close_zone (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, bool select_all, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Close Zone operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_finish_zone (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, bool select_all, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Finish Zone operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_open_zone (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, bool select_all, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Open Zone operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_reset_zone (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, bool select_all, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Reset Zone operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_offline_zone (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, bool select_all, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Offline Zone operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_set_zone_desc_ext (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, uint64_t slba, void *buffer, uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Submit a Set Zone Descriptor Extension operation to the specified NVMe namespace. | |
int | spdk_nvme_zns_report_zones (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, void *payload, uint32_t payload_size, uint64_t slba, enum spdk_nvme_zns_zra_report_opts report_opts, bool partial_report, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Get a zone report from the specified NVMe namespace. | |
int | spdk_nvme_zns_ext_report_zones (struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, void *payload, uint32_t payload_size, uint64_t slba, enum spdk_nvme_zns_zra_report_opts report_opts, bool partial_report, spdk_nvme_cmd_cb cb_fn, void *cb_arg) |
Get a extended zone report from the specified NVMe namespace. | |
NVMe driver public API extension for Zoned Namespace Command Set.
int spdk_nvme_zns_close_zone | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
bool | select_all, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Close Zone operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
select_all | If this is set, slba will be ignored, and operation will be performed on all zones that are in ZSIO or ZSEO state. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
const struct spdk_nvme_zns_ctrlr_data * spdk_nvme_zns_ctrlr_get_data | ( | struct spdk_nvme_ctrlr * | ctrlr | ) |
Get the Zoned Namespace Command Set Specific Identify Controller data as defined by the NVMe Zoned Namespace Command Set Specification.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ctrlr | Opaque handle to NVMe controller. |
uint32_t spdk_nvme_zns_ctrlr_get_max_zone_append_size | ( | const struct spdk_nvme_ctrlr * | ctrlr | ) |
Get the maximum zone append data transfer size of a given NVMe controller.
ctrlr | Opaque handle to NVMe controller. |
int spdk_nvme_zns_ext_report_zones | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
void * | payload, | ||
uint32_t | payload_size, | ||
uint64_t | slba, | ||
enum spdk_nvme_zns_zra_report_opts | report_opts, | ||
bool | partial_report, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Get a extended zone report from the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
payload | The pointer to the payload buffer. |
payload_size | The size of payload buffer. |
slba | starting LBA of the zone to operate on. |
report_opts | Filter on which zone states to include in the extended zone report. |
partial_report | If true, nr_zones field in the extended zone report indicates the number of zone descriptors that were successfully written to the extended zone report. If false, nr_zones field in the extended zone report indicates the number of zone descriptors that match the report_opts criteria. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_finish_zone | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
bool | select_all, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Finish Zone operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
select_all | If this is set, slba will be ignored, and operation will be performed on all zones that are in ZSIO, ZSEO, or ZSC state. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
const struct spdk_nvme_zns_ns_data * spdk_nvme_zns_ns_get_data | ( | struct spdk_nvme_ns * | ns | ) |
Get the Zoned Namespace Command Set Specific Identify Namespace data as defined by the NVMe Zoned Namespace Command Set Specification.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace. |
uint32_t spdk_nvme_zns_ns_get_max_active_zones | ( | struct spdk_nvme_ns * | ns | ) |
Get the maximum number of active zones for the given namespace.
An active zone is a zone in any of the zone states: EXPLICIT OPEN, IMPLICIT OPEN or CLOSED.
If this value is 0, there is no limit.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace to query. |
uint32_t spdk_nvme_zns_ns_get_max_open_zones | ( | struct spdk_nvme_ns * | ns | ) |
Get the maximum number of open zones for the given namespace.
An open zone is a zone in any of the zone states: EXPLICIT OPEN or IMPLICIT OPEN.
If this value is 0, there is no limit.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace to query. |
uint64_t spdk_nvme_zns_ns_get_num_zones | ( | struct spdk_nvme_ns * | ns | ) |
Get the number of zones for the given namespace.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace to query. |
uint64_t spdk_nvme_zns_ns_get_zone_size | ( | struct spdk_nvme_ns * | ns | ) |
Get the zone size, in bytes, of the given namespace.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace to query. |
uint64_t spdk_nvme_zns_ns_get_zone_size_sectors | ( | struct spdk_nvme_ns * | ns | ) |
Get the zone size, in number of sectors, of the given namespace.
This function is thread safe and can be called at any point while the controller is attached to the SPDK NVMe driver.
ns | Namespace to query. |
int spdk_nvme_zns_offline_zone | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
bool | select_all, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Offline Zone operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
select_all | If this is set, slba will be ignored, and operation will be performed on all zones that are in ZSRO state. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_open_zone | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
bool | select_all, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Open Zone operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
select_all | If this is set, slba will be ignored, and operation will be performed on all zones that are in ZSC state. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_report_zones | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
void * | payload, | ||
uint32_t | payload_size, | ||
uint64_t | slba, | ||
enum spdk_nvme_zns_zra_report_opts | report_opts, | ||
bool | partial_report, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Get a zone report from the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
payload | The pointer to the payload buffer. |
payload_size | The size of payload buffer. |
slba | starting LBA of the zone to operate on. |
report_opts | Filter on which zone states to include in the zone report. |
partial_report | If true, nr_zones field in the zone report indicates the number of zone descriptors that were successfully written to the zone report. If false, nr_zones field in the zone report indicates the number of zone descriptors that match the report_opts criteria. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_reset_zone | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
bool | select_all, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Reset Zone operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
select_all | If this is set, slba will be ignored, and operation will be performed on all zones that are in ZSIO, ZSEO, ZSC, or ZSF state. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_set_zone_desc_ext | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | slba, | ||
void * | buffer, | ||
uint32_t | payload_size, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg ) |
Submit a Set Zone Descriptor Extension operation to the specified NVMe namespace.
ns | Namespace. |
qpair | I/O queue pair to submit the request. |
slba | starting LBA of the zone to operate on. |
buffer | Virtual address pointer to the data payload buffer. |
payload_size | Payload buffer size. |
cb_fn | Callback function invoked when the I/O command completes. |
cb_arg | Argument passed to callback function. |
int spdk_nvme_zns_zone_append | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
void * | buffer, | ||
uint64_t | zslba, | ||
uint32_t | lba_count, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg, | ||
uint32_t | io_flags ) |
Submit a zone append I/O to the specified NVMe namespace.
The command is submitted to a qpair allocated by spdk_nvme_ctrlr_alloc_io_qpair(). The user must ensure that only one thread submits I/O on a given qpair at any given time.
ns | NVMe namespace to submit the zone append I/O. |
qpair | I/O queue pair to submit the request. |
buffer | Virtual address pointer to the data payload buffer. |
zslba | Zone Start LBA of the zone that we are appending to. |
lba_count | Length (in sectors) for the zone append operation. |
cb_fn | Callback function to invoke when the I/O is completed. |
cb_arg | Argument to pass to the callback function. |
io_flags | Set flags, defined by the SPDK_NVME_IO_FLAGS_* entries in spdk/nvme_spec.h, for this I/O. |
int spdk_nvme_zns_zone_append_with_md | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
void * | buffer, | ||
void * | metadata, | ||
uint64_t | zslba, | ||
uint32_t | lba_count, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg, | ||
uint32_t | io_flags, | ||
uint16_t | apptag_mask, | ||
uint16_t | apptag ) |
Submit a zone append I/O to the specified NVMe namespace.
The command is submitted to a qpair allocated by spdk_nvme_ctrlr_alloc_io_qpair(). The user must ensure that only one thread submits I/O on a given qpair at any given time.
ns | NVMe namespace to submit the zone append I/O. |
qpair | I/O queue pair to submit the request. |
buffer | Virtual address pointer to the data payload buffer. |
metadata | Virtual address pointer to the metadata payload, the length of metadata is specified by spdk_nvme_ns_get_md_size(). |
zslba | Zone Start LBA of the zone that we are appending to. |
lba_count | Length (in sectors) for the zone append operation. |
cb_fn | Callback function to invoke when the I/O is completed. |
cb_arg | Argument to pass to the callback function. |
io_flags | Set flags, defined by the SPDK_NVME_IO_FLAGS_* entries in spdk/nvme_spec.h, for this I/O. |
apptag_mask | Application tag mask. |
apptag | Application tag to use end-to-end protection information. |
int spdk_nvme_zns_zone_appendv | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | zslba, | ||
uint32_t | lba_count, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg, | ||
uint32_t | io_flags, | ||
spdk_nvme_req_reset_sgl_cb | reset_sgl_fn, | ||
spdk_nvme_req_next_sge_cb | next_sge_fn ) |
Submit a zone append I/O to the specified NVMe namespace.
The command is submitted to a qpair allocated by spdk_nvme_ctrlr_alloc_io_qpair(). The user must ensure that only one thread submits I/O on a given qpair at any given time.
ns | NVMe namespace to submit the zone append I/O. |
qpair | I/O queue pair to submit the request. |
zslba | Zone Start LBA of the zone that we are appending to. |
lba_count | Length (in sectors) for the zone append operation. |
cb_fn | Callback function to invoke when the I/O is completed. |
cb_arg | Argument to pass to the callback function. |
io_flags | Set flags, defined in nvme_spec.h, for this I/O. |
reset_sgl_fn | Callback function to reset scattered payload. |
next_sge_fn | Callback function to iterate each scattered payload memory segment. |
int spdk_nvme_zns_zone_appendv_with_md | ( | struct spdk_nvme_ns * | ns, |
struct spdk_nvme_qpair * | qpair, | ||
uint64_t | zslba, | ||
uint32_t | lba_count, | ||
spdk_nvme_cmd_cb | cb_fn, | ||
void * | cb_arg, | ||
uint32_t | io_flags, | ||
spdk_nvme_req_reset_sgl_cb | reset_sgl_fn, | ||
spdk_nvme_req_next_sge_cb | next_sge_fn, | ||
void * | metadata, | ||
uint16_t | apptag_mask, | ||
uint16_t | apptag ) |
Submit a zone append I/O to the specified NVMe namespace.
The command is submitted to a qpair allocated by spdk_nvme_ctrlr_alloc_io_qpair(). The user must ensure that only one thread submits I/O on a given qpair at any given time.
ns | NVMe namespace to submit the zone append I/O. |
qpair | I/O queue pair to submit the request. |
zslba | Zone Start LBA of the zone that we are appending to. |
lba_count | Length (in sectors) for the zone append operation. |
cb_fn | Callback function to invoke when the I/O is completed. |
cb_arg | Argument to pass to the callback function. |
io_flags | Set flags, defined in nvme_spec.h, for this I/O. |
reset_sgl_fn | Callback function to reset scattered payload. |
next_sge_fn | Callback function to iterate each scattered payload memory segment. |
metadata | Virtual address pointer to the metadata payload, the length of metadata is specified by spdk_nvme_ns_get_md_size(). |
apptag_mask | Application tag mask. |
apptag | Application tag to use end-to-end protection information. |