diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:40:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:40:20 +0000 |
commit | 2dba2525fb35dcfc79aad5bdf6c92e790d69635c (patch) | |
tree | ac8ac7d3960922094733bac6d9a5300da7171c56 /doc/man | |
parent | Initial commit. (diff) | |
download | libnvme-2dba2525fb35dcfc79aad5bdf6c92e790d69635c.tar.xz libnvme-2dba2525fb35dcfc79aad5bdf6c92e790d69635c.zip |
Adding upstream version 1.3.upstream/1.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
751 files changed, 22805 insertions, 0 deletions
diff --git a/doc/man/nvme_admin_opcode.2 b/doc/man/nvme_admin_opcode.2 new file mode 100644 index 0000000..26dfe5f --- /dev/null +++ b/doc/man/nvme_admin_opcode.2 @@ -0,0 +1,216 @@ +.TH "libnvme" 9 "enum nvme_admin_opcode" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_admin_opcode \- Known NVMe admin opcodes +.SH SYNOPSIS +enum nvme_admin_opcode { +.br +.BI " nvme_admin_delete_sq" +, +.br +.br +.BI " nvme_admin_create_sq" +, +.br +.br +.BI " nvme_admin_get_log_page" +, +.br +.br +.BI " nvme_admin_delete_cq" +, +.br +.br +.BI " nvme_admin_create_cq" +, +.br +.br +.BI " nvme_admin_identify" +, +.br +.br +.BI " nvme_admin_abort_cmd" +, +.br +.br +.BI " nvme_admin_set_features" +, +.br +.br +.BI " nvme_admin_get_features" +, +.br +.br +.BI " nvme_admin_async_event" +, +.br +.br +.BI " nvme_admin_ns_mgmt" +, +.br +.br +.BI " nvme_admin_fw_commit" +, +.br +.br +.BI " nvme_admin_fw_activate" +, +.br +.br +.BI " nvme_admin_fw_download" +, +.br +.br +.BI " nvme_admin_dev_self_test" +, +.br +.br +.BI " nvme_admin_ns_attach" +, +.br +.br +.BI " nvme_admin_keep_alive" +, +.br +.br +.BI " nvme_admin_directive_send" +, +.br +.br +.BI " nvme_admin_directive_recv" +, +.br +.br +.BI " nvme_admin_virtual_mgmt" +, +.br +.br +.BI " nvme_admin_nvme_mi_send" +, +.br +.br +.BI " nvme_admin_nvme_mi_recv" +, +.br +.br +.BI " nvme_admin_capacity_mgmt" +, +.br +.br +.BI " nvme_admin_discovery_info_mgmt" +, +.br +.br +.BI " nvme_admin_fabric_zoning_recv" +, +.br +.br +.BI " nvme_admin_lockdown" +, +.br +.br +.BI " nvme_admin_fabric_zoning_lookup" +, +.br +.br +.BI " nvme_admin_fabric_zoning_send" +, +.br +.br +.BI " nvme_admin_dbbuf" +, +.br +.br +.BI " nvme_admin_fabrics" +, +.br +.br +.BI " nvme_admin_format_nvm" +, +.br +.br +.BI " nvme_admin_security_send" +, +.br +.br +.BI " nvme_admin_security_recv" +, +.br +.br +.BI " nvme_admin_sanitize_nvm" +, +.br +.br +.BI " nvme_admin_get_lba_status" + +}; +.SH Constants +.IP "nvme_admin_delete_sq" 12 +Delete I/O Submission Queue +.IP "nvme_admin_create_sq" 12 +Create I/O Submission Queue +.IP "nvme_admin_get_log_page" 12 +Get Log Page +.IP "nvme_admin_delete_cq" 12 +Delete I/O Completion Queue +.IP "nvme_admin_create_cq" 12 +Create I/O Completion Queue +.IP "nvme_admin_identify" 12 +Identify +.IP "nvme_admin_abort_cmd" 12 +Abort +.IP "nvme_admin_set_features" 12 +Set Features +.IP "nvme_admin_get_features" 12 +Get Features +.IP "nvme_admin_async_event" 12 +Asynchronous Event Request +.IP "nvme_admin_ns_mgmt" 12 +Namespace Management +.IP "nvme_admin_fw_commit" 12 +Firmware Commit +.IP "nvme_admin_fw_activate" 12 +Firmware Commit +.IP "nvme_admin_fw_download" 12 +Firmware Image Download +.IP "nvme_admin_dev_self_test" 12 +Device Self-test +.IP "nvme_admin_ns_attach" 12 +Namespace Attachment +.IP "nvme_admin_keep_alive" 12 +Keep Alive +.IP "nvme_admin_directive_send" 12 +Directive Send +.IP "nvme_admin_directive_recv" 12 +Directive Receive +.IP "nvme_admin_virtual_mgmt" 12 +Virtualization Management +.IP "nvme_admin_nvme_mi_send" 12 +NVMe-MI Send +.IP "nvme_admin_nvme_mi_recv" 12 +NVMe-MI Receive +.IP "nvme_admin_capacity_mgmt" 12 +Capacity Management +.IP "nvme_admin_discovery_info_mgmt" 12 +Discovery Information Management (DIM) +.IP "nvme_admin_fabric_zoning_recv" 12 +Fabric Zoning Receive +.IP "nvme_admin_lockdown" 12 +Lockdown +.IP "nvme_admin_fabric_zoning_lookup" 12 +Fabric Zoning Lookup +.IP "nvme_admin_fabric_zoning_send" 12 +Fabric Zoning Send +.IP "nvme_admin_dbbuf" 12 +Doorbell Buffer Config +.IP "nvme_admin_fabrics" 12 +Fabrics Commands +.IP "nvme_admin_format_nvm" 12 +Format NVM +.IP "nvme_admin_security_send" 12 +Security Send +.IP "nvme_admin_security_recv" 12 +Security Receive +.IP "nvme_admin_sanitize_nvm" 12 +Sanitize +.IP "nvme_admin_get_lba_status" 12 +Get LBA Status diff --git a/doc/man/nvme_admin_passthru.2 b/doc/man/nvme_admin_passthru.2 new file mode 100644 index 0000000..eebc5f1 --- /dev/null +++ b/doc/man/nvme_admin_passthru.2 @@ -0,0 +1,71 @@ +.TH "nvme_admin_passthru" 9 "nvme_admin_passthru" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_admin_passthru \- Submit an nvme passthrough command +.SH SYNOPSIS +.B "int" nvme_admin_passthru +.BI "(int fd " "," +.BI "__u8 opcode " "," +.BI "__u8 flags " "," +.BI "__u16 rsvd " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw2 " "," +.BI "__u32 cdw3 " "," +.BI "__u32 cdw10 " "," +.BI "__u32 cdw11 " "," +.BI "__u32 cdw12 " "," +.BI "__u32 cdw13 " "," +.BI "__u32 cdw14 " "," +.BI "__u32 cdw15 " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 metadata_len " "," +.BI "void *metadata " "," +.BI "__u32 timeout_ms " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "opcode" 12 +The nvme io command to send +.IP "flags" 12 +NVMe command flags (not used) +.IP "rsvd" 12 +Reserved for future use +.IP "nsid" 12 +Namespace identifier +.IP "cdw2" 12 +Command dword 2 +.IP "cdw3" 12 +Command dword 3 +.IP "cdw10" 12 +Command dword 10 +.IP "cdw11" 12 +Command dword 11 +.IP "cdw12" 12 +Command dword 12 +.IP "cdw13" 12 +Command dword 13 +.IP "cdw14" 12 +Command dword 14 +.IP "cdw15" 12 +Command dword 15 +.IP "data_len" 12 +Length of the data transferred in this command in bytes +.IP "data" 12 +Pointer to user address of the data buffer +.IP "metadata_len" 12 +Length of metadata transferred in this command +.IP "metadata" 12 +Pointer to user address of the metadata buffer +.IP "timeout_ms" 12 +How long the kernel waits for the command to complete +.IP "result" 12 +Optional field to return the result from the CQE dword 0 +.SH "DESCRIPTION" +Parameterized form of \fBnvme_submit_admin_passthru\fP. This sets up and +submits a \fIstruct nvme_passthru_cmd\fP. + +Known values for \fIopcode\fP are defined in \fIenum nvme_admin_opcode\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_admin_passthru64.2 b/doc/man/nvme_admin_passthru64.2 new file mode 100644 index 0000000..50a2091 --- /dev/null +++ b/doc/man/nvme_admin_passthru64.2 @@ -0,0 +1,71 @@ +.TH "nvme_admin_passthru64" 9 "nvme_admin_passthru64" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_admin_passthru64 \- Submit a 64-bit nvme passthrough command +.SH SYNOPSIS +.B "int" nvme_admin_passthru64 +.BI "(int fd " "," +.BI "__u8 opcode " "," +.BI "__u8 flags " "," +.BI "__u16 rsvd " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw2 " "," +.BI "__u32 cdw3 " "," +.BI "__u32 cdw10 " "," +.BI "__u32 cdw11 " "," +.BI "__u32 cdw12 " "," +.BI "__u32 cdw13 " "," +.BI "__u32 cdw14 " "," +.BI "__u32 cdw15 " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 metadata_len " "," +.BI "void *metadata " "," +.BI "__u32 timeout_ms " "," +.BI "__u64 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "opcode" 12 +The nvme io command to send +.IP "flags" 12 +NVMe command flags (not used) +.IP "rsvd" 12 +Reserved for future use +.IP "nsid" 12 +Namespace identifier +.IP "cdw2" 12 +Command dword 2 +.IP "cdw3" 12 +Command dword 3 +.IP "cdw10" 12 +Command dword 10 +.IP "cdw11" 12 +Command dword 11 +.IP "cdw12" 12 +Command dword 12 +.IP "cdw13" 12 +Command dword 13 +.IP "cdw14" 12 +Command dword 14 +.IP "cdw15" 12 +Command dword 15 +.IP "data_len" 12 +Length of the data transferred in this command in bytes +.IP "data" 12 +Pointer to user address of the data buffer +.IP "metadata_len" 12 +Length of metadata transferred in this command +.IP "metadata" 12 +Pointer to user address of the metadata buffer +.IP "timeout_ms" 12 +How long the kernel waits for the command to complete +.IP "result" 12 +Optional field to return the result from the CQE dword 0 +.SH "DESCRIPTION" +Parameterized form of \fBnvme_submit_admin_passthru64\fP. This sets up and +submits a \fIstruct nvme_passthru_cmd64\fP. + +Known values for \fIopcode\fP are defined in \fIenum nvme_admin_opcode\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ae_info_css_nvm.2 b/doc/man/nvme_ae_info_css_nvm.2 new file mode 100644 index 0000000..08db970 --- /dev/null +++ b/doc/man/nvme_ae_info_css_nvm.2 @@ -0,0 +1,25 @@ +.TH "libnvme" 9 "enum nvme_ae_info_css_nvm" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ae_info_css_nvm \- Asynchronous Event Information - I/O Command Specific Status +.SH SYNOPSIS +enum nvme_ae_info_css_nvm { +.br +.BI " NVME_AER_CSS_NVM_RESERVATION" +, +.br +.br +.BI " NVME_AER_CSS_NVM_SANITIZE_COMPLETED" +, +.br +.br +.BI " NVME_AER_CSS_NVM_UNEXPECTED_SANITIZE_DEALLOC" + +}; +.SH Constants +.IP "NVME_AER_CSS_NVM_RESERVATION" 12 +Reservation Log Page Available +.IP "NVME_AER_CSS_NVM_SANITIZE_COMPLETED" 12 +Sanitize Operation Completed +.IP "NVME_AER_CSS_NVM_UNEXPECTED_SANITIZE_DEALLOC" 12 +Sanitize Operation Completed +With Unexpected Deallocation diff --git a/doc/man/nvme_ae_info_error.2 b/doc/man/nvme_ae_info_error.2 new file mode 100644 index 0000000..dc7e35a --- /dev/null +++ b/doc/man/nvme_ae_info_error.2 @@ -0,0 +1,42 @@ +.TH "libnvme" 9 "enum nvme_ae_info_error" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ae_info_error \- Asynchronous Event Information - Error Status +.SH SYNOPSIS +enum nvme_ae_info_error { +.br +.BI " NVME_AER_ERROR_INVALID_DB_REG" +, +.br +.br +.BI " NVME_AER_ERROR_INVALID_DB_VAL" +, +.br +.br +.BI " NVME_AER_ERROR_DIAG_FAILURE" +, +.br +.br +.BI " NVME_AER_ERROR_PERSISTENT_INTERNAL_ERROR" +, +.br +.br +.BI " NVME_AER_ERROR_TRANSIENT_INTERNAL_ERROR" +, +.br +.br +.BI " NVME_AER_ERROR_FW_IMAGE_LOAD_ERROR" + +}; +.SH Constants +.IP "NVME_AER_ERROR_INVALID_DB_REG" 12 +Write to Invalid Doorbell Register +.IP "NVME_AER_ERROR_INVALID_DB_VAL" 12 +Invalid Doorbell Write Value +.IP "NVME_AER_ERROR_DIAG_FAILURE" 12 +Diagnostic Failure +.IP "NVME_AER_ERROR_PERSISTENT_INTERNAL_ERROR" 12 +Persistent Internal Error +.IP "NVME_AER_ERROR_TRANSIENT_INTERNAL_ERROR" 12 +Transient Internal Error +.IP "NVME_AER_ERROR_FW_IMAGE_LOAD_ERROR" 12 +Firmware Image Load Error diff --git a/doc/man/nvme_ae_info_notice.2 b/doc/man/nvme_ae_info_notice.2 new file mode 100644 index 0000000..ed4b176 --- /dev/null +++ b/doc/man/nvme_ae_info_notice.2 @@ -0,0 +1,54 @@ +.TH "libnvme" 9 "enum nvme_ae_info_notice" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ae_info_notice \- Asynchronous Event Information - Notice +.SH SYNOPSIS +enum nvme_ae_info_notice { +.br +.BI " NVME_AER_NOTICE_NS_CHANGED" +, +.br +.br +.BI " NVME_AER_NOTICE_FW_ACT_STARTING" +, +.br +.br +.BI " NVME_AER_NOTICE_TELEMETRY" +, +.br +.br +.BI " NVME_AER_NOTICE_ANA" +, +.br +.br +.BI " NVME_AER_NOTICE_PL_EVENT" +, +.br +.br +.BI " NVME_AER_NOTICE_LBA_STATUS_ALERT" +, +.br +.br +.BI " NVME_AER_NOTICE_EG_EVENT" +, +.br +.br +.BI " NVME_AER_NOTICE_DISC_CHANGED" + +}; +.SH Constants +.IP "NVME_AER_NOTICE_NS_CHANGED" 12 +Namespace Attribute Changed +.IP "NVME_AER_NOTICE_FW_ACT_STARTING" 12 +Firmware Activation Starting +.IP "NVME_AER_NOTICE_TELEMETRY" 12 +Telemetry Log Changed +.IP "NVME_AER_NOTICE_ANA" 12 +Asymmetric Namespace Access Change +.IP "NVME_AER_NOTICE_PL_EVENT" 12 +Predictable Latency Event Aggregate Log Change +.IP "NVME_AER_NOTICE_LBA_STATUS_ALERT" 12 +LBA Status Information Alert +.IP "NVME_AER_NOTICE_EG_EVENT" 12 +Endurance Group Event Aggregate Log Page Change +.IP "NVME_AER_NOTICE_DISC_CHANGED" 12 +Discovery Log Page Change diff --git a/doc/man/nvme_ae_info_smart.2 b/doc/man/nvme_ae_info_smart.2 new file mode 100644 index 0000000..edbab31 --- /dev/null +++ b/doc/man/nvme_ae_info_smart.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_ae_info_smart" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ae_info_smart \- Asynchronous Event Information - SMART / Health Status +.SH SYNOPSIS +enum nvme_ae_info_smart { +.br +.BI " NVME_AER_SMART_SUBSYSTEM_RELIABILITY" +, +.br +.br +.BI " NVME_AER_SMART_TEMPERATURE_THRESHOLD" +, +.br +.br +.BI " NVME_AER_SMART_SPARE_THRESHOLD" + +}; +.SH Constants +.IP "NVME_AER_SMART_SUBSYSTEM_RELIABILITY" 12 +NVM subsystem Reliability +.IP "NVME_AER_SMART_TEMPERATURE_THRESHOLD" 12 +Temperature Threshold +.IP "NVME_AER_SMART_SPARE_THRESHOLD" 12 +Spare Below Threshold diff --git a/doc/man/nvme_ae_type.2 b/doc/man/nvme_ae_type.2 new file mode 100644 index 0000000..e0e99a2 --- /dev/null +++ b/doc/man/nvme_ae_type.2 @@ -0,0 +1,36 @@ +.TH "libnvme" 9 "enum nvme_ae_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ae_type \- Asynchronous Event Type +.SH SYNOPSIS +enum nvme_ae_type { +.br +.BI " NVME_AER_ERROR" +, +.br +.br +.BI " NVME_AER_SMART" +, +.br +.br +.BI " NVME_AER_NOTICE" +, +.br +.br +.BI " NVME_AER_CSS" +, +.br +.br +.BI " NVME_AER_VS" + +}; +.SH Constants +.IP "NVME_AER_ERROR" 12 +Error event +.IP "NVME_AER_SMART" 12 +SMART / Health Status event +.IP "NVME_AER_NOTICE" 12 +Notice event +.IP "NVME_AER_CSS" 12 +NVM Command Set Specific events +.IP "NVME_AER_VS" 12 +Vendor Specific event diff --git a/doc/man/nvme_aggregate_endurance_group_event.2 b/doc/man/nvme_aggregate_endurance_group_event.2 new file mode 100644 index 0000000..d52d339 --- /dev/null +++ b/doc/man/nvme_aggregate_endurance_group_event.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_aggregate_endurance_group_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_aggregate_endurance_group_event \- Endurance Group Event Aggregate +.SH SYNOPSIS +struct nvme_aggregate_endurance_group_event { +.br +.BI " __le64 num_entries;" +.br +.BI " __le16 entries[];" +.br +.BI " +}; +.br + +.SH Members +.IP "num_entries" 12 +Number or entries +.IP "entries" 12 +List of entries diff --git a/doc/man/nvme_aggregate_predictable_lat_event.2 b/doc/man/nvme_aggregate_predictable_lat_event.2 new file mode 100644 index 0000000..a673c7c --- /dev/null +++ b/doc/man/nvme_aggregate_predictable_lat_event.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_aggregate_predictable_lat_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_aggregate_predictable_lat_event \- Predictable Latency Event Aggregate Log Page +.SH SYNOPSIS +struct nvme_aggregate_predictable_lat_event { +.br +.BI " __le64 num_entries;" +.br +.BI " __le16 entries[];" +.br +.BI " +}; +.br + +.SH Members +.IP "num_entries" 12 +Number of entries +.IP "entries" 12 +Entry list diff --git a/doc/man/nvme_ana_group_desc.2 b/doc/man/nvme_ana_group_desc.2 new file mode 100644 index 0000000..67e025f --- /dev/null +++ b/doc/man/nvme_ana_group_desc.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_ana_group_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_ana_group_desc \- ANA Group Descriptor +.SH SYNOPSIS +struct nvme_ana_group_desc { +.br +.BI " __le32 grpid;" +.br +.BI " __le32 nnsids;" +.br +.BI " __le64 chgcnt;" +.br +.BI " __u8 state;" +.br +.BI " __u8 rsvd17[15];" +.br +.BI " __le32 nsids[];" +.br +.BI " +}; +.br + +.SH Members +.IP "grpid" 12 +ANA group id +.IP "nnsids" 12 +Number of namespaces in \fInsids\fP +.IP "chgcnt" 12 +Change counter +.IP "state" 12 +ANA state +.IP "rsvd17" 12 +Reserved +.IP "nsids" 12 +List of namespaces diff --git a/doc/man/nvme_ana_log.2 b/doc/man/nvme_ana_log.2 new file mode 100644 index 0000000..3bb09e1 --- /dev/null +++ b/doc/man/nvme_ana_log.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_ana_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_ana_log \- Asymmetric Namespace Access Log +.SH SYNOPSIS +struct nvme_ana_log { +.br +.BI " __le64 chgcnt;" +.br +.BI " __le16 ngrps;" +.br +.BI " __u8 rsvd10[6];" +.br +.BI " struct nvme_ana_group_desc descs[];" +.br +.BI " +}; +.br + +.SH Members +.IP "chgcnt" 12 +Change Count +.IP "ngrps" 12 +Number of ANA Group Descriptors +.IP "rsvd10" 12 +Reserved +.IP "descs" 12 +ANA Group Descriptor diff --git a/doc/man/nvme_ana_state.2 b/doc/man/nvme_ana_state.2 new file mode 100644 index 0000000..a1a6e2c --- /dev/null +++ b/doc/man/nvme_ana_state.2 @@ -0,0 +1,36 @@ +.TH "libnvme" 9 "enum nvme_ana_state" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ana_state \- ANA Group Descriptor - Asymmetric Namespace Access State +.SH SYNOPSIS +enum nvme_ana_state { +.br +.BI " NVME_ANA_STATE_OPTIMIZED" +, +.br +.br +.BI " NVME_ANA_STATE_NONOPTIMIZED" +, +.br +.br +.BI " NVME_ANA_STATE_INACCESSIBLE" +, +.br +.br +.BI " NVME_ANA_STATE_PERSISTENT_LOSS" +, +.br +.br +.BI " NVME_ANA_STATE_CHANGE" + +}; +.SH Constants +.IP "NVME_ANA_STATE_OPTIMIZED" 12 +ANA Optimized state +.IP "NVME_ANA_STATE_NONOPTIMIZED" 12 +ANA Non-Optimized state +.IP "NVME_ANA_STATE_INACCESSIBLE" 12 +ANA Inaccessible state +.IP "NVME_ANA_STATE_PERSISTENT_LOSS" 12 +ANA Persistent Loss state +.IP "NVME_ANA_STATE_CHANGE" 12 +ANA Change state diff --git a/doc/man/nvme_apst_entry.2 b/doc/man/nvme_apst_entry.2 new file mode 100644 index 0000000..6df81f5 --- /dev/null +++ b/doc/man/nvme_apst_entry.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_apst_entry" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_apst_entry \- Autonomous Power State Transition +.SH SYNOPSIS +enum nvme_apst_entry { +.br +.BI " NVME_APST_ENTRY_ITPS_SHIFT" +, +.br +.br +.BI " NVME_APST_ENTRY_ITPT_SHIFT" +, +.br +.br +.BI " NVME_APST_ENTRY_ITPS_MASK" +, +.br +.br +.BI " NVME_APST_ENTRY_ITPT_MASK" + +}; +.SH Constants +.IP "NVME_APST_ENTRY_ITPS_SHIFT" 12 +Idle Transition Power State Shift +.IP "NVME_APST_ENTRY_ITPT_SHIFT" 12 +Idle Time Prior to Transition Shift +.IP "NVME_APST_ENTRY_ITPS_MASK" 12 +Idle Transition Power State Mask +.IP "NVME_APST_ENTRY_ITPT_MASK" 12 +Idle Time Prior to Transition Mask diff --git a/doc/man/nvme_boot_partition.2 b/doc/man/nvme_boot_partition.2 new file mode 100644 index 0000000..20539dd --- /dev/null +++ b/doc/man/nvme_boot_partition.2 @@ -0,0 +1,32 @@ +.TH "libnvme" 9 "struct nvme_boot_partition" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_boot_partition \- Boot Partition Log +.SH SYNOPSIS +struct nvme_boot_partition { +.br +.BI " __u8 lid;" +.br +.BI " __u8 rsvd1[3];" +.br +.BI " __le32 bpinfo;" +.br +.BI " __u8 rsvd8[8];" +.br +.BI " __u8 boot_partition_data[];" +.br +.BI " +}; +.br + +.SH Members +.IP "lid" 12 +Boot Partition Identifier +.IP "rsvd1" 12 +Reserved +.IP "bpinfo" 12 +Boot Partition Information +.IP "rsvd8" 12 +Reserved +.IP "boot_partition_data" 12 +Contains the contents of the +specified Boot Partition diff --git a/doc/man/nvme_capacity_config_desc.2 b/doc/man/nvme_capacity_config_desc.2 new file mode 100644 index 0000000..911ae67 --- /dev/null +++ b/doc/man/nvme_capacity_config_desc.2 @@ -0,0 +1,33 @@ +.TH "libnvme" 9 "struct nvme_capacity_config_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_capacity_config_desc \- Capacity Configuration structure definitions +.SH SYNOPSIS +struct nvme_capacity_config_desc { +.br +.BI " __le16 cap_config_id;" +.br +.BI " __le16 domainid;" +.br +.BI " __le16 egcn;" +.br +.BI " __u8 rsvd6[26];" +.br +.BI " struct nvme_end_grp_config_desc egcd[];" +.br +.BI " +}; +.br + +.SH Members +.IP "cap_config_id" 12 +Capacity Configuration Identifier +.IP "domainid" 12 +Domain Identifier +.IP "egcn" 12 +Number Endurance Group Configuration +Descriptors +.IP "rsvd6" 12 +Reserved +.IP "egcd" 12 +Endurance Group Config descriptors. +See \fIstruct\fP nvme_end_grp_config_desc diff --git a/doc/man/nvme_capacity_mgmt.2 b/doc/man/nvme_capacity_mgmt.2 new file mode 100644 index 0000000..6ab8d90 --- /dev/null +++ b/doc/man/nvme_capacity_mgmt.2 @@ -0,0 +1,12 @@ +.TH "nvme_capacity_mgmt" 9 "nvme_capacity_mgmt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_capacity_mgmt \- Capacity management command +.SH SYNOPSIS +.B "int" nvme_capacity_mgmt +.BI "(struct nvme_capacity_mgmt_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_capacity_mgmt_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_change_ns_event.2 b/doc/man/nvme_change_ns_event.2 new file mode 100644 index 0000000..5661822 --- /dev/null +++ b/doc/man/nvme_change_ns_event.2 @@ -0,0 +1,63 @@ +.TH "libnvme" 9 "struct nvme_change_ns_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_change_ns_event \- Change Namespace Event Data +.SH SYNOPSIS +struct nvme_change_ns_event { +.br +.BI " __le32 nsmgt_cdw10;" +.br +.BI " __u8 rsvd4[4];" +.br +.BI " __le64 nsze;" +.br +.BI " __u8 rsvd16[8];" +.br +.BI " __le64 nscap;" +.br +.BI " __u8 flbas;" +.br +.BI " __u8 dps;" +.br +.BI " __u8 nmic;" +.br +.BI " __u8 rsvd35;" +.br +.BI " __le32 ana_grp_id;" +.br +.BI " __le16 nvmset_id;" +.br +.BI " __le16 rsvd42;" +.br +.BI " __le32 nsid;" +.br +.BI " +}; +.br + +.SH Members +.IP "nsmgt_cdw10" 12 +Namespace Management CDW10 +.IP "rsvd4" 12 +Reserved +.IP "nsze" 12 +Namespace Size +.IP "rsvd16" 12 +Reserved +.IP "nscap" 12 +Namespace Capacity +.IP "flbas" 12 +Formatted LBA Size +.IP "dps" 12 +End-to-end Data Protection Type Settings +.IP "nmic" 12 +Namespace Multi-path I/O and Namespace Sharing Capabilities +.IP "rsvd35" 12 +Reserved +.IP "ana_grp_id" 12 +ANA Group Identifier +.IP "nvmset_id" 12 +NVM Set Identifier +.IP "rsvd42" 12 +Reserved +.IP "nsid" 12 +Namespace ID diff --git a/doc/man/nvme_channel_config_desc.2 b/doc/man/nvme_channel_config_desc.2 new file mode 100644 index 0000000..59110f7 --- /dev/null +++ b/doc/man/nvme_channel_config_desc.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "struct nvme_channel_config_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_channel_config_desc \- Channel Configuration Descriptor +.SH SYNOPSIS +struct nvme_channel_config_desc { +.br +.BI " __le16 chanid;" +.br +.BI " __le16 chmus;" +.br +.BI " struct nvme_media_unit_config_desc mu_config_desc[];" +.br +.BI " +}; +.br + +.SH Members +.IP "chanid" 12 +Channel Identifier +.IP "chmus" 12 +Number Channel Media Units +.IP "mu_config_desc" 12 +Channel Unit config descriptors. +See \fIstruct\fP nvme_media_unit_config_desc diff --git a/doc/man/nvme_cmb_size.2 b/doc/man/nvme_cmb_size.2 new file mode 100644 index 0000000..86e6417 --- /dev/null +++ b/doc/man/nvme_cmb_size.2 @@ -0,0 +1,11 @@ +.TH "nvme_cmb_size" 9 "nvme_cmb_size" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_cmb_size \- Calculate size of the controller memory buffer +.SH SYNOPSIS +.B "__u64" nvme_cmb_size +.BI "(__u32 cmbsz " ");" +.SH ARGUMENTS +.IP "cmbsz" 12 +Value from controller register NVME_REG_CMBSZ +.SH "RETURN" +size of controller memory buffer in bytes diff --git a/doc/man/nvme_cmd_effects.2 b/doc/man/nvme_cmd_effects.2 new file mode 100644 index 0000000..1e05986 --- /dev/null +++ b/doc/man/nvme_cmd_effects.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_cmd_effects" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_effects \- Commands Supported and Effects +.SH SYNOPSIS +enum nvme_cmd_effects { +.br +.BI " NVME_CMD_EFFECTS_CSUPP" +, +.br +.br +.BI " NVME_CMD_EFFECTS_LBCC" +, +.br +.br +.BI " NVME_CMD_EFFECTS_NCC" +, +.br +.br +.BI " NVME_CMD_EFFECTS_NIC" +, +.br +.br +.BI " NVME_CMD_EFFECTS_CCC" +, +.br +.br +.BI " NVME_CMD_EFFECTS_CSE_MASK" +, +.br +.br +.BI " NVME_CMD_EFFECTS_UUID_SEL" + +}; +.SH Constants +.IP "NVME_CMD_EFFECTS_CSUPP" 12 +Command Supported +.IP "NVME_CMD_EFFECTS_LBCC" 12 +Logical Block Content Change +.IP "NVME_CMD_EFFECTS_NCC" 12 +Namespace Capability Change +.IP "NVME_CMD_EFFECTS_NIC" 12 +Namespace Inventory Change +.IP "NVME_CMD_EFFECTS_CCC" 12 +Controller Capability Change +.IP "NVME_CMD_EFFECTS_CSE_MASK" 12 +Command Submission and Execution +.IP "NVME_CMD_EFFECTS_UUID_SEL" 12 +UUID Selection Supported diff --git a/doc/man/nvme_cmd_effects_log.2 b/doc/man/nvme_cmd_effects_log.2 new file mode 100644 index 0000000..453098c --- /dev/null +++ b/doc/man/nvme_cmd_effects_log.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_cmd_effects_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_cmd_effects_log \- Commands Supported and Effects Log +.SH SYNOPSIS +struct nvme_cmd_effects_log { +.br +.BI " __le32 acs[256];" +.br +.BI " __le32 iocs[256];" +.br +.BI " __u8 rsvd[2048];" +.br +.BI " +}; +.br + +.SH Members +.IP "acs" 12 +Admin Command Supported +.IP "iocs" 12 +I/O Command Supported +.IP "rsvd" 12 +Reserved diff --git a/doc/man/nvme_cmd_format_mset.2 b/doc/man/nvme_cmd_format_mset.2 new file mode 100644 index 0000000..bd8f952 --- /dev/null +++ b/doc/man/nvme_cmd_format_mset.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_cmd_format_mset" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_format_mset \- Format NVM - Metadata Settings +.SH SYNOPSIS +enum nvme_cmd_format_mset { +.br +.BI " NVME_FORMAT_MSET_SEPARATE" +, +.br +.br +.BI " NVME_FORMAT_MSET_EXTENDED" + +}; +.SH Constants +.IP "NVME_FORMAT_MSET_SEPARATE" 12 +indicates that the metadata is transferred +as part of a separate buffer. +.IP "NVME_FORMAT_MSET_EXTENDED" 12 +indicates that the metadata is transferred +as part of an extended data LBA. diff --git a/doc/man/nvme_cmd_format_pi.2 b/doc/man/nvme_cmd_format_pi.2 new file mode 100644 index 0000000..d5fb1da --- /dev/null +++ b/doc/man/nvme_cmd_format_pi.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_cmd_format_pi" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_format_pi \- Format NVM - Protection Information +.SH SYNOPSIS +enum nvme_cmd_format_pi { +.br +.BI " NVME_FORMAT_PI_DISABLE" +, +.br +.br +.BI " NVME_FORMAT_PI_TYPE1" +, +.br +.br +.BI " NVME_FORMAT_PI_TYPE2" +, +.br +.br +.BI " NVME_FORMAT_PI_TYPE3" + +}; +.SH Constants +.IP "NVME_FORMAT_PI_DISABLE" 12 +Protection information is not enabled. +.IP "NVME_FORMAT_PI_TYPE1" 12 +Protection information is enabled, Type 1. +.IP "NVME_FORMAT_PI_TYPE2" 12 +Protection information is enabled, Type 2. +.IP "NVME_FORMAT_PI_TYPE3" 12 +Protection information is enabled, Type 3. diff --git a/doc/man/nvme_cmd_format_pil.2 b/doc/man/nvme_cmd_format_pil.2 new file mode 100644 index 0000000..17d3553 --- /dev/null +++ b/doc/man/nvme_cmd_format_pil.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_cmd_format_pil" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_format_pil \- Format NVM - Protection Information Location +.SH SYNOPSIS +enum nvme_cmd_format_pil { +.br +.BI " NVME_FORMAT_PIL_LAST" +, +.br +.br +.BI " NVME_FORMAT_PIL_FIRST" + +}; +.SH Constants +.IP "NVME_FORMAT_PIL_LAST" 12 +Protection information is transferred as the last +bytes of metadata. +.IP "NVME_FORMAT_PIL_FIRST" 12 +Protection information is transferred as the first +bytes of metadata. diff --git a/doc/man/nvme_cmd_format_ses.2 b/doc/man/nvme_cmd_format_ses.2 new file mode 100644 index 0000000..6374138 --- /dev/null +++ b/doc/man/nvme_cmd_format_ses.2 @@ -0,0 +1,33 @@ +.TH "libnvme" 9 "enum nvme_cmd_format_ses" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_format_ses \- Format NVM - Secure Erase Settings +.SH SYNOPSIS +enum nvme_cmd_format_ses { +.br +.BI " NVME_FORMAT_SES_NONE" +, +.br +.br +.BI " NVME_FORMAT_SES_USER_DATA_ERASE" +, +.br +.br +.BI " NVME_FORMAT_SES_CRYPTO_ERASE" + +}; +.SH Constants +.IP "NVME_FORMAT_SES_NONE" 12 +No secure erase operation requested. +.IP "NVME_FORMAT_SES_USER_DATA_ERASE" 12 +User Data Erase: All user data shall be erased, +contents of the user data after the erase is +indeterminate (e.g. the user data may be zero +filled, one filled, etc.). If a User Data Erase +is requested and all affected user data is +encrypted, then the controller is allowed +to use a cryptographic erase to perform +the requested User Data Erase. +.IP "NVME_FORMAT_SES_CRYPTO_ERASE" 12 +Cryptographic Erase: All user data shall +be erased cryptographically. This is +accomplished by deleting the encryption key. diff --git a/doc/man/nvme_cmd_get_log_lid.2 b/doc/man/nvme_cmd_get_log_lid.2 new file mode 100644 index 0000000..130d0ab --- /dev/null +++ b/doc/man/nvme_cmd_get_log_lid.2 @@ -0,0 +1,180 @@ +.TH "libnvme" 9 "enum nvme_cmd_get_log_lid" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_get_log_lid \- Get Log Page -Log Page Identifiers +.SH SYNOPSIS +enum nvme_cmd_get_log_lid { +.br +.BI " NVME_LOG_LID_SUPPORTED_LOG_PAGES" +, +.br +.br +.BI " NVME_LOG_LID_ERROR" +, +.br +.br +.BI " NVME_LOG_LID_SMART" +, +.br +.br +.BI " NVME_LOG_LID_FW_SLOT" +, +.br +.br +.BI " NVME_LOG_LID_CHANGED_NS" +, +.br +.br +.BI " NVME_LOG_LID_CMD_EFFECTS" +, +.br +.br +.BI " NVME_LOG_LID_DEVICE_SELF_TEST" +, +.br +.br +.BI " NVME_LOG_LID_TELEMETRY_HOST" +, +.br +.br +.BI " NVME_LOG_LID_TELEMETRY_CTRL" +, +.br +.br +.BI " NVME_LOG_LID_ENDURANCE_GROUP" +, +.br +.br +.BI " NVME_LOG_LID_PREDICTABLE_LAT_NVMSET" +, +.br +.br +.BI " NVME_LOG_LID_PREDICTABLE_LAT_AGG" +, +.br +.br +.BI " NVME_LOG_LID_ANA" +, +.br +.br +.BI " NVME_LOG_LID_PERSISTENT_EVENT" +, +.br +.br +.BI " NVME_LOG_LID_LBA_STATUS" +, +.br +.br +.BI " NVME_LOG_LID_ENDURANCE_GRP_EVT" +, +.br +.br +.BI " NVME_LOG_LID_MEDIA_UNIT_STATUS" +, +.br +.br +.BI " NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST" +, +.br +.br +.BI " NVME_LOG_LID_FID_SUPPORTED_EFFECTS" +, +.br +.br +.BI " NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS" +, +.br +.br +.BI " NVME_LOG_LID_BOOT_PARTITION" +, +.br +.br +.BI " NVME_LOG_LID_FDP_CONFIGS" +, +.br +.br +.BI " NVME_LOG_LID_FDP_RUH_USAGE" +, +.br +.br +.BI " NVME_LOG_LID_FDP_STATS" +, +.br +.br +.BI " NVME_LOG_LID_FDP_EVENTS" +, +.br +.br +.BI " NVME_LOG_LID_DISCOVER" +, +.br +.br +.BI " NVME_LOG_LID_RESERVATION" +, +.br +.br +.BI " NVME_LOG_LID_SANITIZE" +, +.br +.br +.BI " NVME_LOG_LID_ZNS_CHANGED_ZONES" + +}; +.SH Constants +.IP "NVME_LOG_LID_SUPPORTED_LOG_PAGES" 12 +Supported Log Pages +.IP "NVME_LOG_LID_ERROR" 12 +Error Information +.IP "NVME_LOG_LID_SMART" 12 +SMART / Health Information +.IP "NVME_LOG_LID_FW_SLOT" 12 +Firmware Slot Information +.IP "NVME_LOG_LID_CHANGED_NS" 12 +Changed Namespace List +.IP "NVME_LOG_LID_CMD_EFFECTS" 12 +Commands Supported and Effects +.IP "NVME_LOG_LID_DEVICE_SELF_TEST" 12 +Device Self-test +.IP "NVME_LOG_LID_TELEMETRY_HOST" 12 +Telemetry Host-Initiated +.IP "NVME_LOG_LID_TELEMETRY_CTRL" 12 +Telemetry Controller-Initiated +.IP "NVME_LOG_LID_ENDURANCE_GROUP" 12 +Endurance Group Information +.IP "NVME_LOG_LID_PREDICTABLE_LAT_NVMSET" 12 +Predictable Latency Per NVM Set +.IP "NVME_LOG_LID_PREDICTABLE_LAT_AGG" 12 +Predictable Latency Event Aggregate +.IP "NVME_LOG_LID_ANA" 12 +Asymmetric Namespace Access +.IP "NVME_LOG_LID_PERSISTENT_EVENT" 12 +Persistent Event Log +.IP "NVME_LOG_LID_LBA_STATUS" 12 +LBA Status Information +.IP "NVME_LOG_LID_ENDURANCE_GRP_EVT" 12 +Endurance Group Event Aggregate +.IP "NVME_LOG_LID_MEDIA_UNIT_STATUS" 12 +Media Unit Status +.IP "NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST" 12 +Supported Capacity Configuration Lis +.IP "NVME_LOG_LID_FID_SUPPORTED_EFFECTS" 12 +Feature Identifiers Supported and Effects +.IP "NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS" 12 +NVMe-MI Commands Supported and Effects +.IP "NVME_LOG_LID_BOOT_PARTITION" 12 +Boot Partition +.IP "NVME_LOG_LID_FDP_CONFIGS" 12 +FDP Configurations +.IP "NVME_LOG_LID_FDP_RUH_USAGE" 12 +Reclaim Unit Handle Usage +.IP "NVME_LOG_LID_FDP_STATS" 12 +FDP Statistics +.IP "NVME_LOG_LID_FDP_EVENTS" 12 +FDP Events +.IP "NVME_LOG_LID_DISCOVER" 12 +Discovery +.IP "NVME_LOG_LID_RESERVATION" 12 +Reservation Notification +.IP "NVME_LOG_LID_SANITIZE" 12 +Sanitize Status +.IP "NVME_LOG_LID_ZNS_CHANGED_ZONES" 12 +Changed Zone List diff --git a/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 b/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 new file mode 100644 index 0000000..0031542 --- /dev/null +++ b/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_cmd_get_log_telemetry_host_lsp" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_cmd_get_log_telemetry_host_lsp \- Telemetry Host-Initiated log specific field +.SH SYNOPSIS +enum nvme_cmd_get_log_telemetry_host_lsp { +.br +.BI " NVME_LOG_TELEM_HOST_LSP_RETAIN" +, +.br +.br +.BI " NVME_LOG_TELEM_HOST_LSP_CREATE" + +}; +.SH Constants +.IP "NVME_LOG_TELEM_HOST_LSP_RETAIN" 12 +Get Telemetry Data Blocks +.IP "NVME_LOG_TELEM_HOST_LSP_CREATE" 12 +Create Telemetry Data Blocks diff --git a/doc/man/nvme_compare.2 b/doc/man/nvme_compare.2 new file mode 100644 index 0000000..9db7b98 --- /dev/null +++ b/doc/man/nvme_compare.2 @@ -0,0 +1,12 @@ +.TH "nvme_compare" 9 "nvme_compare" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_compare \- Submit an nvme user compare command +.SH SYNOPSIS +.B "int" nvme_compare +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_connect_err.2 b/doc/man/nvme_connect_err.2 new file mode 100644 index 0000000..071869c --- /dev/null +++ b/doc/man/nvme_connect_err.2 @@ -0,0 +1,114 @@ +.TH "libnvme" 9 "enum nvme_connect_err" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_connect_err \- nvme connect error codes +.SH SYNOPSIS +enum nvme_connect_err { +.br +.BI " ENVME_CONNECT_RESOLVE" +, +.br +.br +.BI " ENVME_CONNECT_ADDRFAM" +, +.br +.br +.BI " ENVME_CONNECT_TRADDR" +, +.br +.br +.BI " ENVME_CONNECT_TARG" +, +.br +.br +.BI " ENVME_CONNECT_AARG" +, +.br +.br +.BI " ENVME_CONNECT_OPEN" +, +.br +.br +.BI " ENVME_CONNECT_WRITE" +, +.br +.br +.BI " ENVME_CONNECT_READ" +, +.br +.br +.BI " ENVME_CONNECT_PARSE" +, +.br +.br +.BI " ENVME_CONNECT_INVAL_TR" +, +.br +.br +.BI " ENVME_CONNECT_LOOKUP_SUBSYS_NAME" +, +.br +.br +.BI " ENVME_CONNECT_LOOKUP_SUBSYS" +, +.br +.br +.BI " ENVME_CONNECT_ALREADY" +, +.br +.br +.BI " ENVME_CONNECT_INVAL" +, +.br +.br +.BI " ENVME_CONNECT_ADDRINUSE" +, +.br +.br +.BI " ENVME_CONNECT_NODEV" +, +.br +.br +.BI " ENVME_CONNECT_OPNOTSUPP" +, +.br +.br +.BI " ENVME_CONNECT_CONNREFUSED" + +}; +.SH Constants +.IP "ENVME_CONNECT_RESOLVE" 12 +failed to resolve host +.IP "ENVME_CONNECT_ADDRFAM" 12 +unrecognized address family +.IP "ENVME_CONNECT_TRADDR" 12 +failed to get traddr +.IP "ENVME_CONNECT_TARG" 12 +need a transport (-t) argument +.IP "ENVME_CONNECT_AARG" 12 +need a address (-a) argument +.IP "ENVME_CONNECT_OPEN" 12 +failed to open nvme-fabrics device +.IP "ENVME_CONNECT_WRITE" 12 +failed to write to nvme-fabrics device +.IP "ENVME_CONNECT_READ" 12 +failed to read from nvme-fabrics device +.IP "ENVME_CONNECT_PARSE" 12 +failed to parse ctrl info +.IP "ENVME_CONNECT_INVAL_TR" 12 +invalid transport type +.IP "ENVME_CONNECT_LOOKUP_SUBSYS_NAME" 12 +failed to lookup subsystem name +.IP "ENVME_CONNECT_LOOKUP_SUBSYS" 12 +failed to lookup subsystem +.IP "ENVME_CONNECT_ALREADY" 12 +the connect attempt failed, already connected +.IP "ENVME_CONNECT_INVAL" 12 +invalid arguments/configuration +.IP "ENVME_CONNECT_ADDRINUSE" 12 +hostnqn already in use +.IP "ENVME_CONNECT_NODEV" 12 +invalid interface +.IP "ENVME_CONNECT_OPNOTSUPP" 12 +not supported +.IP "ENVME_CONNECT_CONNREFUSED" 12 +connection refused diff --git a/doc/man/nvme_constants.2 b/doc/man/nvme_constants.2 new file mode 100644 index 0000000..e16aec4 --- /dev/null +++ b/doc/man/nvme_constants.2 @@ -0,0 +1,199 @@ +.TH "libnvme" 9 "enum nvme_constants" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_constants \- A place to stash various constant nvme values +.SH SYNOPSIS +enum nvme_constants { +.br +.BI " NVME_NSID_ALL" +, +.br +.br +.BI " NVME_NSID_NONE" +, +.br +.br +.BI " NVME_UUID_NONE" +, +.br +.br +.BI " NVME_CNTLID_NONE" +, +.br +.br +.BI " NVME_CNSSPECID_NONE" +, +.br +.br +.BI " NVME_LOG_LSP_NONE" +, +.br +.br +.BI " NVME_LOG_LSI_NONE" +, +.br +.br +.BI " NVME_LOG_LPO_NONE" +, +.br +.br +.BI " NVME_IDENTIFY_DATA_SIZE" +, +.br +.br +.BI " NVME_LOG_SUPPORTED_LOG_PAGES_MAX" +, +.br +.br +.BI " NVME_ID_NVMSET_LIST_MAX" +, +.br +.br +.BI " NVME_ID_UUID_LIST_MAX" +, +.br +.br +.BI " NVME_ID_CTRL_LIST_MAX" +, +.br +.br +.BI " NVME_ID_NS_LIST_MAX" +, +.br +.br +.BI " NVME_ID_SECONDARY_CTRL_MAX" +, +.br +.br +.BI " NVME_ID_DOMAIN_LIST_MAX" +, +.br +.br +.BI " NVME_ID_ENDURANCE_GROUP_LIST_MAX" +, +.br +.br +.BI " NVME_ID_ND_DESCRIPTOR_MAX" +, +.br +.br +.BI " NVME_FEAT_LBA_RANGE_MAX" +, +.br +.br +.BI " NVME_LOG_ST_MAX_RESULTS" +, +.br +.br +.BI " NVME_LOG_TELEM_BLOCK_SIZE" +, +.br +.br +.BI " NVME_LOG_FID_SUPPORTED_EFFECTS_MAX" +, +.br +.br +.BI " NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX" +, +.br +.br +.BI " NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED" +, +.br +.br +.BI " NVME_DSM_MAX_RANGES" +, +.br +.br +.BI " NVME_NQN_LENGTH" +, +.br +.br +.BI " NVMF_TRADDR_SIZE" +, +.br +.br +.BI " NVMF_TSAS_SIZE" +, +.br +.br +.BI " NVME_ZNS_CHANGED_ZONES_MAX" + +}; +.SH Constants +.IP "NVME_NSID_ALL" 12 +A broadcast value that is used to specify all +namespaces +.IP "NVME_NSID_NONE" 12 +The invalid namespace id, for when the nsid +parameter is not used in a command +.IP "NVME_UUID_NONE" 12 +Use to omit a uuid command parameter +.IP "NVME_CNTLID_NONE" 12 +Use to omit a cntlid command parameter +.IP "NVME_CNSSPECID_NONE" 12 +Use to omit a cns_specific_id command parameter +.IP "NVME_LOG_LSP_NONE" 12 +Use to omit a log lsp command parameter +.IP "NVME_LOG_LSI_NONE" 12 +Use to omit a log lsi command parameter +.IP "NVME_LOG_LPO_NONE" 12 +Use to omit a log lpo command parameter +.IP "NVME_IDENTIFY_DATA_SIZE" 12 +The transfer size for nvme identify commands +.IP "NVME_LOG_SUPPORTED_LOG_PAGES_MAX" 12 +The largest possible index in the supported +log pages log. +.IP "NVME_ID_NVMSET_LIST_MAX" 12 +The largest possible nvmset index in identify +nvmeset +.IP "NVME_ID_UUID_LIST_MAX" 12 +The largest possible uuid index in identify +uuid list +.IP "NVME_ID_CTRL_LIST_MAX" 12 +The largest possible controller index in +identify controller list +.IP "NVME_ID_NS_LIST_MAX" 12 +The largest possible namespace index in +identify namespace list +.IP "NVME_ID_SECONDARY_CTRL_MAX" 12 +The largest possible secondary controller index +in identify secondary controller +.IP "NVME_ID_DOMAIN_LIST_MAX" 12 +The largest possible domain index in the +in domain list +.IP "NVME_ID_ENDURANCE_GROUP_LIST_MAX" 12 +The largest possible endurance group +index in the endurance group list +.IP "NVME_ID_ND_DESCRIPTOR_MAX" 12 +The largest possible namespace granularity +index in the namespace granularity descriptor +list +.IP "NVME_FEAT_LBA_RANGE_MAX" 12 +The largest possible LBA range index in feature +lba range type +.IP "NVME_LOG_ST_MAX_RESULTS" 12 +The largest possible self test result index in the +device self test log +.IP "NVME_LOG_TELEM_BLOCK_SIZE" 12 +Specification defined size of Telemetry Data Blocks +.IP "NVME_LOG_FID_SUPPORTED_EFFECTS_MAX" 12 +The largest possible FID index in the +feature identifiers effects log. +.IP "NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX" 12 +The largest possible MI Command index +in the MI Command effects log. +.IP "NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED" 12 +The reserved space in the MI Command +effects log. +.IP "NVME_DSM_MAX_RANGES" 12 +The largest possible range index in a data-set +management command +.IP "NVME_NQN_LENGTH" 12 +Max length for NVMe Qualified Name +.IP "NVMF_TRADDR_SIZE" 12 +Max Transport Address size +.IP "NVMF_TSAS_SIZE" 12 +Max Transport Specific Address Subtype size +.IP "NVME_ZNS_CHANGED_ZONES_MAX" 12 +Max number of zones in the changed zones log +page diff --git a/doc/man/nvme_copy.2 b/doc/man/nvme_copy.2 new file mode 100644 index 0000000..5c68de3 --- /dev/null +++ b/doc/man/nvme_copy.2 @@ -0,0 +1,12 @@ +.TH "nvme_copy" 9 "nvme_copy" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_copy \- Copy command +.SH SYNOPSIS +.B "int" nvme_copy +.BI "(struct nvme_copy_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_copy_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_copy_range.2 b/doc/man/nvme_copy_range.2 new file mode 100644 index 0000000..473a8a8 --- /dev/null +++ b/doc/man/nvme_copy_range.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "struct nvme_copy_range" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_copy_range \- Copy - Source Range Entries Descriptor Format +.SH SYNOPSIS +struct nvme_copy_range { +.br +.BI " __u8 rsvd0[8];" +.br +.BI " __le64 slba;" +.br +.BI " __le16 nlb;" +.br +.BI " __u8 rsvd18[6];" +.br +.BI " __le32 eilbrt;" +.br +.BI " __le16 elbatm;" +.br +.BI " __le16 elbat;" +.br +.BI " +}; +.br + +.SH Members +.IP "rsvd0" 12 +Reserved +.IP "slba" 12 +Starting LBA +.IP "nlb" 12 +Number of Logical Blocks +.IP "rsvd18" 12 +Reserved +.IP "eilbrt" 12 +Expected Initial Logical Block Reference Tag / +Expected Logical Block Storage Tag +.IP "elbatm" 12 +Expected Logical Block Application Tag Mask +.IP "elbat" 12 +Expected Logical Block Application Tag diff --git a/doc/man/nvme_copy_range_f1.2 b/doc/man/nvme_copy_range_f1.2 new file mode 100644 index 0000000..8bd3430 --- /dev/null +++ b/doc/man/nvme_copy_range_f1.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "struct nvme_copy_range_f1" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_copy_range_f1 \- Copy - Source Range Entries Descriptor Format 1h +.SH SYNOPSIS +struct nvme_copy_range_f1 { +.br +.BI " __u8 rsvd0[8];" +.br +.BI " __le64 slba;" +.br +.BI " __le16 nlb;" +.br +.BI " __u8 rsvd18[8];" +.br +.BI " __u8 elbt[10];" +.br +.BI " __le16 elbatm;" +.br +.BI " __le16 elbat;" +.br +.BI " +}; +.br + +.SH Members +.IP "rsvd0" 12 +Reserved +.IP "slba" 12 +Starting LBA +.IP "nlb" 12 +Number of Logical Blocks +.IP "rsvd18" 12 +Reserved +.IP "elbt" 12 +Expected Initial Logical Block Reference Tag / +Expected Logical Block Storage Tag +.IP "elbatm" 12 +Expected Logical Block Application Tag Mask +.IP "elbat" 12 +Expected Logical Block Application Tag diff --git a/doc/man/nvme_create_ctrl.2 b/doc/man/nvme_create_ctrl.2 new file mode 100644 index 0000000..1f2d1c9 --- /dev/null +++ b/doc/man/nvme_create_ctrl.2 @@ -0,0 +1,31 @@ +.TH "nvme_create_ctrl" 9 "nvme_create_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_create_ctrl \- Allocate an unconnected NVMe controller +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_create_ctrl +.BI "(nvme_root_t r " "," +.BI "const char *subsysnqn " "," +.BI "const char *transport " "," +.BI "const char *traddr " "," +.BI "const char *host_traddr " "," +.BI "const char *host_iface " "," +.BI "const char *trsvcid " ");" +.SH ARGUMENTS +.IP "r" 12 +NVMe root element +.IP "subsysnqn" 12 +Subsystem NQN +.IP "transport" 12 +Transport type +.IP "traddr" 12 +Transport address +.IP "host_traddr" 12 +Host transport address +.IP "host_iface" 12 +Host interface name +.IP "trsvcid" 12 +Transport service ID +.SH "DESCRIPTION" +Creates an unconnected controller to be used for \fBnvme_add_ctrl\fP. +.SH "RETURN" +Controller instance diff --git a/doc/man/nvme_create_root.2 b/doc/man/nvme_create_root.2 new file mode 100644 index 0000000..82337ee --- /dev/null +++ b/doc/man/nvme_create_root.2 @@ -0,0 +1,14 @@ +.TH "nvme_create_root" 9 "nvme_create_root" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_create_root \- Initialize root object +.SH SYNOPSIS +.B "nvme_root_t" nvme_create_root +.BI "(FILE *fp " "," +.BI "int log_level " ");" +.SH ARGUMENTS +.IP "fp" 12 +File descriptor for logging messages +.IP "log_level" 12 +Logging level to use +.SH "RETURN" +Initialized \fInvme_root_t\fP object diff --git a/doc/man/nvme_csi.2 b/doc/man/nvme_csi.2 new file mode 100644 index 0000000..f879e83 --- /dev/null +++ b/doc/man/nvme_csi.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_csi" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_csi \- Defined command set indicators +.SH SYNOPSIS +enum nvme_csi { +.br +.BI " NVME_CSI_NVM" +, +.br +.br +.BI " NVME_CSI_KV" +, +.br +.br +.BI " NVME_CSI_ZNS" + +}; +.SH Constants +.IP "NVME_CSI_NVM" 12 +NVM Command Set Indicator +.IP "NVME_CSI_KV" 12 +Key Value Command Set +.IP "NVME_CSI_ZNS" 12 +Zoned Namespace Command Set diff --git a/doc/man/nvme_ctrl_first_ns.2 b/doc/man/nvme_ctrl_first_ns.2 new file mode 100644 index 0000000..6318f2e --- /dev/null +++ b/doc/man/nvme_ctrl_first_ns.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_first_ns" 9 "nvme_ctrl_first_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_first_ns \- Start namespace iterator +.SH SYNOPSIS +.B "nvme_ns_t" nvme_ctrl_first_ns +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +First \fInvme_ns_t\fP object of an \fIc\fP iterator diff --git a/doc/man/nvme_ctrl_first_path.2 b/doc/man/nvme_ctrl_first_path.2 new file mode 100644 index 0000000..2c4fdf3 --- /dev/null +++ b/doc/man/nvme_ctrl_first_path.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_first_path" 9 "nvme_ctrl_first_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_first_path \- Start path iterator +.SH SYNOPSIS +.B "nvme_path_t" nvme_ctrl_first_path +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +First \fInvme_path_t\fP object of an \fIc\fP iterator diff --git a/doc/man/nvme_ctrl_for_each_ns.2 b/doc/man/nvme_ctrl_for_each_ns.2 new file mode 100644 index 0000000..7527215 --- /dev/null +++ b/doc/man/nvme_ctrl_for_each_ns.2 @@ -0,0 +1,12 @@ +.TH "nvme_ctrl_for_each_ns" 9 "nvme_ctrl_for_each_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_for_each_ns \- Traverse namespaces +.SH SYNOPSIS +.B "nvme_ctrl_for_each_ns +.BI "(c " "," +.BI "n " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "n" 12 +\fInvme_ns_t\fP object diff --git a/doc/man/nvme_ctrl_for_each_ns_safe.2 b/doc/man/nvme_ctrl_for_each_ns_safe.2 new file mode 100644 index 0000000..69ad287 --- /dev/null +++ b/doc/man/nvme_ctrl_for_each_ns_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_ctrl_for_each_ns_safe" 9 "nvme_ctrl_for_each_ns_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_for_each_ns_safe \- Traverse namespaces +.SH SYNOPSIS +.B "nvme_ctrl_for_each_ns_safe +.BI "(c " "," +.BI "n " "," +.BI "_n " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "n" 12 +\fInvme_ns_t\fP object +.IP "_n" 12 +A \fInvme_ns_t_node\fP to use as temporary storage diff --git a/doc/man/nvme_ctrl_for_each_path.2 b/doc/man/nvme_ctrl_for_each_path.2 new file mode 100644 index 0000000..bbbfc99 --- /dev/null +++ b/doc/man/nvme_ctrl_for_each_path.2 @@ -0,0 +1,12 @@ +.TH "nvme_ctrl_for_each_path" 9 "nvme_ctrl_for_each_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_for_each_path \- Traverse paths +.SH SYNOPSIS +.B "nvme_ctrl_for_each_path +.BI "(c " "," +.BI "p " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "p" 12 +\fInvme_path_t\fP object diff --git a/doc/man/nvme_ctrl_for_each_path_safe.2 b/doc/man/nvme_ctrl_for_each_path_safe.2 new file mode 100644 index 0000000..effebd0 --- /dev/null +++ b/doc/man/nvme_ctrl_for_each_path_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_ctrl_for_each_path_safe" 9 "nvme_ctrl_for_each_path_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_for_each_path_safe \- Traverse paths +.SH SYNOPSIS +.B "nvme_ctrl_for_each_path_safe +.BI "(c " "," +.BI "p " "," +.BI "_p " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "p" 12 +\fInvme_path_t\fP object +.IP "_p" 12 +A \fInvme_path_t_node\fP to use as temporary storage diff --git a/doc/man/nvme_ctrl_get_address.2 b/doc/man/nvme_ctrl_get_address.2 new file mode 100644 index 0000000..e4341ea --- /dev/null +++ b/doc/man/nvme_ctrl_get_address.2 @@ -0,0 +1,12 @@ +.TH "nvme_ctrl_get_address" 9 "nvme_ctrl_get_address" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_address \- Address string of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_address +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +NVMe-over-Fabrics address string of \fIc\fP or empty string +of no address is present. diff --git a/doc/man/nvme_ctrl_get_config.2 b/doc/man/nvme_ctrl_get_config.2 new file mode 100644 index 0000000..a9a9729 --- /dev/null +++ b/doc/man/nvme_ctrl_get_config.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_config" 9 "nvme_ctrl_get_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_config \- Fabrics configuration of a controller +.SH SYNOPSIS +.B "struct nvme_fabrics_config *" nvme_ctrl_get_config +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Fabrics configuration of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_dhchap_host_key.2 b/doc/man/nvme_ctrl_get_dhchap_host_key.2 new file mode 100644 index 0000000..bb0bee4 --- /dev/null +++ b/doc/man/nvme_ctrl_get_dhchap_host_key.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_dhchap_host_key" 9 "nvme_ctrl_get_dhchap_host_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_dhchap_host_key \- Return host key +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_dhchap_host_key +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be checked +.SH "RETURN" +DH-HMAC-CHAP host key or NULL if not set diff --git a/doc/man/nvme_ctrl_get_dhchap_key.2 b/doc/man/nvme_ctrl_get_dhchap_key.2 new file mode 100644 index 0000000..f60f0a2 --- /dev/null +++ b/doc/man/nvme_ctrl_get_dhchap_key.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_dhchap_key" 9 "nvme_ctrl_get_dhchap_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_dhchap_key \- Return controller key +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_dhchap_key +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller for which the key should be set +.SH "RETURN" +DH-HMAC-CHAP controller key or NULL if not set diff --git a/doc/man/nvme_ctrl_get_fd.2 b/doc/man/nvme_ctrl_get_fd.2 new file mode 100644 index 0000000..abaf6ef --- /dev/null +++ b/doc/man/nvme_ctrl_get_fd.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_fd" 9 "nvme_ctrl_get_fd" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_fd \- Get associated file descriptor +.SH SYNOPSIS +.B "int" nvme_ctrl_get_fd +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +File descriptor associated with \fIc\fP or -1 diff --git a/doc/man/nvme_ctrl_get_firmware.2 b/doc/man/nvme_ctrl_get_firmware.2 new file mode 100644 index 0000000..4818b25 --- /dev/null +++ b/doc/man/nvme_ctrl_get_firmware.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_firmware" 9 "nvme_ctrl_get_firmware" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_firmware \- Firmware string of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_firmware +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Firmware string of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_host_iface.2 b/doc/man/nvme_ctrl_get_host_iface.2 new file mode 100644 index 0000000..0c058ff --- /dev/null +++ b/doc/man/nvme_ctrl_get_host_iface.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_host_iface" 9 "nvme_ctrl_get_host_iface" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_host_iface \- Host interface name of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_host_iface +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Host interface name of \fIc\fP (if present) diff --git a/doc/man/nvme_ctrl_get_host_traddr.2 b/doc/man/nvme_ctrl_get_host_traddr.2 new file mode 100644 index 0000000..fabe75a --- /dev/null +++ b/doc/man/nvme_ctrl_get_host_traddr.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_host_traddr" 9 "nvme_ctrl_get_host_traddr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_host_traddr \- Host transport address of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_host_traddr +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Host transport address of \fIc\fP (if present) diff --git a/doc/man/nvme_ctrl_get_model.2 b/doc/man/nvme_ctrl_get_model.2 new file mode 100644 index 0000000..0d780a2 --- /dev/null +++ b/doc/man/nvme_ctrl_get_model.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_model" 9 "nvme_ctrl_get_model" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_model \- Model of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_model +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Model string of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_name.2 b/doc/man/nvme_ctrl_get_name.2 new file mode 100644 index 0000000..29276c9 --- /dev/null +++ b/doc/man/nvme_ctrl_get_name.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_name" 9 "nvme_ctrl_get_name" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_name \- sysfs name of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_name +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +sysfs name of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_numa_node.2 b/doc/man/nvme_ctrl_get_numa_node.2 new file mode 100644 index 0000000..68365ca --- /dev/null +++ b/doc/man/nvme_ctrl_get_numa_node.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_numa_node" 9 "nvme_ctrl_get_numa_node" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_numa_node \- NUMA node of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_numa_node +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +String indicating the NUMA node diff --git a/doc/man/nvme_ctrl_get_queue_count.2 b/doc/man/nvme_ctrl_get_queue_count.2 new file mode 100644 index 0000000..a996dd0 --- /dev/null +++ b/doc/man/nvme_ctrl_get_queue_count.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_queue_count" 9 "nvme_ctrl_get_queue_count" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_queue_count \- Queue count of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_queue_count +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Queue count of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_serial.2 b/doc/man/nvme_ctrl_get_serial.2 new file mode 100644 index 0000000..867d23c --- /dev/null +++ b/doc/man/nvme_ctrl_get_serial.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_serial" 9 "nvme_ctrl_get_serial" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_serial \- Serial number of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_serial +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Serial number string of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_sqsize.2 b/doc/man/nvme_ctrl_get_sqsize.2 new file mode 100644 index 0000000..0a56ac6 --- /dev/null +++ b/doc/man/nvme_ctrl_get_sqsize.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_sqsize" 9 "nvme_ctrl_get_sqsize" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_sqsize \- SQ size of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_sqsize +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +SQ size (as string) of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_state.2 b/doc/man/nvme_ctrl_get_state.2 new file mode 100644 index 0000000..3ea67c4 --- /dev/null +++ b/doc/man/nvme_ctrl_get_state.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_state" 9 "nvme_ctrl_get_state" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_state \- Running state of an controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_state +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +String indicating the running state of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_subsysnqn.2 b/doc/man/nvme_ctrl_get_subsysnqn.2 new file mode 100644 index 0000000..f940c43 --- /dev/null +++ b/doc/man/nvme_ctrl_get_subsysnqn.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_subsysnqn" 9 "nvme_ctrl_get_subsysnqn" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_subsysnqn \- Subsystem NQN of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_subsysnqn +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Subsystem NQN of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_subsystem.2 b/doc/man/nvme_ctrl_get_subsystem.2 new file mode 100644 index 0000000..c514e54 --- /dev/null +++ b/doc/man/nvme_ctrl_get_subsystem.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_subsystem" 9 "nvme_ctrl_get_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_subsystem \- Parent subsystem of a controller +.SH SYNOPSIS +.B "nvme_subsystem_t" nvme_ctrl_get_subsystem +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Parent nvme_subsystem_t object diff --git a/doc/man/nvme_ctrl_get_sysfs_dir.2 b/doc/man/nvme_ctrl_get_sysfs_dir.2 new file mode 100644 index 0000000..3e87bf0 --- /dev/null +++ b/doc/man/nvme_ctrl_get_sysfs_dir.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_sysfs_dir" 9 "nvme_ctrl_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_sysfs_dir \- sysfs directory of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_sysfs_dir +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +sysfs directory name of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_traddr.2 b/doc/man/nvme_ctrl_get_traddr.2 new file mode 100644 index 0000000..e0a5bda --- /dev/null +++ b/doc/man/nvme_ctrl_get_traddr.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_traddr" 9 "nvme_ctrl_get_traddr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_traddr \- Transport address of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_traddr +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Transport address of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_transport.2 b/doc/man/nvme_ctrl_get_transport.2 new file mode 100644 index 0000000..5404de8 --- /dev/null +++ b/doc/man/nvme_ctrl_get_transport.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_transport" 9 "nvme_ctrl_get_transport" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_transport \- Transport type of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_transport +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Transport type of \fIc\fP diff --git a/doc/man/nvme_ctrl_get_trsvcid.2 b/doc/man/nvme_ctrl_get_trsvcid.2 new file mode 100644 index 0000000..f1ffc0f --- /dev/null +++ b/doc/man/nvme_ctrl_get_trsvcid.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_get_trsvcid" 9 "nvme_ctrl_get_trsvcid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_get_trsvcid \- Transport service identifier of a controller +.SH SYNOPSIS +.B "const char *" nvme_ctrl_get_trsvcid +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Transport service identifier of \fIc\fP (if present) diff --git a/doc/man/nvme_ctrl_identify.2 b/doc/man/nvme_ctrl_identify.2 new file mode 100644 index 0000000..d2e37eb --- /dev/null +++ b/doc/man/nvme_ctrl_identify.2 @@ -0,0 +1,17 @@ +.TH "nvme_ctrl_identify" 9 "nvme_ctrl_identify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_identify \- Issues an 'identify controller' command +.SH SYNOPSIS +.B "int" nvme_ctrl_identify +.BI "(nvme_ctrl_t c " "," +.BI "struct nvme_id_ctrl *id " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "id" 12 +Identify controller data structure +.SH "DESCRIPTION" +Issues an 'identify controller' command to \fIc\fP and copies the +data into \fIid\fP. +.SH "RETURN" +0 on success or -1 on failure. diff --git a/doc/man/nvme_ctrl_is_discovered.2 b/doc/man/nvme_ctrl_is_discovered.2 new file mode 100644 index 0000000..ba56977 --- /dev/null +++ b/doc/man/nvme_ctrl_is_discovered.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_is_discovered" 9 "nvme_ctrl_is_discovered" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_is_discovered \- Returns the value of the 'discovered' flag +.SH SYNOPSIS +.B "bool" nvme_ctrl_is_discovered +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Value of the 'discovered' flag of \fIc\fP diff --git a/doc/man/nvme_ctrl_is_discovery_ctrl.2 b/doc/man/nvme_ctrl_is_discovery_ctrl.2 new file mode 100644 index 0000000..3681b6c --- /dev/null +++ b/doc/man/nvme_ctrl_is_discovery_ctrl.2 @@ -0,0 +1,14 @@ +.TH "nvme_ctrl_is_discovery_ctrl" 9 "nvme_ctrl_is_discovery_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_is_discovery_ctrl \- Check the 'discovery_ctrl' flag +.SH SYNOPSIS +.B "bool" nvme_ctrl_is_discovery_ctrl +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be checked +.SH "DESCRIPTION" +Returns the value of the 'discovery_ctrl' flag which specifies whether +\fIc\fP connects to a discovery subsystem. +.SH "RETURN" +Value of the 'discover_ctrl' flag diff --git a/doc/man/nvme_ctrl_is_persistent.2 b/doc/man/nvme_ctrl_is_persistent.2 new file mode 100644 index 0000000..46f2bf2 --- /dev/null +++ b/doc/man/nvme_ctrl_is_persistent.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_is_persistent" 9 "nvme_ctrl_is_persistent" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_is_persistent \- Returns the value of the 'persistent' flag +.SH SYNOPSIS +.B "bool" nvme_ctrl_is_persistent +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "RETURN" +Value of the 'persistent' flag of \fIc\fP diff --git a/doc/man/nvme_ctrl_is_unique_discovery_ctrl.2 b/doc/man/nvme_ctrl_is_unique_discovery_ctrl.2 new file mode 100644 index 0000000..a7ca604 --- /dev/null +++ b/doc/man/nvme_ctrl_is_unique_discovery_ctrl.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrl_is_unique_discovery_ctrl" 9 "nvme_ctrl_is_unique_discovery_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_is_unique_discovery_ctrl \- Check the 'unique_discovery_ctrl' flag +.SH SYNOPSIS +.B "bool" nvme_ctrl_is_unique_discovery_ctrl +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be checked +.SH "RETURN" +Value of the 'unique_discovery_ctrl' flag diff --git a/doc/man/nvme_ctrl_list.2 b/doc/man/nvme_ctrl_list.2 new file mode 100644 index 0000000..2469dad --- /dev/null +++ b/doc/man/nvme_ctrl_list.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_ctrl_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_ctrl_list \- Controller List +.SH SYNOPSIS +struct nvme_ctrl_list { +.br +.BI " __le16 num;" +.br +.BI " __le16 identifier[NVME_ID_CTRL_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "num" 12 +Number of Identifiers +.IP "identifier" 12 +NVM subsystem unique controller identifier diff --git a/doc/man/nvme_ctrl_metadata_type.2 b/doc/man/nvme_ctrl_metadata_type.2 new file mode 100644 index 0000000..8ae70d3 --- /dev/null +++ b/doc/man/nvme_ctrl_metadata_type.2 @@ -0,0 +1,108 @@ +.TH "libnvme" 9 "enum nvme_ctrl_metadata_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ctrl_metadata_type \- Controller Metadata Element Types +.SH SYNOPSIS +enum nvme_ctrl_metadata_type { +.br +.BI " NVME_CTRL_METADATA_OS_CTRL_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_OS_DRIVER_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_OS_DRIVER_VER" +, +.br +.br +.BI " NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER" +, +.br +.br +.BI " NVME_CTRL_METADATA_SYS_PROC_MODEL" +, +.br +.br +.BI " NVME_CTRL_METADATA_CHIPSET_DRV_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_CHIPSET_DRV_VERSION" +, +.br +.br +.BI " NVME_CTRL_METADATA_OS_NAME_AND_BUILD" +, +.br +.br +.BI " NVME_CTRL_METADATA_SYS_PROD_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_FIRMWARE_VERSION" +, +.br +.br +.BI " NVME_CTRL_METADATA_OS_DRIVER_FILENAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_DISPLAY_DRV_NAME" +, +.br +.br +.BI " NVME_CTRL_METADATA_DISPLAY_DRV_VERSION" +, +.br +.br +.BI " NVME_CTRL_METADATA_HOST_DET_FAIL_REC" + +}; +.SH Constants +.IP "NVME_CTRL_METADATA_OS_CTRL_NAME" 12 +Name of the controller in +the operating system. +.IP "NVME_CTRL_METADATA_OS_DRIVER_NAME" 12 +Name of the driver in the +operating system. +.IP "NVME_CTRL_METADATA_OS_DRIVER_VER" 12 +Version of the driver in +the operating system. +.IP "NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME" 12 +Name of the controller in +the pre-boot environment. +.IP "NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME" 12 +Name of the driver in the +pre-boot environment. +.IP "NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER" 12 +Version of the driver in the +pre-boot environment. +.IP "NVME_CTRL_METADATA_SYS_PROC_MODEL" 12 +Model of the processor. +.IP "NVME_CTRL_METADATA_CHIPSET_DRV_NAME" 12 +Chipset driver name. +.IP "NVME_CTRL_METADATA_CHIPSET_DRV_VERSION" 12 +Chipset driver version. +.IP "NVME_CTRL_METADATA_OS_NAME_AND_BUILD" 12 +Operating system name and build. +.IP "NVME_CTRL_METADATA_SYS_PROD_NAME" 12 +System product name. +.IP "NVME_CTRL_METADATA_FIRMWARE_VERSION" 12 +Host firmware (e.g UEFI) version. +.IP "NVME_CTRL_METADATA_OS_DRIVER_FILENAME" 12 +Operating system driver filename. +.IP "NVME_CTRL_METADATA_DISPLAY_DRV_NAME" 12 +Display driver name. +.IP "NVME_CTRL_METADATA_DISPLAY_DRV_VERSION" 12 +Display driver version. +.IP "NVME_CTRL_METADATA_HOST_DET_FAIL_REC" 12 +Failure record. diff --git a/doc/man/nvme_ctrl_next_ns.2 b/doc/man/nvme_ctrl_next_ns.2 new file mode 100644 index 0000000..bb6163a --- /dev/null +++ b/doc/man/nvme_ctrl_next_ns.2 @@ -0,0 +1,14 @@ +.TH "nvme_ctrl_next_ns" 9 "nvme_ctrl_next_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_next_ns \- Next namespace iterator +.SH SYNOPSIS +.B "nvme_ns_t" nvme_ctrl_next_ns +.BI "(nvme_ctrl_t c " "," +.BI "nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "n" 12 +Previous nvme_ns_t iterator +.SH "RETURN" +Next nvme_ns_t object of an \fIc\fP iterator diff --git a/doc/man/nvme_ctrl_next_path.2 b/doc/man/nvme_ctrl_next_path.2 new file mode 100644 index 0000000..b3e323e --- /dev/null +++ b/doc/man/nvme_ctrl_next_path.2 @@ -0,0 +1,14 @@ +.TH "nvme_ctrl_next_path" 9 "nvme_ctrl_next_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_next_path \- Next path iterator +.SH SYNOPSIS +.B "nvme_path_t" nvme_ctrl_next_path +.BI "(nvme_ctrl_t c " "," +.BI "nvme_path_t p " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "p" 12 +Previous \fInvme_path_t\fP object of an \fIc\fP iterator +.SH "RETURN" +Next \fInvme_path_t\fP object of an \fIc\fP iterator diff --git a/doc/man/nvme_ctrl_reset.2 b/doc/man/nvme_ctrl_reset.2 new file mode 100644 index 0000000..9d8e129 --- /dev/null +++ b/doc/man/nvme_ctrl_reset.2 @@ -0,0 +1,13 @@ +.TH "nvme_ctrl_reset" 9 "nvme_ctrl_reset" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_reset \- Initiate a controller reset +.SH SYNOPSIS +.B "int" nvme_ctrl_reset +.BI "(int fd " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.SH "DESCRIPTION" +This should only be sent to controller handles, not to namespaces. +.SH "RETURN" +0 if a reset was initiated or -1 with errno set otherwise. diff --git a/doc/man/nvme_ctrl_set_dhchap_host_key.2 b/doc/man/nvme_ctrl_set_dhchap_host_key.2 new file mode 100644 index 0000000..d1c82b0 --- /dev/null +++ b/doc/man/nvme_ctrl_set_dhchap_host_key.2 @@ -0,0 +1,12 @@ +.TH "nvme_ctrl_set_dhchap_host_key" 9 "nvme_ctrl_set_dhchap_host_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_dhchap_host_key \- Set host key +.SH SYNOPSIS +.B "void" nvme_ctrl_set_dhchap_host_key +.BI "(nvme_ctrl_t c " "," +.BI "const char *key " ");" +.SH ARGUMENTS +.IP "c" 12 +Host for which the key should be set +.IP "key" 12 +DH-HMAC-CHAP Key to set or NULL to clear existing key diff --git a/doc/man/nvme_ctrl_set_dhchap_key.2 b/doc/man/nvme_ctrl_set_dhchap_key.2 new file mode 100644 index 0000000..23a61a8 --- /dev/null +++ b/doc/man/nvme_ctrl_set_dhchap_key.2 @@ -0,0 +1,12 @@ +.TH "nvme_ctrl_set_dhchap_key" 9 "nvme_ctrl_set_dhchap_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_dhchap_key \- Set controller key +.SH SYNOPSIS +.B "void" nvme_ctrl_set_dhchap_key +.BI "(nvme_ctrl_t c " "," +.BI "const char *key " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller for which the key should be set +.IP "key" 12 +DH-HMAC-CHAP Key to set or NULL to clear existing key diff --git a/doc/man/nvme_ctrl_set_discovered.2 b/doc/man/nvme_ctrl_set_discovered.2 new file mode 100644 index 0000000..77d98c5 --- /dev/null +++ b/doc/man/nvme_ctrl_set_discovered.2 @@ -0,0 +1,14 @@ +.TH "nvme_ctrl_set_discovered" 9 "nvme_ctrl_set_discovered" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_discovered \- Set the 'discovered' flag +.SH SYNOPSIS +.B "void" nvme_ctrl_set_discovered +.BI "(nvme_ctrl_t c " "," +.BI "bool discovered " ");" +.SH ARGUMENTS +.IP "c" 12 +nvme_ctrl_t object +.IP "discovered" 12 +Value of the 'discovered' flag +.SH "DESCRIPTION" +Set the 'discovered' flag of \fIc\fP to \fIdiscovered\fP diff --git a/doc/man/nvme_ctrl_set_discovery_ctrl.2 b/doc/man/nvme_ctrl_set_discovery_ctrl.2 new file mode 100644 index 0000000..304aa1d --- /dev/null +++ b/doc/man/nvme_ctrl_set_discovery_ctrl.2 @@ -0,0 +1,15 @@ +.TH "nvme_ctrl_set_discovery_ctrl" 9 "nvme_ctrl_set_discovery_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_discovery_ctrl \- Set the 'discovery_ctrl' flag +.SH SYNOPSIS +.B "void" nvme_ctrl_set_discovery_ctrl +.BI "(nvme_ctrl_t c " "," +.BI "bool discovery " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be modified +.IP "discovery" 12 +value of the discovery_ctrl flag +.SH "DESCRIPTION" +Sets the 'discovery_ctrl' flag in \fIc\fP to specify whether +\fIc\fP connects to a discovery subsystem. diff --git a/doc/man/nvme_ctrl_set_persistent.2 b/doc/man/nvme_ctrl_set_persistent.2 new file mode 100644 index 0000000..fe1d73e --- /dev/null +++ b/doc/man/nvme_ctrl_set_persistent.2 @@ -0,0 +1,14 @@ +.TH "nvme_ctrl_set_persistent" 9 "nvme_ctrl_set_persistent" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_persistent \- Set the 'persistent' flag +.SH SYNOPSIS +.B "void" nvme_ctrl_set_persistent +.BI "(nvme_ctrl_t c " "," +.BI "bool persistent " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "persistent" 12 +value of the 'persistent' flag +.SH "DESCRIPTION" +Set the 'persistent' flag of \fIc\fP to \fIpersistent\fP diff --git a/doc/man/nvme_ctrl_set_unique_discovery_ctrl.2 b/doc/man/nvme_ctrl_set_unique_discovery_ctrl.2 new file mode 100644 index 0000000..4de9b06 --- /dev/null +++ b/doc/man/nvme_ctrl_set_unique_discovery_ctrl.2 @@ -0,0 +1,15 @@ +.TH "nvme_ctrl_set_unique_discovery_ctrl" 9 "nvme_ctrl_set_unique_discovery_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrl_set_unique_discovery_ctrl \- Set the 'unique_discovery_ctrl' flag +.SH SYNOPSIS +.B "void" nvme_ctrl_set_unique_discovery_ctrl +.BI "(nvme_ctrl_t c " "," +.BI "bool unique " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be modified +.IP "unique" 12 +value of the unique_disc_ctrl flag +.SH "DESCRIPTION" +Sets the 'unique_discovery_ctrl' flag in \fIc\fP to specify wheter +\fIc\fP is a unique discovery controller diff --git a/doc/man/nvme_ctrls_filter.2 b/doc/man/nvme_ctrls_filter.2 new file mode 100644 index 0000000..bf31bc5 --- /dev/null +++ b/doc/man/nvme_ctrls_filter.2 @@ -0,0 +1,11 @@ +.TH "nvme_ctrls_filter" 9 "nvme_ctrls_filter" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ctrls_filter \- Filter for controllers +.SH SYNOPSIS +.B "int" nvme_ctrls_filter +.BI "(const struct dirent *d " ");" +.SH ARGUMENTS +.IP "d" 12 +dirent to check +.SH "RETURN" +1 if \fId\fP matches, 0 otherwise diff --git a/doc/man/nvme_data_tfr.2 b/doc/man/nvme_data_tfr.2 new file mode 100644 index 0000000..c81767e --- /dev/null +++ b/doc/man/nvme_data_tfr.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_data_tfr" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_data_tfr \- Data transfer direction of the command +.SH SYNOPSIS +enum nvme_data_tfr { +.br +.BI " NVME_DATA_TFR_NO_DATA_TFR" +, +.br +.br +.BI " NVME_DATA_TFR_HOST_TO_CTRL" +, +.br +.br +.BI " NVME_DATA_TFR_CTRL_TO_HOST" +, +.br +.br +.BI " NVME_DATA_TFR_BIDIRECTIONAL" + +}; +.SH Constants +.IP "NVME_DATA_TFR_NO_DATA_TFR" 12 +No data transfer +.IP "NVME_DATA_TFR_HOST_TO_CTRL" 12 +Host to controller +.IP "NVME_DATA_TFR_CTRL_TO_HOST" 12 +Controller to host +.IP "NVME_DATA_TFR_BIDIRECTIONAL" 12 +Bidirectional diff --git a/doc/man/nvme_default_host.2 b/doc/man/nvme_default_host.2 new file mode 100644 index 0000000..690fb56 --- /dev/null +++ b/doc/man/nvme_default_host.2 @@ -0,0 +1,14 @@ +.TH "nvme_default_host" 9 "nvme_default_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_default_host \- Initializes the default host +.SH SYNOPSIS +.B "nvme_host_t" nvme_default_host +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.SH "DESCRIPTION" +Initializes the default host object based on the values in +/etc/nvme/hostnqn and /etc/nvme/hostid and attaches it to \fIr\fP. +.SH "RETURN" +\fInvme_host_t\fP object diff --git a/doc/man/nvme_dev_self_test.2 b/doc/man/nvme_dev_self_test.2 new file mode 100644 index 0000000..1458ded --- /dev/null +++ b/doc/man/nvme_dev_self_test.2 @@ -0,0 +1,23 @@ +.TH "nvme_dev_self_test" 9 "nvme_dev_self_test" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_dev_self_test \- Start or abort a self test +.SH SYNOPSIS +.B "int" nvme_dev_self_test +.BI "(struct nvme_dev_self_test_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_dev_self_test\fP argument structure +.SH "DESCRIPTION" +The Device Self-test command starts a device self-test operation or abort a +device self-test operation. A device self-test operation is a diagnostic +testing sequence that tests the integrity and functionality of the +controller and may include testing of the media associated with namespaces. +The controller may return a response to this command immediately while +running the self-test in the background. + +Set the 'nsid' field to 0 to not include namespaces in the test. Set to +0xffffffff to test all namespaces. All other values tests a specific +namespace, if present. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_dtype.2 b/doc/man/nvme_directive_dtype.2 new file mode 100644 index 0000000..bab28cc --- /dev/null +++ b/doc/man/nvme_directive_dtype.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_directive_dtype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_directive_dtype \- Directive Types +.SH SYNOPSIS +enum nvme_directive_dtype { +.br +.BI " NVME_DIRECTIVE_DTYPE_IDENTIFY" +, +.br +.br +.BI " NVME_DIRECTIVE_DTYPE_STREAMS" + +}; +.SH Constants +.IP "NVME_DIRECTIVE_DTYPE_IDENTIFY" 12 +Identify directive type +.IP "NVME_DIRECTIVE_DTYPE_STREAMS" 12 +Streams directive type diff --git a/doc/man/nvme_directive_receive_doper.2 b/doc/man/nvme_directive_receive_doper.2 new file mode 100644 index 0000000..9d233ac --- /dev/null +++ b/doc/man/nvme_directive_receive_doper.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvme_directive_receive_doper" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_directive_receive_doper \- Directive Receive Directive Operation +.SH SYNOPSIS +enum nvme_directive_receive_doper { +.br +.BI " NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM" +, +.br +.br +.BI " NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM" +, +.br +.br +.BI " NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS" +, +.br +.br +.BI " NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE" + +}; +.SH Constants +.IP "NVME_DIRECTIVE_RECEIVE_IDENTIFY_DOPER_PARAM" 12 +.IP "NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_PARAM" 12 +.IP "NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_STATUS" 12 +.IP "NVME_DIRECTIVE_RECEIVE_STREAMS_DOPER_RESOURCE" 12 diff --git a/doc/man/nvme_directive_recv.2 b/doc/man/nvme_directive_recv.2 new file mode 100644 index 0000000..6f657fe --- /dev/null +++ b/doc/man/nvme_directive_recv.2 @@ -0,0 +1,12 @@ +.TH "nvme_directive_recv" 9 "nvme_directive_recv" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_recv \- Receive directive specific data +.SH SYNOPSIS +.B "int" nvme_directive_recv +.BI "(struct nvme_directive_recv_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_directive_recv_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_recv_identify_parameters.2 b/doc/man/nvme_directive_recv_identify_parameters.2 new file mode 100644 index 0000000..7e41fb1 --- /dev/null +++ b/doc/man/nvme_directive_recv_identify_parameters.2 @@ -0,0 +1,18 @@ +.TH "nvme_directive_recv_identify_parameters" 9 "nvme_directive_recv_identify_parameters" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_recv_identify_parameters \- Directive receive identifier parameters +.SH SYNOPSIS +.B "int" nvme_directive_recv_identify_parameters +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_directives *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "id" 12 +Identify parameters buffer +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_recv_stream_allocate.2 b/doc/man/nvme_directive_recv_stream_allocate.2 new file mode 100644 index 0000000..657c699 --- /dev/null +++ b/doc/man/nvme_directive_recv_stream_allocate.2 @@ -0,0 +1,21 @@ +.TH "nvme_directive_recv_stream_allocate" 9 "nvme_directive_recv_stream_allocate" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_recv_stream_allocate \- Directive receive stream allocate +.SH SYNOPSIS +.B "int" nvme_directive_recv_stream_allocate +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 nsr " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "nsr" 12 +Namespace Streams Requested +.IP "result" 12 +If successful, the CQE dword0 value +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_recv_stream_parameters.2 b/doc/man/nvme_directive_recv_stream_parameters.2 new file mode 100644 index 0000000..512ea23 --- /dev/null +++ b/doc/man/nvme_directive_recv_stream_parameters.2 @@ -0,0 +1,18 @@ +.TH "nvme_directive_recv_stream_parameters" 9 "nvme_directive_recv_stream_parameters" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_recv_stream_parameters \- Directive receive stream parameters +.SH SYNOPSIS +.B "int" nvme_directive_recv_stream_parameters +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_streams_directive_params *parms " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "parms" 12 +Streams directive parameters buffer +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_recv_stream_status.2 b/doc/man/nvme_directive_recv_stream_status.2 new file mode 100644 index 0000000..6052e55 --- /dev/null +++ b/doc/man/nvme_directive_recv_stream_status.2 @@ -0,0 +1,21 @@ +.TH "nvme_directive_recv_stream_status" 9 "nvme_directive_recv_stream_status" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_recv_stream_status \- Directive receive stream status +.SH SYNOPSIS +.B "int" nvme_directive_recv_stream_status +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "unsigned int nr_entries " "," +.BI "struct nvme_streams_directive_status *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "nr_entries" 12 +Number of streams to receive +.IP "id" 12 +Stream status buffer +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_send.2 b/doc/man/nvme_directive_send.2 new file mode 100644 index 0000000..ae5e7c3 --- /dev/null +++ b/doc/man/nvme_directive_send.2 @@ -0,0 +1,18 @@ +.TH "nvme_directive_send" 9 "nvme_directive_send" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_send \- Send directive command +.SH SYNOPSIS +.B "int" nvme_directive_send +.BI "(struct nvme_directive_send_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_directive_send_args\fP argument structure +.SH "DESCRIPTION" +Directives is a mechanism to enable host and NVM subsystem or controller +information exchange. The Directive Send command transfers data related to a +specific Directive Type from the host to the controller. + +See the NVMe specification for more information. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_send_doper.2 b/doc/man/nvme_directive_send_doper.2 new file mode 100644 index 0000000..7ee960e --- /dev/null +++ b/doc/man/nvme_directive_send_doper.2 @@ -0,0 +1,21 @@ +.TH "libnvme" 9 "enum nvme_directive_send_doper" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_directive_send_doper \- Directive Send Directive Operation +.SH SYNOPSIS +enum nvme_directive_send_doper { +.br +.BI " NVME_DIRECTIVE_SEND_IDENTIFY_DOPER_ENDIR" +, +.br +.br +.BI " NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_IDENTIFIER" +, +.br +.br +.BI " NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_RESOURCE" + +}; +.SH Constants +.IP "NVME_DIRECTIVE_SEND_IDENTIFY_DOPER_ENDIR" 12 +.IP "NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_IDENTIFIER" 12 +.IP "NVME_DIRECTIVE_SEND_STREAMS_DOPER_RELEASE_RESOURCE" 12 diff --git a/doc/man/nvme_directive_send_id_endir.2 b/doc/man/nvme_directive_send_id_endir.2 new file mode 100644 index 0000000..3361c43 --- /dev/null +++ b/doc/man/nvme_directive_send_id_endir.2 @@ -0,0 +1,24 @@ +.TH "nvme_directive_send_id_endir" 9 "nvme_directive_send_id_endir" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_send_id_endir \- Directive Send Enable Directive +.SH SYNOPSIS +.B "int" nvme_directive_send_id_endir +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "bool endir " "," +.BI "enum nvme_directive_dtype dtype " "," +.BI "struct nvme_id_directives *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace Identifier +.IP "endir" 12 +Enable Directive +.IP "dtype" 12 +Directive Type +.IP "id" 12 +Pointer to structure nvme_id_directives +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_send_identify_endir.2 b/doc/man/nvme_directive_send_identify_endir.2 new file mode 100644 index 0000000..75ae651 --- /dev/null +++ b/doc/man/nvme_directive_send_identify_endir.2 @@ -0,0 +1,16 @@ +.TH "libnvme" 9 "enum nvme_directive_send_identify_endir" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_directive_send_identify_endir \- Enable Directive +.SH SYNOPSIS +enum nvme_directive_send_identify_endir { +.br +.BI " NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_DISABLE" +, +.br +.br +.BI " NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_ENABLE" + +}; +.SH Constants +.IP "NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_DISABLE" 12 +.IP "NVME_DIRECTIVE_SEND_IDENTIFY_ENDIR_ENABLE" 12 diff --git a/doc/man/nvme_directive_send_stream_release_identifier.2 b/doc/man/nvme_directive_send_stream_release_identifier.2 new file mode 100644 index 0000000..fccafe4 --- /dev/null +++ b/doc/man/nvme_directive_send_stream_release_identifier.2 @@ -0,0 +1,18 @@ +.TH "nvme_directive_send_stream_release_identifier" 9 "nvme_directive_send_stream_release_identifier" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_send_stream_release_identifier \- Directive Send Stream release +.SH SYNOPSIS +.B "int" nvme_directive_send_stream_release_identifier +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 stream_id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "stream_id" 12 +Stream identifier +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_send_stream_release_resource.2 b/doc/man/nvme_directive_send_stream_release_resource.2 new file mode 100644 index 0000000..d74c93a --- /dev/null +++ b/doc/man/nvme_directive_send_stream_release_resource.2 @@ -0,0 +1,15 @@ +.TH "nvme_directive_send_stream_release_resource" 9 "nvme_directive_send_stream_release_resource" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_directive_send_stream_release_resource \- Directive Send Stream release resources +.SH SYNOPSIS +.B "int" nvme_directive_send_stream_release_resource +.BI "(int fd " "," +.BI "__u32 nsid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_directive_types.2 b/doc/man/nvme_directive_types.2 new file mode 100644 index 0000000..5557800 --- /dev/null +++ b/doc/man/nvme_directive_types.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_directive_types" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_directive_types \- Directives Supported or Enabled +.SH SYNOPSIS +enum nvme_directive_types { +.br +.BI " NVME_ID_DIR_ID_BIT" +, +.br +.br +.BI " NVME_ID_DIR_SD_BIT" + +}; +.SH Constants +.IP "NVME_ID_DIR_ID_BIT" 12 +Identify directive is supported +.IP "NVME_ID_DIR_SD_BIT" 12 +Streams directive is supported diff --git a/doc/man/nvme_disconnect_ctrl.2 b/doc/man/nvme_disconnect_ctrl.2 new file mode 100644 index 0000000..03adb3d --- /dev/null +++ b/doc/man/nvme_disconnect_ctrl.2 @@ -0,0 +1,13 @@ +.TH "nvme_disconnect_ctrl" 9 "nvme_disconnect_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_disconnect_ctrl \- Disconnect a controller +.SH SYNOPSIS +.B "int" nvme_disconnect_ctrl +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.SH "DESCRIPTION" +Issues a 'disconnect' fabrics command to \fIc\fP +.SH "RETURN" +0 on success, -1 on failure. diff --git a/doc/man/nvme_dsm.2 b/doc/man/nvme_dsm.2 new file mode 100644 index 0000000..52d1d78 --- /dev/null +++ b/doc/man/nvme_dsm.2 @@ -0,0 +1,18 @@ +.TH "nvme_dsm" 9 "nvme_dsm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_dsm \- Send an nvme data set management command +.SH SYNOPSIS +.B "int" nvme_dsm +.BI "(struct nvme_dsm_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_dsm_args\fP argument structure +.SH "DESCRIPTION" +The Dataset Management command is used by the host to indicate attributes +for ranges of logical blocks. This includes attributes like frequency that +data is read or written, access size, and other information that may be used +to optimize performance and reliability, and may be used to +deallocate/unmap/trim those logical blocks. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_dsm_attributes.2 b/doc/man/nvme_dsm_attributes.2 new file mode 100644 index 0000000..d4d1195 --- /dev/null +++ b/doc/man/nvme_dsm_attributes.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_dsm_attributes" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_dsm_attributes \- Dataset Management attributes +.SH SYNOPSIS +enum nvme_dsm_attributes { +.br +.BI " NVME_DSMGMT_IDR" +, +.br +.br +.BI " NVME_DSMGMT_IDW" +, +.br +.br +.BI " NVME_DSMGMT_AD" + +}; +.SH Constants +.IP "NVME_DSMGMT_IDR" 12 +Attribute -Integral Dataset for Read +.IP "NVME_DSMGMT_IDW" 12 +Attribute - Integral Dataset for Write +.IP "NVME_DSMGMT_AD" 12 +Attribute - Deallocate diff --git a/doc/man/nvme_dsm_range.2 b/doc/man/nvme_dsm_range.2 new file mode 100644 index 0000000..c8f1e66 --- /dev/null +++ b/doc/man/nvme_dsm_range.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_dsm_range" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_dsm_range \- Dataset Management - Range Definition +.SH SYNOPSIS +struct nvme_dsm_range { +.br +.BI " __le32 cattr;" +.br +.BI " __le32 nlb;" +.br +.BI " __le64 slba;" +.br +.BI " +}; +.br + +.SH Members +.IP "cattr" 12 +Context Attributes +.IP "nlb" 12 +Length in logical blocks +.IP "slba" 12 +Starting LBA diff --git a/doc/man/nvme_dst_stc.2 b/doc/man/nvme_dst_stc.2 new file mode 100644 index 0000000..4d6f7d7 --- /dev/null +++ b/doc/man/nvme_dst_stc.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_dst_stc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_dst_stc \- Action taken by the Device Self-test command +.SH SYNOPSIS +enum nvme_dst_stc { +.br +.BI " NVME_DST_STC_SHORT" +, +.br +.br +.BI " NVME_DST_STC_LONG" +, +.br +.br +.BI " NVME_DST_STC_VS" +, +.br +.br +.BI " NVME_DST_STC_ABORT" + +}; +.SH Constants +.IP "NVME_DST_STC_SHORT" 12 +Start a short device self-test operation +.IP "NVME_DST_STC_LONG" 12 +Start an extended device self-test operation +.IP "NVME_DST_STC_VS" 12 +Start a vendor specific device self-test operation +.IP "NVME_DST_STC_ABORT" 12 +Abort device self-test operation diff --git a/doc/man/nvme_dump_config.2 b/doc/man/nvme_dump_config.2 new file mode 100644 index 0000000..3a6222c --- /dev/null +++ b/doc/man/nvme_dump_config.2 @@ -0,0 +1,14 @@ +.TH "nvme_dump_config" 9 "nvme_dump_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_dump_config \- Print the JSON configuration +.SH SYNOPSIS +.B "int" nvme_dump_config +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.SH "DESCRIPTION" +Prints the current contents of the JSON configuration +file to stdout. +.SH "RETURN" +0 on success, -1 on failure. diff --git a/doc/man/nvme_dump_tree.2 b/doc/man/nvme_dump_tree.2 new file mode 100644 index 0000000..71925ec --- /dev/null +++ b/doc/man/nvme_dump_tree.2 @@ -0,0 +1,14 @@ +.TH "nvme_dump_tree" 9 "nvme_dump_tree" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_dump_tree \- Dump internal object tree +.SH SYNOPSIS +.B "int" nvme_dump_tree +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.SH "DESCRIPTION" +Prints the internal object tree in JSON format +to stdout. +.SH "RETURN" +0 on success, -1 on failure. diff --git a/doc/man/nvme_eg_critical_warning_flags.2 b/doc/man/nvme_eg_critical_warning_flags.2 new file mode 100644 index 0000000..08a5f7c --- /dev/null +++ b/doc/man/nvme_eg_critical_warning_flags.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvme_eg_critical_warning_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_eg_critical_warning_flags \- Endurance Group Information Log - Critical Warning +.SH SYNOPSIS +enum nvme_eg_critical_warning_flags { +.br +.BI " NVME_EG_CRITICAL_WARNING_SPARE" +, +.br +.br +.BI " NVME_EG_CRITICAL_WARNING_DEGRADED" +, +.br +.br +.BI " NVME_EG_CRITICAL_WARNING_READ_ONLY" + +}; +.SH Constants +.IP "NVME_EG_CRITICAL_WARNING_SPARE" 12 +Available spare capacity of the Endurance Group +has fallen below the threshold +.IP "NVME_EG_CRITICAL_WARNING_DEGRADED" 12 +Endurance Group reliability has been degraded +.IP "NVME_EG_CRITICAL_WARNING_READ_ONLY" 12 +Endurance Group have been placed in read only +mode diff --git a/doc/man/nvme_eg_event_aggregate_log.2 b/doc/man/nvme_eg_event_aggregate_log.2 new file mode 100644 index 0000000..aacfeba --- /dev/null +++ b/doc/man/nvme_eg_event_aggregate_log.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_eg_event_aggregate_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_eg_event_aggregate_log \- Endurance Group Event Aggregate +.SH SYNOPSIS +struct nvme_eg_event_aggregate_log { +.br +.BI " __le64 nr_entries;" +.br +.BI " __le16 egids[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nr_entries" 12 +Number of Entries +.IP "egids" 12 +Endurance Group Identifier diff --git a/doc/man/nvme_end_grp_chan_desc.2 b/doc/man/nvme_end_grp_chan_desc.2 new file mode 100644 index 0000000..acc3f0b --- /dev/null +++ b/doc/man/nvme_end_grp_chan_desc.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "struct nvme_end_grp_chan_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_end_grp_chan_desc \- Endurance Group Channel Configuration Descriptor +.SH SYNOPSIS +struct nvme_end_grp_chan_desc { +.br +.BI " __le16 egchans;" +.br +.BI " struct nvme_channel_config_desc chan_config_desc[];" +.br +.BI " +}; +.br + +.SH Members +.IP "egchans" 12 +Number of Channels +.IP "chan_config_desc" 12 +Channel config descriptors. +See \fIstruct\fP nvme_channel_config_desc diff --git a/doc/man/nvme_end_grp_config_desc.2 b/doc/man/nvme_end_grp_config_desc.2 new file mode 100644 index 0000000..05b3319 --- /dev/null +++ b/doc/man/nvme_end_grp_config_desc.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_end_grp_config_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_end_grp_config_desc \- Endurance Group Configuration Descriptor +.SH SYNOPSIS +struct nvme_end_grp_config_desc { +.br +.BI " __le16 endgid;" +.br +.BI " __le16 cap_adj_factor;" +.br +.BI " __u8 rsvd4[12];" +.br +.BI " __u8 tegcap[16];" +.br +.BI " __u8 segcap[16];" +.br +.BI " __u8 end_est[16];" +.br +.BI " __u8 rsvd64[16];" +.br +.BI " __le16 egsets;" +.br +.BI " __le16 nvmsetid[];" +.br +.BI " +}; +.br + +.SH Members +.IP "endgid" 12 +Endurance Group Identifier +.IP "cap_adj_factor" 12 +Capacity Adjustment Factor +.IP "rsvd4" 12 +Reserved +.IP "tegcap" 12 +Total Endurance Group Capacity +.IP "segcap" 12 +Spare Endurance Group Capacity +.IP "end_est" 12 +Endurance Estimate +.IP "rsvd64" 12 +Reserved +.IP "egsets" 12 +Number of NVM Sets +.IP "nvmsetid" 12 +NVM Set Identifier diff --git a/doc/man/nvme_endurance_group_log.2 b/doc/man/nvme_endurance_group_log.2 new file mode 100644 index 0000000..af07a02 --- /dev/null +++ b/doc/man/nvme_endurance_group_log.2 @@ -0,0 +1,71 @@ +.TH "libnvme" 9 "struct nvme_endurance_group_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_endurance_group_log \- Endurance Group Information Log +.SH SYNOPSIS +struct nvme_endurance_group_log { +.br +.BI " __u8 critical_warning;" +.br +.BI " __u8 rsvd1[2];" +.br +.BI " __u8 avl_spare;" +.br +.BI " __u8 avl_spare_threshold;" +.br +.BI " __u8 percent_used;" +.br +.BI " __u8 rsvd6[26];" +.br +.BI " __u8 endurance_estimate[16];" +.br +.BI " __u8 data_units_read[16];" +.br +.BI " __u8 data_units_written[16];" +.br +.BI " __u8 media_units_written[16];" +.br +.BI " __u8 host_read_cmds[16];" +.br +.BI " __u8 host_write_cmds[16];" +.br +.BI " __u8 media_data_integrity_err[16];" +.br +.BI " __u8 num_err_info_log_entries[16];" +.br +.BI " __u8 rsvd160[352];" +.br +.BI " +}; +.br + +.SH Members +.IP "critical_warning" 12 +Critical Warning +.IP "rsvd1" 12 +Reserved +.IP "avl_spare" 12 +Available Spare +.IP "avl_spare_threshold" 12 +Available Spare Threshold +.IP "percent_used" 12 +Percentage Used +.IP "rsvd6" 12 +Reserved +.IP "endurance_estimate" 12 +Endurance Estimate +.IP "data_units_read" 12 +Data Units Read +.IP "data_units_written" 12 +Data Units Written +.IP "media_units_written" 12 +Media Units Written +.IP "host_read_cmds" 12 +Host Read Commands +.IP "host_write_cmds" 12 +Host Write Commands +.IP "media_data_integrity_err" 12 +Media and Data Integrity Errors +.IP "num_err_info_log_entries" 12 +Number of Error Information Log Entries +.IP "rsvd160" 12 +Reserved diff --git a/doc/man/nvme_errno_to_string.2 b/doc/man/nvme_errno_to_string.2 new file mode 100644 index 0000000..f303d52 --- /dev/null +++ b/doc/man/nvme_errno_to_string.2 @@ -0,0 +1,11 @@ +.TH "nvme_errno_to_string" 9 "nvme_errno_to_string" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_errno_to_string \- Returns string describing nvme connect failures +.SH SYNOPSIS +.B "const char *" nvme_errno_to_string +.BI "(int err " ");" +.SH ARGUMENTS +.IP "err" 12 +Returned error code from \fBnvme_add_ctrl\fP +.SH "RETURN" +String representation of the nvme connect error codes diff --git a/doc/man/nvme_error_log_page.2 b/doc/man/nvme_error_log_page.2 new file mode 100644 index 0000000..7e727ef --- /dev/null +++ b/doc/man/nvme_error_log_page.2 @@ -0,0 +1,109 @@ +.TH "libnvme" 9 "struct nvme_error_log_page" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_error_log_page \- Error Information Log Entry (Log Identifier 01h) +.SH SYNOPSIS +struct nvme_error_log_page { +.br +.BI " __le64 error_count;" +.br +.BI " __le16 sqid;" +.br +.BI " __le16 cmdid;" +.br +.BI " __le16 status_field;" +.br +.BI " __le16 parm_error_location;" +.br +.BI " __le64 lba;" +.br +.BI " __le32 nsid;" +.br +.BI " __u8 vs;" +.br +.BI " __u8 trtype;" +.br +.BI " __u8 rsvd[2];" +.br +.BI " __le64 cs;" +.br +.BI " __le16 trtype_spec_info;" +.br +.BI " __u8 rsvd2[22];" +.br +.BI " +}; +.br + +.SH Members +.IP "error_count" 12 +Error Count: a 64-bit incrementing error count, +indicating a unique identifier for this error. The error +count starts at 1h, is incremented for each unique error +log entry, and is retained across power off conditions. +A value of 0h indicates an invalid entry; this value +is used when there are lost entries or when there are +fewer errors than the maximum number of entries the +controller supports. If the value of this field is +FFFFFFFFh, then the field shall be set to 1h when +incremented (i.e., rolls over to 1h). Prior to NVMe +1.4, processing of incrementing beyond FFFFFFFFh is +unspecified. +.IP "sqid" 12 +Submission Queue ID: indicates the Submission Queue +Identifier of the command that the error information is +associated with. If the error is not specific to +a particular command, then this field shall be set to +FFFFh. +.IP "cmdid" 12 +Command ID: indicates the Command Identifier of the +command that the error is associated with. If the error +is not specific to a particular command, then this field +shall be set to FFFFh. +.IP "status_field" 12 +Bits 15-1: Status Field: indicates the Status Field for +the command that completed. If the error is not specific +to a particular command, then this field reports the most +applicable status value. +Bit 0: Phase Tag: may indicate the Phase Tag posted for +the command. +.IP "parm_error_location" 12 +Parameter Error Location: indicates the byte and bit of +the command parameter that the error is associated with, +if applicable. If the parameter spans multiple bytes or +bits, then the location indicates the first byte and bit +of the parameter. +Bits 10-8: Bit in command that contained the error. +Valid values are 0 to 7. +Bits 7-0: Byte in command that contained the error. +Valid values are 0 to 63. +.IP "lba" 12 +LBA: This field indicates the first LBA that experienced +the error condition, if applicable. +.IP "nsid" 12 +Namespace: This field indicates the NSID of the namespace +that the error is associated with, if applicable. +.IP "vs" 12 +Vendor Specific Information Available: If there is +additional vendor specific error information available, +this field provides the log page identifier associated +with that page. A value of 0h indicates that no additional +information is available. Valid values are in the range +of 80h to FFh. +.IP "trtype" 12 +Transport Type (TRTYPE): indicates the Transport Type of +the transport associated with the error. The values in +this field are the same as the TRTYPE values in the +Discovery Log Page Entry. If the error is not transport +related, this field shall be cleared to 0h. If the error +is transport related, this field shall be set to the type +of the transport - see \fIenum nvme_trtype\fP. +.IP "rsvd" 12 +Reserved +.IP "cs" 12 +Command Specific Information: This field contains command +specific information. If used, the command definition +specifies the information returned. +.IP "trtype_spec_info" 12 +Transport Type Specific Information +.IP "rsvd2" 12 +Reserved diff --git a/doc/man/nvme_fabrics_config.2 b/doc/man/nvme_fabrics_config.2 new file mode 100644 index 0000000..24c4f6e --- /dev/null +++ b/doc/man/nvme_fabrics_config.2 @@ -0,0 +1,75 @@ +.TH "libnvme" 9 "struct nvme_fabrics_config" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fabrics_config \- Defines all linux nvme fabrics initiator options +.SH SYNOPSIS +struct nvme_fabrics_config { +.br +.BI " char *host_traddr;" +.br +.BI " char *host_iface;" +.br +.BI " int queue_size;" +.br +.BI " int nr_io_queues;" +.br +.BI " int reconnect_delay;" +.br +.BI " int ctrl_loss_tmo;" +.br +.BI " int fast_io_fail_tmo;" +.br +.BI " int keep_alive_tmo;" +.br +.BI " int nr_write_queues;" +.br +.BI " int nr_poll_queues;" +.br +.BI " int tos;" +.br +.BI " bool duplicate_connect;" +.br +.BI " bool disable_sqflow;" +.br +.BI " bool hdr_digest;" +.br +.BI " bool data_digest;" +.br +.BI " bool tls;" +.br +.BI " +}; +.br + +.SH Members +.IP "host_traddr" 12 +Host transport address +.IP "host_iface" 12 +Host interface name +.IP "queue_size" 12 +Number of IO queue entries +.IP "nr_io_queues" 12 +Number of controller IO queues to establish +.IP "reconnect_delay" 12 +Time between two consecutive reconnect attempts. +.IP "ctrl_loss_tmo" 12 +Override the default controller reconnect attempt timeout in seconds +.IP "fast_io_fail_tmo" 12 +Set the fast I/O fail timeout in seconds. +.IP "keep_alive_tmo" 12 +Override the default keep-alive-timeout to this value in seconds +.IP "nr_write_queues" 12 +Number of queues to use for exclusively for writing +.IP "nr_poll_queues" 12 +Number of queues to reserve for polling completions +.IP "tos" 12 +Type of service +.IP "duplicate_connect" 12 +Allow multiple connections to the same target +.IP "disable_sqflow" 12 +Disable controller sq flow control +.IP "hdr_digest" 12 +Generate/verify header digest (TCP) +.IP "data_digest" 12 +Generate/verify data digest (TCP) +.IP "tls" 12 +Start TLS on the connection (TCP) diff --git a/doc/man/nvme_fctype.2 b/doc/man/nvme_fctype.2 new file mode 100644 index 0000000..8d186cc --- /dev/null +++ b/doc/man/nvme_fctype.2 @@ -0,0 +1,42 @@ +.TH "libnvme" 9 "enum nvme_fctype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fctype \- Fabrics Command Types +.SH SYNOPSIS +enum nvme_fctype { +.br +.BI " nvme_fabrics_type_property_set" +, +.br +.br +.BI " nvme_fabrics_type_connect" +, +.br +.br +.BI " nvme_fabrics_type_property_get" +, +.br +.br +.BI " nvme_fabrics_type_auth_send" +, +.br +.br +.BI " nvme_fabrics_type_auth_receive" +, +.br +.br +.BI " nvme_fabrics_type_disconnect" + +}; +.SH Constants +.IP "nvme_fabrics_type_property_set" 12 +Property set +.IP "nvme_fabrics_type_connect" 12 +Connect +.IP "nvme_fabrics_type_property_get" 12 +Property Get +.IP "nvme_fabrics_type_auth_send" 12 +Authentication Send +.IP "nvme_fabrics_type_auth_receive" 12 +Authentication Receive +.IP "nvme_fabrics_type_disconnect" 12 +Disconnect diff --git a/doc/man/nvme_fdp_config_desc.2 b/doc/man/nvme_fdp_config_desc.2 new file mode 100644 index 0000000..3bbcbca --- /dev/null +++ b/doc/man/nvme_fdp_config_desc.2 @@ -0,0 +1,55 @@ +.TH "libnvme" 9 "struct nvme_fdp_config_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_config_desc \- FDP Configuration Descriptor +.SH SYNOPSIS +struct nvme_fdp_config_desc { +.br +.BI " __u16 size;" +.br +.BI " __u8 fdpa;" +.br +.BI " __u8 vss;" +.br +.BI " __u32 nrg;" +.br +.BI " __u16 nruh;" +.br +.BI " __u16 maxpids;" +.br +.BI " __u32 nnss;" +.br +.BI " __u64 runs;" +.br +.BI " __u32 erutl;" +.br +.BI " __u8 rsvd28[36];" +.br +.BI " struct nvme_fdp_ruh_desc ruhs[];" +.br +.BI " +}; +.br + +.SH Members +.IP "size" 12 +Descriptor size +.IP "fdpa" 12 +FDP Attributes (\fIenum nvme_fdp_config_fdpa\fP) +.IP "vss" 12 +Vendor Specific Size +.IP "nrg" 12 +Number of Reclaim Groups +.IP "nruh" 12 +Number of Reclaim Unit Handles +.IP "maxpids" 12 +Max Placement Identifiers +.IP "nnss" 12 +Number of Namespaces Supported +.IP "runs" 12 +Reclaim Unit Nominal Size +.IP "erutl" 12 +Estimated Reclaim Unit Time Limit +.IP "rsvd28" 12 +Reserved +.IP "ruhs" 12 +Reclaim Unit Handle descriptors (\fIstruct nvme_fdp_ruh_desc\fP) diff --git a/doc/man/nvme_fdp_config_fdpa.2 b/doc/man/nvme_fdp_config_fdpa.2 new file mode 100644 index 0000000..2a92b4a --- /dev/null +++ b/doc/man/nvme_fdp_config_fdpa.2 @@ -0,0 +1,42 @@ +.TH "libnvme" 9 "enum nvme_fdp_config_fdpa" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_config_fdpa \- FDP Attributes +.SH SYNOPSIS +enum nvme_fdp_config_fdpa { +.br +.BI " NVME_FDP_CONFIG_FDPA_RGIF_SHIFT" +, +.br +.br +.BI " NVME_FDP_CONFIG_FDPA_RGIF_MASK" +, +.br +.br +.BI " NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT" +, +.br +.br +.BI " NVME_FDP_CONFIG_FDPA_FDPVWC_MASK" +, +.br +.br +.BI " NVME_FDP_CONFIG_FDPA_VALID_SHIFT" +, +.br +.br +.BI " NVME_FDP_CONFIG_FDPA_VALID_MASK" + +}; +.SH Constants +.IP "NVME_FDP_CONFIG_FDPA_RGIF_SHIFT" 12 +Reclaim Group Identifier Format Shift +.IP "NVME_FDP_CONFIG_FDPA_RGIF_MASK" 12 +Reclaim Group Identifier Format Mask +.IP "NVME_FDP_CONFIG_FDPA_FDPVWC_SHIFT" 12 +FDP Volatile Write Cache Shift +.IP "NVME_FDP_CONFIG_FDPA_FDPVWC_MASK" 12 +FDP Volatile Write Cache Mask +.IP "NVME_FDP_CONFIG_FDPA_VALID_SHIFT" 12 +FDP Configuration Valid Shift +.IP "NVME_FDP_CONFIG_FDPA_VALID_MASK" 12 +FDP Configuration Valid Mask diff --git a/doc/man/nvme_fdp_config_log.2 b/doc/man/nvme_fdp_config_log.2 new file mode 100644 index 0000000..5111b7a --- /dev/null +++ b/doc/man/nvme_fdp_config_log.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_fdp_config_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_config_log \- FDP Configurations Log Page +.SH SYNOPSIS +struct nvme_fdp_config_log { +.br +.BI " __u16 n;" +.br +.BI " __u8 version;" +.br +.BI " __u8 rsvd3;" +.br +.BI " __u32 size;" +.br +.BI " __u8 rsvd8[8];" +.br +.BI " struct nvme_fdp_config_desc configs[];" +.br +.BI " +}; +.br + +.SH Members +.IP "n" 12 +Number of FDP Configurations +.IP "version" 12 +Log page version +.IP "rsvd3" 12 +Reserved +.IP "size" 12 +Log page size in bytes +.IP "rsvd8" 12 +Reserved +.IP "configs" 12 +FDP Configuration descriptors (\fIstruct nvme_fdp_config_desc\fP) diff --git a/doc/man/nvme_fdp_event.2 b/doc/man/nvme_fdp_event.2 new file mode 100644 index 0000000..2178f44 --- /dev/null +++ b/doc/man/nvme_fdp_event.2 @@ -0,0 +1,51 @@ +.TH "libnvme" 9 "struct nvme_fdp_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_event \- FDP Event +.SH SYNOPSIS +struct nvme_fdp_event { +.br +.BI " __u8 type;" +.br +.BI " __u8 flags;" +.br +.BI " __u16 pid;" +.br +.BI " struct nvme_timestamp ts;" +.br +.BI " __u32 nsid;" +.br +.BI " __u8 type_specific[16];" +.br +.BI " __u16 rgid;" +.br +.BI " __u8 ruhid;" +.br +.BI " __u8 rsvd35[5];" +.br +.BI " __u8 vs[24];" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +Event Type (\fIenum nvme_fdp_event_type\fP) +.IP "flags" 12 +Event Flags (\fIenum nvme_fdp_event_flags\fP) +.IP "pid" 12 +Placement Identifier +.IP "ts" 12 +Timestamp +.IP "nsid" 12 +Namespace Identifier +.IP "type_specific" 12 +Event Type Specific Information +.IP "rgid" 12 +Reclaim Group Identifier +.IP "ruhid" 12 +Reclaim Unit Handle Identifier +.IP "rsvd35" 12 +Reserved +.IP "vs" 12 +Vendor Specific diff --git a/doc/man/nvme_fdp_event_flags.2 b/doc/man/nvme_fdp_event_flags.2 new file mode 100644 index 0000000..1bad4b6 --- /dev/null +++ b/doc/man/nvme_fdp_event_flags.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_fdp_event_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_event_flags \- FDP Event Flags +.SH SYNOPSIS +enum nvme_fdp_event_flags { +.br +.BI " NVME_FDP_EVENT_F_PIV" +, +.br +.br +.BI " NVME_FDP_EVENT_F_NSIDV" +, +.br +.br +.BI " NVME_FDP_EVENT_F_LV" + +}; +.SH Constants +.IP "NVME_FDP_EVENT_F_PIV" 12 +Placement Identifier Valid +.IP "NVME_FDP_EVENT_F_NSIDV" 12 +Namespace Identifier Valid +.IP "NVME_FDP_EVENT_F_LV" 12 +Location Valid diff --git a/doc/man/nvme_fdp_event_realloc.2 b/doc/man/nvme_fdp_event_realloc.2 new file mode 100644 index 0000000..fbd1cfe --- /dev/null +++ b/doc/man/nvme_fdp_event_realloc.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_fdp_event_realloc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_event_realloc \- Media Reallocated Event Type Specific Information +.SH SYNOPSIS +struct nvme_fdp_event_realloc { +.br +.BI " __u8 flags;" +.br +.BI " __u8 rsvd1;" +.br +.BI " __u16 nlbam;" +.br +.BI " __u64 lba;" +.br +.BI " __u8 rsvd12[4];" +.br +.BI " +}; +.br + +.SH Members +.IP "flags" 12 +Event Type Specific flags (\fIenum nvme_fdp_event_realloc_flags\fP) +.IP "rsvd1" 12 +Reserved +.IP "nlbam" 12 +Number of LBAs Moved +.IP "lba" 12 +Logical Block Address +.IP "rsvd12" 12 +Reserved diff --git a/doc/man/nvme_fdp_event_realloc_flags.2 b/doc/man/nvme_fdp_event_realloc_flags.2 new file mode 100644 index 0000000..8ecee78 --- /dev/null +++ b/doc/man/nvme_fdp_event_realloc_flags.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvme_fdp_event_realloc_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_event_realloc_flags \- Media Reallocated Event Type Specific Flags +.SH SYNOPSIS +enum nvme_fdp_event_realloc_flags { +.br +.BI " NVME_FDP_EVENT_REALLOC_F_LBAV" + +}; +.SH Constants +.IP "NVME_FDP_EVENT_REALLOC_F_LBAV" 12 +LBA Valid diff --git a/doc/man/nvme_fdp_event_type.2 b/doc/man/nvme_fdp_event_type.2 new file mode 100644 index 0000000..1ef2849 --- /dev/null +++ b/doc/man/nvme_fdp_event_type.2 @@ -0,0 +1,42 @@ +.TH "libnvme" 9 "enum nvme_fdp_event_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_event_type \- FDP Event Types +.SH SYNOPSIS +enum nvme_fdp_event_type { +.br +.BI " NVME_FDP_EVENT_RUNFW" +, +.br +.br +.BI " NVME_FDP_EVENT_RUTLE" +, +.br +.br +.BI " NVME_FDP_EVENT_RESET" +, +.br +.br +.BI " NVME_FDP_EVENT_PID" +, +.br +.br +.BI " NVME_FDP_EVENT_REALLOC" +, +.br +.br +.BI " NVME_FDP_EVENT_MODIFY" + +}; +.SH Constants +.IP "NVME_FDP_EVENT_RUNFW" 12 +Reclaim Unit Not Fully Written +.IP "NVME_FDP_EVENT_RUTLE" 12 +Reclaim Unit Time Limit Exceeded +.IP "NVME_FDP_EVENT_RESET" 12 +Controller Level Reset Modified Reclaim Unit Handles +.IP "NVME_FDP_EVENT_PID" 12 +Invalid Placement Identifier +.IP "NVME_FDP_EVENT_REALLOC" 12 +Media Reallocated +.IP "NVME_FDP_EVENT_MODIFY" 12 +Implicitly Modified Reclaim Unit Handle diff --git a/doc/man/nvme_fdp_events_log.2 b/doc/man/nvme_fdp_events_log.2 new file mode 100644 index 0000000..c4cec83 --- /dev/null +++ b/doc/man/nvme_fdp_events_log.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_fdp_events_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_events_log \- FDP Events Log Page +.SH SYNOPSIS +struct nvme_fdp_events_log { +.br +.BI " __u32 n;" +.br +.BI " __u8 rsvd4[60];" +.br +.BI " struct nvme_fdp_event events[63];" +.br +.BI " +}; +.br + +.SH Members +.IP "n" 12 +Number of FDP Events +.IP "rsvd4" 12 +Reserved +.IP "events" 12 +FDP Events (\fIstruct nvme_fdp_event\fP) diff --git a/doc/man/nvme_fdp_reclaim_unit_handle_status.2 b/doc/man/nvme_fdp_reclaim_unit_handle_status.2 new file mode 100644 index 0000000..138405d --- /dev/null +++ b/doc/man/nvme_fdp_reclaim_unit_handle_status.2 @@ -0,0 +1,21 @@ +.TH "nvme_fdp_reclaim_unit_handle_status" 9 "nvme_fdp_reclaim_unit_handle_status" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_fdp_reclaim_unit_handle_status \- Get reclaim unit handle status +.SH SYNOPSIS +.B "int" nvme_fdp_reclaim_unit_handle_status +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u32 data_len " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace identifier +.IP "data_len" 12 +Length of response buffer +.IP "data" 12 +Response buffer +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_fdp_reclaim_unit_handle_update.2 b/doc/man/nvme_fdp_reclaim_unit_handle_update.2 new file mode 100644 index 0000000..1869f67 --- /dev/null +++ b/doc/man/nvme_fdp_reclaim_unit_handle_update.2 @@ -0,0 +1,21 @@ +.TH "nvme_fdp_reclaim_unit_handle_update" 9 "nvme_fdp_reclaim_unit_handle_update" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_fdp_reclaim_unit_handle_update \- Update a list of reclaim unit handles +.SH SYNOPSIS +.B "int" nvme_fdp_reclaim_unit_handle_update +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "unsigned int npids " "," +.BI "__u16 *pids " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace identifier +.IP "npids" 12 +Number of placement identifiers +.IP "pids" 12 +List of placement identifiers +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_fdp_ruh_desc.2 b/doc/man/nvme_fdp_ruh_desc.2 new file mode 100644 index 0000000..77969b3 --- /dev/null +++ b/doc/man/nvme_fdp_ruh_desc.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_fdp_ruh_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_ruh_desc \- Reclaim Unit Handle Descriptor +.SH SYNOPSIS +struct nvme_fdp_ruh_desc { +.br +.BI " __u8 ruht;" +.br +.BI " __u8 rsvd1[3];" +.br +.BI " +}; +.br + +.SH Members +.IP "ruht" 12 +Reclaim Unit Handle Type +.IP "rsvd1" 12 +Reserved diff --git a/doc/man/nvme_fdp_ruh_status.2 b/doc/man/nvme_fdp_ruh_status.2 new file mode 100644 index 0000000..2fc1389 --- /dev/null +++ b/doc/man/nvme_fdp_ruh_status.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_fdp_ruh_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_ruh_status \- Reclaim Unit Handle Status +.SH SYNOPSIS +struct nvme_fdp_ruh_status { +.br +.BI " __u8 rsvd0[14];" +.br +.BI " __u16 nruhsd;" +.br +.BI " struct nvme_fdp_ruh_status_desc ruhss[];" +.br +.BI " +}; +.br + +.SH Members +.IP "rsvd0" 12 +Reserved +.IP "nruhsd" 12 +Number of Reclaim Unit Handle Status Descriptors +.IP "ruhss" 12 +Reclaim Unit Handle Status descriptors diff --git a/doc/man/nvme_fdp_ruh_status_desc.2 b/doc/man/nvme_fdp_ruh_status_desc.2 new file mode 100644 index 0000000..7b1dfc7 --- /dev/null +++ b/doc/man/nvme_fdp_ruh_status_desc.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_fdp_ruh_status_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_ruh_status_desc \- Reclaim Unit Handle Status Descriptor +.SH SYNOPSIS +struct nvme_fdp_ruh_status_desc { +.br +.BI " __u16 pid;" +.br +.BI " __u16 ruhid;" +.br +.BI " __u32 earutr;" +.br +.BI " __u64 ruamw;" +.br +.BI " __u8 rsvd16[16];" +.br +.BI " +}; +.br + +.SH Members +.IP "pid" 12 +Placement Identifier +.IP "ruhid" 12 +Reclaim Unit Handle Identifier +.IP "earutr" 12 +Estimated Active Reclaim Unit Time Remaining +.IP "ruamw" 12 +Reclaim Unit Available Media Writes +.IP "rsvd16" 12 +Reserved diff --git a/doc/man/nvme_fdp_ruh_type.2 b/doc/man/nvme_fdp_ruh_type.2 new file mode 100644 index 0000000..5407134 --- /dev/null +++ b/doc/man/nvme_fdp_ruh_type.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_fdp_ruh_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_ruh_type \- Reclaim Unit Handle Type +.SH SYNOPSIS +enum nvme_fdp_ruh_type { +.br +.BI " NVME_FDP_RUHT_INITIALLY_ISOLATED" +, +.br +.br +.BI " NVME_FDP_RUHT_PERSISTENTLY_ISOLATED" + +}; +.SH Constants +.IP "NVME_FDP_RUHT_INITIALLY_ISOLATED" 12 +Initially Isolated +.IP "NVME_FDP_RUHT_PERSISTENTLY_ISOLATED" 12 +Persistently Isolated diff --git a/doc/man/nvme_fdp_ruha.2 b/doc/man/nvme_fdp_ruha.2 new file mode 100644 index 0000000..99c73b3 --- /dev/null +++ b/doc/man/nvme_fdp_ruha.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_fdp_ruha" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_ruha \- Reclaim Unit Handle Attributes +.SH SYNOPSIS +enum nvme_fdp_ruha { +.br +.BI " NVME_FDP_RUHA_HOST_SHIFT" +, +.br +.br +.BI " NVME_FDP_RUHA_HOST_MASK" +, +.br +.br +.BI " NVME_FDP_RUHA_CTRL_SHIFT" +, +.br +.br +.BI " NVME_FDP_RUHA_CTRL_MASK" + +}; +.SH Constants +.IP "NVME_FDP_RUHA_HOST_SHIFT" 12 +Host Specified Reclaim Unit Handle Shift +.IP "NVME_FDP_RUHA_HOST_MASK" 12 +Host Specified Reclaim Unit Handle Mask +.IP "NVME_FDP_RUHA_CTRL_SHIFT" 12 +Controller Specified Reclaim Unit Handle Shift +.IP "NVME_FDP_RUHA_CTRL_MASK" 12 +Controller Specified Reclaim Unit Handle Mask diff --git a/doc/man/nvme_fdp_ruhu_desc.2 b/doc/man/nvme_fdp_ruhu_desc.2 new file mode 100644 index 0000000..e8a6d15 --- /dev/null +++ b/doc/man/nvme_fdp_ruhu_desc.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_fdp_ruhu_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_ruhu_desc \- Reclaim Unit Handle Usage Descriptor +.SH SYNOPSIS +struct nvme_fdp_ruhu_desc { +.br +.BI " __u8 ruha;" +.br +.BI " __u8 rsvd1[7];" +.br +.BI " +}; +.br + +.SH Members +.IP "ruha" 12 +Reclaim Unit Handle Attributes (\fIenum nvme_fdp_ruha\fP) +.IP "rsvd1" 12 +Reserved diff --git a/doc/man/nvme_fdp_ruhu_log.2 b/doc/man/nvme_fdp_ruhu_log.2 new file mode 100644 index 0000000..794dc15 --- /dev/null +++ b/doc/man/nvme_fdp_ruhu_log.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_fdp_ruhu_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_ruhu_log \- Reclaim Unit Handle Usage Log Page +.SH SYNOPSIS +struct nvme_fdp_ruhu_log { +.br +.BI " __u16 nruh;" +.br +.BI " __u8 rsvd2[6];" +.br +.BI " struct nvme_fdp_ruhu_desc ruhus[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nruh" 12 +Number of Reclaim Unit Handles +.IP "rsvd2" 12 +Reserved +.IP "ruhus" 12 +Reclaim Unit Handle Usage descriptors diff --git a/doc/man/nvme_fdp_stats_log.2 b/doc/man/nvme_fdp_stats_log.2 new file mode 100644 index 0000000..8ada127 --- /dev/null +++ b/doc/man/nvme_fdp_stats_log.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_fdp_stats_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_stats_log \- FDP Statistics Log Page +.SH SYNOPSIS +struct nvme_fdp_stats_log { +.br +.BI " __u8 hbmw[16];" +.br +.BI " __u8 mbmw[16];" +.br +.BI " __u8 mbe[16];" +.br +.BI " __u8 rsvd48[16];" +.br +.BI " +}; +.br + +.SH Members +.IP "hbmw" 12 +Host Bytes with Metadata Written +.IP "mbmw" 12 +Media Bytes with Metadata Written +.IP "mbe" 12 +Media Bytes Erased +.IP "rsvd48" 12 +Reserved diff --git a/doc/man/nvme_fdp_supported_event_attributes.2 b/doc/man/nvme_fdp_supported_event_attributes.2 new file mode 100644 index 0000000..2f6c55d --- /dev/null +++ b/doc/man/nvme_fdp_supported_event_attributes.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_fdp_supported_event_attributes" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fdp_supported_event_attributes \- Supported FDP Event Attributes +.SH SYNOPSIS +enum nvme_fdp_supported_event_attributes { +.br +.BI " NVME_FDP_SUPP_EVENT_ENABLED_SHIFT" +, +.br +.br +.BI " NVME_FDP_SUPP_EVENT_ENABLED_MASK" + +}; +.SH Constants +.IP "NVME_FDP_SUPP_EVENT_ENABLED_SHIFT" 12 +FDP Event Enable Shift +.IP "NVME_FDP_SUPP_EVENT_ENABLED_MASK" 12 +FDP Event Enable Mask diff --git a/doc/man/nvme_fdp_supported_event_desc.2 b/doc/man/nvme_fdp_supported_event_desc.2 new file mode 100644 index 0000000..421be89 --- /dev/null +++ b/doc/man/nvme_fdp_supported_event_desc.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_fdp_supported_event_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fdp_supported_event_desc \- Supported FDP Event Descriptor +.SH SYNOPSIS +struct nvme_fdp_supported_event_desc { +.br +.BI " __u8 evt;" +.br +.BI " __u8 evta;" +.br +.BI " +}; +.br + +.SH Members +.IP "evt" 12 +FDP Event Type +.IP "evta" 12 +FDP Event Type Attributes (\fIenum nvme_fdp_supported_event_attributes\fP) diff --git a/doc/man/nvme_feat.2 b/doc/man/nvme_feat.2 new file mode 100644 index 0000000..8891682 --- /dev/null +++ b/doc/man/nvme_feat.2 @@ -0,0 +1,526 @@ +.TH "libnvme" 9 "enum nvme_feat" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_feat \- Features Access Shifts/Masks values +.SH SYNOPSIS +enum nvme_feat { +.br +.BI " NVME_FEAT_ARBITRATION_BURST_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_BURST_MASK" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_LPW_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_LPW_MASK" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_MPW_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_MPW_MASK" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_HPW_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ARBITRATION_HPW_MASK" +, +.br +.br +.BI " NVME_FEAT_PWRMGMT_PS_SHIFT" +, +.br +.br +.BI " NVME_FEAT_PWRMGMT_PS_MASK" +, +.br +.br +.BI " NVME_FEAT_PWRMGMT_WH_SHIFT" +, +.br +.br +.BI " NVME_FEAT_PWRMGMT_WH_MASK" +, +.br +.br +.BI " NVME_FEAT_LBAR_NR_SHIFT" +, +.br +.br +.BI " NVME_FEAT_LBAR_NR_MASK" +, +.br +.br +.BI " NVME_FEAT_TT_TMPTH_SHIFT" +, +.br +.br +.BI " NVME_FEAT_TT_TMPTH_MASK" +, +.br +.br +.BI " NVME_FEAT_TT_TMPSEL_SHIFT" +, +.br +.br +.BI " NVME_FEAT_TT_TMPSEL_MASK" +, +.br +.br +.BI " NVME_FEAT_TT_THSEL_SHIFT" +, +.br +.br +.BI " NVME_FEAT_TT_THSEL_MASK" +, +.br +.br +.BI " NVME_FEAT_ERROR_RECOVERY_TLER_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ERROR_RECOVERY_TLER_MASK" +, +.br +.br +.BI " NVME_FEAT_ERROR_RECOVERY_DULBE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ERROR_RECOVERY_DULBE_MASK" +, +.br +.br +.BI " NVME_FEAT_VWC_WCE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_VWC_WCE_MASK" +, +.br +.br +.BI " NVME_FEAT_NRQS_NSQR_SHIFT" +, +.br +.br +.BI " NVME_FEAT_NRQS_NSQR_MASK" +, +.br +.br +.BI " NVME_FEAT_NRQS_NCQR_SHIFT" +, +.br +.br +.BI " NVME_FEAT_NRQS_NCQR_MASK" +, +.br +.br +.BI " NVME_FEAT_IRQC_THR_SHIFT" +, +.br +.br +.BI " NVME_FEAT_IRQC_THR_MASK" +, +.br +.br +.BI " NVME_FEAT_IRQC_TIME_SHIFT" +, +.br +.br +.BI " NVME_FEAT_IRQC_TIME_MASK" +, +.br +.br +.BI " NVME_FEAT_ICFG_IV_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ICFG_IV_MASK" +, +.br +.br +.BI " NVME_FEAT_ICFG_CD_SHIFT" +, +.br +.br +.BI " NVME_FEAT_ICFG_CD_MASK" +, +.br +.br +.BI " NVME_FEAT_WA_DN_SHIFT" +, +.br +.br +.BI " NVME_FEAT_WA_DN_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_SMART_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_SMART_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_NAN_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_NAN_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_FW_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_FW_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_TELEM_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_TELEM_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_ANA_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_ANA_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_PLA_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_PLA_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_LBAS_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_LBAS_MASK" +, +.br +.br +.BI " NVME_FEAT_AE_EGA_SHIFT" +, +.br +.br +.BI " NVME_FEAT_AE_EGA_MASK" +, +.br +.br +.BI " NVME_FEAT_APST_APSTE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_APST_APSTE_MASK" +, +.br +.br +.BI " NVME_FEAT_HMEM_EHM_SHIFT" +, +.br +.br +.BI " NVME_FEAT_HMEM_EHM_MASK" +, +.br +.br +.BI " NVME_FEAT_HCTM_TMT2_SHIFT" +, +.br +.br +.BI " NVME_FEAT_HCTM_TMT2_MASK" +, +.br +.br +.BI " NVME_FEAT_HCTM_TMT1_SHIFT" +, +.br +.br +.BI " NVME_FEAT_HCTM_TMT1_MASK" +, +.br +.br +.BI " NVME_FEAT_NOPS_NOPPME_SHIFT" +, +.br +.br +.BI " NVME_FEAT_NOPS_NOPPME_MASK" +, +.br +.br +.BI " NVME_FEAT_RRL_RRL_SHIFT" +, +.br +.br +.BI " NVME_FEAT_RRL_RRL_MASK" +, +.br +.br +.BI " NVME_FEAT_PLM_PLME_SHIFT" +, +.br +.br +.BI " NVME_FEAT_PLM_PLME_MASK" +, +.br +.br +.BI " NVME_FEAT_PLMW_WS_SHIFT" +, +.br +.br +.BI " NVME_FEAT_PLMW_WS_MASK" +, +.br +.br +.BI " NVME_FEAT_LBAS_LSIRI_SHIFT" +, +.br +.br +.BI " NVME_FEAT_LBAS_LSIRI_MASK" +, +.br +.br +.BI " NVME_FEAT_LBAS_LSIPI_SHIFT" +, +.br +.br +.BI " NVME_FEAT_LBAS_LSIPI_MASK" +, +.br +.br +.BI " NVME_FEAT_SC_NODRM_SHIFT" +, +.br +.br +.BI " NVME_FEAT_SC_NODRM_MASK" +, +.br +.br +.BI " NVME_FEAT_EG_ENDGID_SHIFT" +, +.br +.br +.BI " NVME_FEAT_EG_ENDGID_MASK" +, +.br +.br +.BI " NVME_FEAT_EG_EGCW_SHIFT" +, +.br +.br +.BI " NVME_FEAT_EG_EGCW_MASK" +, +.br +.br +.BI " NVME_FEAT_SPM_PBSLC_SHIFT" +, +.br +.br +.BI " NVME_FEAT_SPM_PBSLC_MASK" +, +.br +.br +.BI " NVME_FEAT_HOSTID_EXHID_SHIFT" +, +.br +.br +.BI " NVME_FEAT_HOSTID_EXHID_MASK" +, +.br +.br +.BI " NVME_FEAT_RM_REGPRE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_RM_REGPRE_MASK" +, +.br +.br +.BI " NVME_FEAT_RM_RESREL_SHIFT" +, +.br +.br +.BI " NVME_FEAT_RM_RESREL_MASK" +, +.br +.br +.BI " NVME_FEAT_RM_RESPRE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_RM_RESPRE_MASK" +, +.br +.br +.BI " NVME_FEAT_RP_PTPL_SHIFT" +, +.br +.br +.BI " NVME_FEAT_RP_PTPL_MASK" +, +.br +.br +.BI " NVME_FEAT_WP_WPS_SHIFT" +, +.br +.br +.BI " NVME_FEAT_WP_WPS_MASK" +, +.br +.br +.BI " NVME_FEAT_IOCSP_IOCSCI_SHIFT" +, +.br +.br +.BI " NVME_FEAT_IOCSP_IOCSCI_MASK" +, +.br +.br +.BI " NVME_FEAT_FDP_ENABLED_SHIFT" +, +.br +.br +.BI " NVME_FEAT_FDP_ENABLED_MASK" +, +.br +.br +.BI " NVME_FEAT_FDP_INDEX_SHIFT" +, +.br +.br +.BI " NVME_FEAT_FDP_INDEX_MASK" +, +.br +.br +.BI " NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT" +, +.br +.br +.BI " NVME_FEAT_FDP_EVENTS_ENABLE_MASK" + +}; +.SH Constants +.IP "NVME_FEAT_ARBITRATION_BURST_SHIFT" 12 +.IP "NVME_FEAT_ARBITRATION_BURST_MASK" 12 +.IP "NVME_FEAT_ARBITRATION_LPW_SHIFT" 12 +.IP "NVME_FEAT_ARBITRATION_LPW_MASK" 12 +.IP "NVME_FEAT_ARBITRATION_MPW_SHIFT" 12 +.IP "NVME_FEAT_ARBITRATION_MPW_MASK" 12 +.IP "NVME_FEAT_ARBITRATION_HPW_SHIFT" 12 +.IP "NVME_FEAT_ARBITRATION_HPW_MASK" 12 +.IP "NVME_FEAT_PWRMGMT_PS_SHIFT" 12 +.IP "NVME_FEAT_PWRMGMT_PS_MASK" 12 +.IP "NVME_FEAT_PWRMGMT_WH_SHIFT" 12 +.IP "NVME_FEAT_PWRMGMT_WH_MASK" 12 +.IP "NVME_FEAT_LBAR_NR_SHIFT" 12 +.IP "NVME_FEAT_LBAR_NR_MASK" 12 +.IP "NVME_FEAT_TT_TMPTH_SHIFT" 12 +.IP "NVME_FEAT_TT_TMPTH_MASK" 12 +.IP "NVME_FEAT_TT_TMPSEL_SHIFT" 12 +.IP "NVME_FEAT_TT_TMPSEL_MASK" 12 +.IP "NVME_FEAT_TT_THSEL_SHIFT" 12 +.IP "NVME_FEAT_TT_THSEL_MASK" 12 +.IP "NVME_FEAT_ERROR_RECOVERY_TLER_SHIFT" 12 +.IP "NVME_FEAT_ERROR_RECOVERY_TLER_MASK" 12 +.IP "NVME_FEAT_ERROR_RECOVERY_DULBE_SHIFT" 12 +.IP "NVME_FEAT_ERROR_RECOVERY_DULBE_MASK" 12 +.IP "NVME_FEAT_VWC_WCE_SHIFT" 12 +.IP "NVME_FEAT_VWC_WCE_MASK" 12 +.IP "NVME_FEAT_NRQS_NSQR_SHIFT" 12 +.IP "NVME_FEAT_NRQS_NSQR_MASK" 12 +.IP "NVME_FEAT_NRQS_NCQR_SHIFT" 12 +.IP "NVME_FEAT_NRQS_NCQR_MASK" 12 +.IP "NVME_FEAT_IRQC_THR_SHIFT" 12 +.IP "NVME_FEAT_IRQC_THR_MASK" 12 +.IP "NVME_FEAT_IRQC_TIME_SHIFT" 12 +.IP "NVME_FEAT_IRQC_TIME_MASK" 12 +.IP "NVME_FEAT_ICFG_IV_SHIFT" 12 +.IP "NVME_FEAT_ICFG_IV_MASK" 12 +.IP "NVME_FEAT_ICFG_CD_SHIFT" 12 +.IP "NVME_FEAT_ICFG_CD_MASK" 12 +.IP "NVME_FEAT_WA_DN_SHIFT" 12 +.IP "NVME_FEAT_WA_DN_MASK" 12 +.IP "NVME_FEAT_AE_SMART_SHIFT" 12 +.IP "NVME_FEAT_AE_SMART_MASK" 12 +.IP "NVME_FEAT_AE_NAN_SHIFT" 12 +.IP "NVME_FEAT_AE_NAN_MASK" 12 +.IP "NVME_FEAT_AE_FW_SHIFT" 12 +.IP "NVME_FEAT_AE_FW_MASK" 12 +.IP "NVME_FEAT_AE_TELEM_SHIFT" 12 +.IP "NVME_FEAT_AE_TELEM_MASK" 12 +.IP "NVME_FEAT_AE_ANA_SHIFT" 12 +.IP "NVME_FEAT_AE_ANA_MASK" 12 +.IP "NVME_FEAT_AE_PLA_SHIFT" 12 +.IP "NVME_FEAT_AE_PLA_MASK" 12 +.IP "NVME_FEAT_AE_LBAS_SHIFT" 12 +.IP "NVME_FEAT_AE_LBAS_MASK" 12 +.IP "NVME_FEAT_AE_EGA_SHIFT" 12 +.IP "NVME_FEAT_AE_EGA_MASK" 12 +.IP "NVME_FEAT_APST_APSTE_SHIFT" 12 +.IP "NVME_FEAT_APST_APSTE_MASK" 12 +.IP "NVME_FEAT_HMEM_EHM_SHIFT" 12 +.IP "NVME_FEAT_HMEM_EHM_MASK" 12 +.IP "NVME_FEAT_HCTM_TMT2_SHIFT" 12 +.IP "NVME_FEAT_HCTM_TMT2_MASK" 12 +.IP "NVME_FEAT_HCTM_TMT1_SHIFT" 12 +.IP "NVME_FEAT_HCTM_TMT1_MASK" 12 +.IP "NVME_FEAT_NOPS_NOPPME_SHIFT" 12 +.IP "NVME_FEAT_NOPS_NOPPME_MASK" 12 +.IP "NVME_FEAT_RRL_RRL_SHIFT" 12 +.IP "NVME_FEAT_RRL_RRL_MASK" 12 +.IP "NVME_FEAT_PLM_PLME_SHIFT" 12 +.IP "NVME_FEAT_PLM_PLME_MASK" 12 +.IP "NVME_FEAT_PLMW_WS_SHIFT" 12 +.IP "NVME_FEAT_PLMW_WS_MASK" 12 +.IP "NVME_FEAT_LBAS_LSIRI_SHIFT" 12 +.IP "NVME_FEAT_LBAS_LSIRI_MASK" 12 +.IP "NVME_FEAT_LBAS_LSIPI_SHIFT" 12 +.IP "NVME_FEAT_LBAS_LSIPI_MASK" 12 +.IP "NVME_FEAT_SC_NODRM_SHIFT" 12 +.IP "NVME_FEAT_SC_NODRM_MASK" 12 +.IP "NVME_FEAT_EG_ENDGID_SHIFT" 12 +.IP "NVME_FEAT_EG_ENDGID_MASK" 12 +.IP "NVME_FEAT_EG_EGCW_SHIFT" 12 +.IP "NVME_FEAT_EG_EGCW_MASK" 12 +.IP "NVME_FEAT_SPM_PBSLC_SHIFT" 12 +.IP "NVME_FEAT_SPM_PBSLC_MASK" 12 +.IP "NVME_FEAT_HOSTID_EXHID_SHIFT" 12 +.IP "NVME_FEAT_HOSTID_EXHID_MASK" 12 +.IP "NVME_FEAT_RM_REGPRE_SHIFT" 12 +.IP "NVME_FEAT_RM_REGPRE_MASK" 12 +.IP "NVME_FEAT_RM_RESREL_SHIFT" 12 +.IP "NVME_FEAT_RM_RESREL_MASK" 12 +.IP "NVME_FEAT_RM_RESPRE_SHIFT" 12 +.IP "NVME_FEAT_RM_RESPRE_MASK" 12 +.IP "NVME_FEAT_RP_PTPL_SHIFT" 12 +.IP "NVME_FEAT_RP_PTPL_MASK" 12 +.IP "NVME_FEAT_WP_WPS_SHIFT" 12 +.IP "NVME_FEAT_WP_WPS_MASK" 12 +.IP "NVME_FEAT_IOCSP_IOCSCI_SHIFT" 12 +.IP "NVME_FEAT_IOCSP_IOCSCI_MASK" 12 +.IP "NVME_FEAT_FDP_ENABLED_SHIFT" 12 +.IP "NVME_FEAT_FDP_ENABLED_MASK" 12 +.IP "NVME_FEAT_FDP_INDEX_SHIFT" 12 +.IP "NVME_FEAT_FDP_INDEX_MASK" 12 +.IP "NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT" 12 +.IP "NVME_FEAT_FDP_EVENTS_ENABLE_MASK" 12 diff --git a/doc/man/nvme_feat_auto_pst.2 b/doc/man/nvme_feat_auto_pst.2 new file mode 100644 index 0000000..3e7ebc9 --- /dev/null +++ b/doc/man/nvme_feat_auto_pst.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "struct nvme_feat_auto_pst" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_feat_auto_pst \- Autonomous Power State Transition +.SH SYNOPSIS +struct nvme_feat_auto_pst { +.br +.BI " __le64 apst_entry[32];" +.br +.BI " +}; +.br + +.SH Members +.IP "apst_entry" 12 +See \fIenum nvme_apst_entry\fP diff --git a/doc/man/nvme_feat_fdp_events_cdw11.2 b/doc/man/nvme_feat_fdp_events_cdw11.2 new file mode 100644 index 0000000..5960a6c --- /dev/null +++ b/doc/man/nvme_feat_fdp_events_cdw11.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_feat_fdp_events_cdw11" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_feat_fdp_events_cdw11 \- FDP Events Feature Command Dword 11 +.SH SYNOPSIS +struct nvme_feat_fdp_events_cdw11 { +.br +.BI " __u16 phndl;" +.br +.BI " __u8 noet;" +.br +.BI " __u8 rsvd24;" +.br +.BI " +}; +.br + +.SH Members +.IP "phndl" 12 +Placement Handle +.IP "noet" 12 +Number of FDP Event Types +.IP "rsvd24" 12 +Reserved diff --git a/doc/man/nvme_feat_host_behavior.2 b/doc/man/nvme_feat_host_behavior.2 new file mode 100644 index 0000000..8a53e2f --- /dev/null +++ b/doc/man/nvme_feat_host_behavior.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_feat_host_behavior" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_feat_host_behavior \- Host Behavior Support - Data Structure +.SH SYNOPSIS +struct nvme_feat_host_behavior { +.br +.BI " __u8 acre;" +.br +.BI " __u8 rsvd1[511];" +.br +.BI " +}; +.br + +.SH Members +.IP "acre" 12 +Advanced Command Retry Enable +.IP "rsvd1" 12 +Reserved diff --git a/doc/man/nvme_feat_nswpcfg_state.2 b/doc/man/nvme_feat_nswpcfg_state.2 new file mode 100644 index 0000000..fe45d95 --- /dev/null +++ b/doc/man/nvme_feat_nswpcfg_state.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_feat_nswpcfg_state" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_feat_nswpcfg_state \- Write Protection - Write Protection State +.SH SYNOPSIS +enum nvme_feat_nswpcfg_state { +.br +.BI " NVME_FEAT_NS_NO_WRITE_PROTECT" +, +.br +.br +.BI " NVME_FEAT_NS_WRITE_PROTECT" +, +.br +.br +.BI " NVME_FEAT_NS_WRITE_PROTECT_PWR_CYCLE" +, +.br +.br +.BI " NVME_FEAT_NS_WRITE_PROTECT_PERMANENT" + +}; +.SH Constants +.IP "NVME_FEAT_NS_NO_WRITE_PROTECT" 12 +No Write Protect +.IP "NVME_FEAT_NS_WRITE_PROTECT" 12 +Write Protect +.IP "NVME_FEAT_NS_WRITE_PROTECT_PWR_CYCLE" 12 +Write Protect Until Power Cycle +.IP "NVME_FEAT_NS_WRITE_PROTECT_PERMANENT" 12 +Permanent Write Protect diff --git a/doc/man/nvme_feat_plm_window_select.2 b/doc/man/nvme_feat_plm_window_select.2 new file mode 100644 index 0000000..37f2cc3 --- /dev/null +++ b/doc/man/nvme_feat_plm_window_select.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_feat_plm_window_select" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_feat_plm_window_select \- Predictable Latency Per NVM Set Log +.SH SYNOPSIS +enum nvme_feat_plm_window_select { +.br +.BI " NVME_FEATURE_PLM_DTWIN" +, +.br +.br +.BI " NVME_FEATURE_PLM_NDWIN" + +}; +.SH Constants +.IP "NVME_FEATURE_PLM_DTWIN" 12 +Deterministic Window select +.IP "NVME_FEATURE_PLM_NDWIN" 12 +Non-Deterministic Window select diff --git a/doc/man/nvme_feat_resv_notify_flags.2 b/doc/man/nvme_feat_resv_notify_flags.2 new file mode 100644 index 0000000..538f7c4 --- /dev/null +++ b/doc/man/nvme_feat_resv_notify_flags.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_feat_resv_notify_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_feat_resv_notify_flags \- Reservation Notification Configuration +.SH SYNOPSIS +enum nvme_feat_resv_notify_flags { +.br +.BI " NVME_FEAT_RESV_NOTIFY_REGPRE" +, +.br +.br +.BI " NVME_FEAT_RESV_NOTIFY_RESREL" +, +.br +.br +.BI " NVME_FEAT_RESV_NOTIFY_RESPRE" + +}; +.SH Constants +.IP "NVME_FEAT_RESV_NOTIFY_REGPRE" 12 +Mask Registration Preempted Notification +.IP "NVME_FEAT_RESV_NOTIFY_RESREL" 12 +Mask Reservation Released Notification +.IP "NVME_FEAT_RESV_NOTIFY_RESPRE" 12 +Mask Reservation Preempted Notification diff --git a/doc/man/nvme_feat_tmpthresh_thsel.2 b/doc/man/nvme_feat_tmpthresh_thsel.2 new file mode 100644 index 0000000..635b1c7 --- /dev/null +++ b/doc/man/nvme_feat_tmpthresh_thsel.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_feat_tmpthresh_thsel" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_feat_tmpthresh_thsel \- Temperature Threshold - Threshold Type Select +.SH SYNOPSIS +enum nvme_feat_tmpthresh_thsel { +.br +.BI " NVME_FEATURE_TEMPTHRESH_THSEL_OVER" +, +.br +.br +.BI " NVME_FEATURE_TEMPTHRESH_THSEL_UNDER" + +}; +.SH Constants +.IP "NVME_FEATURE_TEMPTHRESH_THSEL_OVER" 12 +Over temperature threshold select +.IP "NVME_FEATURE_TEMPTHRESH_THSEL_UNDER" 12 +Under temperature threshold select diff --git a/doc/man/nvme_features_async_event_config_flags.2 b/doc/man/nvme_features_async_event_config_flags.2 new file mode 100644 index 0000000..c7ec84d --- /dev/null +++ b/doc/man/nvme_features_async_event_config_flags.2 @@ -0,0 +1,76 @@ +.TH "libnvme" 9 "enum nvme_features_async_event_config_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_features_async_event_config_flags \- Asynchronous Event Configuration configuration flags +.SH SYNOPSIS +enum nvme_features_async_event_config_flags { +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_SPARE" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_TEMPERATURE" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_DEGRADED" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_VOLATILE_BACKUP" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY_PMR" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_NAMESPACE_ATTRIBUTES" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_FIRMWARE_ACTIVATION" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_TELEMETRY_LOG" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_ANA_CHANGE" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_PL_EVENT" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_LBA_STATUS" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_EG_EVENT" +, +.br +.br +.BI " NVME_FEATURE_AENCFG_NOTICE_DISCOVERY_CHANGE" + +}; +.SH Constants +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_SPARE" 12 +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_TEMPERATURE" 12 +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_DEGRADED" 12 +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY" 12 +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_VOLATILE_BACKUP" 12 +.IP "NVME_FEATURE_AENCFG_SMART_CRIT_READ_ONLY_PMR" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_NAMESPACE_ATTRIBUTES" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_FIRMWARE_ACTIVATION" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_TELEMETRY_LOG" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_ANA_CHANGE" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_PL_EVENT" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_LBA_STATUS" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_EG_EVENT" 12 +.IP "NVME_FEATURE_AENCFG_NOTICE_DISCOVERY_CHANGE" 12 diff --git a/doc/man/nvme_features_id.2 b/doc/man/nvme_features_id.2 new file mode 100644 index 0000000..995248c --- /dev/null +++ b/doc/man/nvme_features_id.2 @@ -0,0 +1,222 @@ +.TH "libnvme" 9 "enum nvme_features_id" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_features_id \- Features - Feature Identifiers +.SH SYNOPSIS +enum nvme_features_id { +.br +.BI " NVME_FEAT_FID_ARBITRATION" +, +.br +.br +.BI " NVME_FEAT_FID_POWER_MGMT" +, +.br +.br +.BI " NVME_FEAT_FID_LBA_RANGE" +, +.br +.br +.BI " NVME_FEAT_FID_TEMP_THRESH" +, +.br +.br +.BI " NVME_FEAT_FID_ERR_RECOVERY" +, +.br +.br +.BI " NVME_FEAT_FID_VOLATILE_WC" +, +.br +.br +.BI " NVME_FEAT_FID_NUM_QUEUES" +, +.br +.br +.BI " NVME_FEAT_FID_IRQ_COALESCE" +, +.br +.br +.BI " NVME_FEAT_FID_IRQ_CONFIG" +, +.br +.br +.BI " NVME_FEAT_FID_WRITE_ATOMIC" +, +.br +.br +.BI " NVME_FEAT_FID_ASYNC_EVENT" +, +.br +.br +.BI " NVME_FEAT_FID_AUTO_PST" +, +.br +.br +.BI " NVME_FEAT_FID_HOST_MEM_BUF" +, +.br +.br +.BI " NVME_FEAT_FID_TIMESTAMP" +, +.br +.br +.BI " NVME_FEAT_FID_KATO" +, +.br +.br +.BI " NVME_FEAT_FID_HCTM" +, +.br +.br +.BI " NVME_FEAT_FID_NOPSC" +, +.br +.br +.BI " NVME_FEAT_FID_RRL" +, +.br +.br +.BI " NVME_FEAT_FID_PLM_CONFIG" +, +.br +.br +.BI " NVME_FEAT_FID_PLM_WINDOW" +, +.br +.br +.BI " NVME_FEAT_FID_LBA_STS_INTERVAL" +, +.br +.br +.BI " NVME_FEAT_FID_HOST_BEHAVIOR" +, +.br +.br +.BI " NVME_FEAT_FID_SANITIZE" +, +.br +.br +.BI " NVME_FEAT_FID_ENDURANCE_EVT_CFG" +, +.br +.br +.BI " NVME_FEAT_FID_IOCS_PROFILE" +, +.br +.br +.BI " NVME_FEAT_FID_SPINUP_CONTROL" +, +.br +.br +.BI " NVME_FEAT_FID_FDP" +, +.br +.br +.BI " NVME_FEAT_FID_FDP_EVENTS" +, +.br +.br +.BI " NVME_FEAT_FID_ENH_CTRL_METADATA" +, +.br +.br +.BI " NVME_FEAT_FID_CTRL_METADATA" +, +.br +.br +.BI " NVME_FEAT_FID_NS_METADATA" +, +.br +.br +.BI " NVME_FEAT_FID_SW_PROGRESS" +, +.br +.br +.BI " NVME_FEAT_FID_HOST_ID" +, +.br +.br +.BI " NVME_FEAT_FID_RESV_MASK" +, +.br +.br +.BI " NVME_FEAT_FID_RESV_PERSIST" +, +.br +.br +.BI " NVME_FEAT_FID_WRITE_PROTECT" + +}; +.SH Constants +.IP "NVME_FEAT_FID_ARBITRATION" 12 +Arbitration +.IP "NVME_FEAT_FID_POWER_MGMT" 12 +Power Management +.IP "NVME_FEAT_FID_LBA_RANGE" 12 +LBA Range Type +.IP "NVME_FEAT_FID_TEMP_THRESH" 12 +Temperature Threshold +.IP "NVME_FEAT_FID_ERR_RECOVERY" 12 +Error Recovery +.IP "NVME_FEAT_FID_VOLATILE_WC" 12 +Volatile Write Cache +.IP "NVME_FEAT_FID_NUM_QUEUES" 12 +Number of Queues +.IP "NVME_FEAT_FID_IRQ_COALESCE" 12 +Interrupt Coalescing +.IP "NVME_FEAT_FID_IRQ_CONFIG" 12 +Interrupt Vector Configuration +.IP "NVME_FEAT_FID_WRITE_ATOMIC" 12 +Write Atomicity Normal +.IP "NVME_FEAT_FID_ASYNC_EVENT" 12 +Asynchronous Event Configuration +.IP "NVME_FEAT_FID_AUTO_PST" 12 +Autonomous Power State Transition +.IP "NVME_FEAT_FID_HOST_MEM_BUF" 12 +Host Memory Buffer +.IP "NVME_FEAT_FID_TIMESTAMP" 12 +Timestamp +.IP "NVME_FEAT_FID_KATO" 12 +Keep Alive Timer +.IP "NVME_FEAT_FID_HCTM" 12 +Host Controlled Thermal Management +.IP "NVME_FEAT_FID_NOPSC" 12 +Non-Operational Power State Config +.IP "NVME_FEAT_FID_RRL" 12 +Read Recovery Level Config +.IP "NVME_FEAT_FID_PLM_CONFIG" 12 +Predictable Latency Mode Config +.IP "NVME_FEAT_FID_PLM_WINDOW" 12 +Predictable Latency Mode Window +.IP "NVME_FEAT_FID_LBA_STS_INTERVAL" 12 +LBA Status Information Report Interval +.IP "NVME_FEAT_FID_HOST_BEHAVIOR" 12 +Host Behavior Support +.IP "NVME_FEAT_FID_SANITIZE" 12 +Endurance Group Event Configuration +.IP "NVME_FEAT_FID_ENDURANCE_EVT_CFG" 12 +Endurance Group Event Configuration +.IP "NVME_FEAT_FID_IOCS_PROFILE" 12 +I/O Command Set Profile +.IP "NVME_FEAT_FID_SPINUP_CONTROL" 12 +Spinup Control +.IP "NVME_FEAT_FID_FDP" 12 +Flexible Data Placement +.IP "NVME_FEAT_FID_FDP_EVENTS" 12 +FDP Events +.IP "NVME_FEAT_FID_ENH_CTRL_METADATA" 12 +Enhanced Controller Metadata +.IP "NVME_FEAT_FID_CTRL_METADATA" 12 +Controller Metadata +.IP "NVME_FEAT_FID_NS_METADATA" 12 +Namespace Metadata +.IP "NVME_FEAT_FID_SW_PROGRESS" 12 +Software Progress Marker +.IP "NVME_FEAT_FID_HOST_ID" 12 +Host Identifier +.IP "NVME_FEAT_FID_RESV_MASK" 12 +Reservation Notification Mask +.IP "NVME_FEAT_FID_RESV_PERSIST" 12 +Reservation Persistence +.IP "NVME_FEAT_FID_WRITE_PROTECT" 12 +Namespace Write Protection Config diff --git a/doc/man/nvme_fid_supported_effects.2 b/doc/man/nvme_fid_supported_effects.2 new file mode 100644 index 0000000..55c37c8 --- /dev/null +++ b/doc/man/nvme_fid_supported_effects.2 @@ -0,0 +1,90 @@ +.TH "libnvme" 9 "enum nvme_fid_supported_effects" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fid_supported_effects \- FID Supported and Effects Data Structure definitions +.SH SYNOPSIS +enum nvme_fid_supported_effects { +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_FSUPP" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_UDCC" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_NCC" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_NIC" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_CCC" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_UUID_SEL" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_SHIFT" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_MASK" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_NS" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_CTRL" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_NVM_SET" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_ENDGRP" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_DOMAIN" +, +.br +.br +.BI " NVME_FID_SUPPORTED_EFFECTS_SCOPE_NSS" + +}; +.SH Constants +.IP "NVME_FID_SUPPORTED_EFFECTS_FSUPP" 12 +FID Supported +.IP "NVME_FID_SUPPORTED_EFFECTS_UDCC" 12 +User Data Content Change +.IP "NVME_FID_SUPPORTED_EFFECTS_NCC" 12 +Namespace Capability Change +.IP "NVME_FID_SUPPORTED_EFFECTS_NIC" 12 +Namespace Inventory Change +.IP "NVME_FID_SUPPORTED_EFFECTS_CCC" 12 +Controller Capability Change +.IP "NVME_FID_SUPPORTED_EFFECTS_UUID_SEL" 12 +UUID Selection Supported +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_SHIFT" 12 +FID Scope Shift +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_MASK" 12 +FID Scope Mask +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_NS" 12 +Namespace Scope +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_CTRL" 12 +Controller Scope +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_NVM_SET" 12 +NVM Set Scope +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_ENDGRP" 12 +Endurance Group Scope +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_DOMAIN" 12 +Domain Scope +.IP "NVME_FID_SUPPORTED_EFFECTS_SCOPE_NSS" 12 +NVM Subsystem Scope diff --git a/doc/man/nvme_fid_supported_effects_log.2 b/doc/man/nvme_fid_supported_effects_log.2 new file mode 100644 index 0000000..4cdff97 --- /dev/null +++ b/doc/man/nvme_fid_supported_effects_log.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "struct nvme_fid_supported_effects_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fid_supported_effects_log \- Feature Identifiers Supported and Effects +.SH SYNOPSIS +struct nvme_fid_supported_effects_log { +.br +.BI " __le32 fid_support[NVME_LOG_FID_SUPPORTED_EFFECTS_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "fid_support" 12 +Feature Identifier Supported diff --git a/doc/man/nvme_firmware_slot.2 b/doc/man/nvme_firmware_slot.2 new file mode 100644 index 0000000..17b4722 --- /dev/null +++ b/doc/man/nvme_firmware_slot.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_firmware_slot" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_firmware_slot \- Firmware Slot Information Log +.SH SYNOPSIS +struct nvme_firmware_slot { +.br +.BI " __u8 afi;" +.br +.BI " __u8 rsvd1[7];" +.br +.BI " char frs[7][8];" +.br +.BI " __u8 rsvd2[448];" +.br +.BI " +}; +.br + +.SH Members +.IP "afi" 12 +Active Firmware Info +.IP "rsvd1" 12 +Reserved +.IP "frs" 12 +Firmware Revision for Slot +.IP "rsvd2" 12 +Reserved diff --git a/doc/man/nvme_first_host.2 b/doc/man/nvme_first_host.2 new file mode 100644 index 0000000..05d0fbc --- /dev/null +++ b/doc/man/nvme_first_host.2 @@ -0,0 +1,11 @@ +.TH "nvme_first_host" 9 "nvme_first_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_first_host \- Start host iterator +.SH SYNOPSIS +.B "nvme_host_t" nvme_first_host +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.SH "RETURN" +First \fInvme_host_t\fP object in an iterator diff --git a/doc/man/nvme_first_subsystem.2 b/doc/man/nvme_first_subsystem.2 new file mode 100644 index 0000000..1b53909 --- /dev/null +++ b/doc/man/nvme_first_subsystem.2 @@ -0,0 +1,11 @@ +.TH "nvme_first_subsystem" 9 "nvme_first_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_first_subsystem \- Start subsystem iterator +.SH SYNOPSIS +.B "nvme_subsystem_t" nvme_first_subsystem +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.SH "RETURN" +first \fInvme_subsystem_t\fP object in an iterator diff --git a/doc/man/nvme_flush.2 b/doc/man/nvme_flush.2 new file mode 100644 index 0000000..7636bc9 --- /dev/null +++ b/doc/man/nvme_flush.2 @@ -0,0 +1,18 @@ +.TH "nvme_flush" 9 "nvme_flush" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_flush \- Send an nvme flush command +.SH SYNOPSIS +.B "int" nvme_flush +.BI "(int fd " "," +.BI "__u32 nsid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace identifier +.SH "DESCRIPTION" +The Flush command requests that the contents of volatile write cache be made +non-volatile. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_for_each_host.2 b/doc/man/nvme_for_each_host.2 new file mode 100644 index 0000000..177bc15 --- /dev/null +++ b/doc/man/nvme_for_each_host.2 @@ -0,0 +1,12 @@ +.TH "nvme_for_each_host" 9 "nvme_for_each_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_for_each_host \- Traverse host list +.SH SYNOPSIS +.B "nvme_for_each_host +.BI "(r " "," +.BI "h " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.IP "h" 12 +\fInvme_host_t\fP object diff --git a/doc/man/nvme_for_each_host_safe.2 b/doc/man/nvme_for_each_host_safe.2 new file mode 100644 index 0000000..fe5e999 --- /dev/null +++ b/doc/man/nvme_for_each_host_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_for_each_host_safe" 9 "nvme_for_each_host_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_for_each_host_safe \- Traverse host list +.SH SYNOPSIS +.B "nvme_for_each_host_safe +.BI "(r " "," +.BI "h " "," +.BI "_h " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.IP "h" 12 +\fInvme_host_t\fP object +.IP "_h" 12 +Temporary \fInvme_host_t\fP object diff --git a/doc/man/nvme_for_each_subsystem.2 b/doc/man/nvme_for_each_subsystem.2 new file mode 100644 index 0000000..7647f7b --- /dev/null +++ b/doc/man/nvme_for_each_subsystem.2 @@ -0,0 +1,12 @@ +.TH "nvme_for_each_subsystem" 9 "nvme_for_each_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_for_each_subsystem \- Traverse subsystems +.SH SYNOPSIS +.B "nvme_for_each_subsystem +.BI "(h " "," +.BI "s " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.IP "s" 12 +\fInvme_subsystem_t\fP object diff --git a/doc/man/nvme_for_each_subsystem_safe.2 b/doc/man/nvme_for_each_subsystem_safe.2 new file mode 100644 index 0000000..1de668b --- /dev/null +++ b/doc/man/nvme_for_each_subsystem_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_for_each_subsystem_safe" 9 "nvme_for_each_subsystem_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_for_each_subsystem_safe \- Traverse subsystems +.SH SYNOPSIS +.B "nvme_for_each_subsystem_safe +.BI "(h " "," +.BI "s " "," +.BI "_s " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "_s" 12 +Temporary \fInvme_subsystem_t\fP object diff --git a/doc/man/nvme_format_nvm.2 b/doc/man/nvme_format_nvm.2 new file mode 100644 index 0000000..e658244 --- /dev/null +++ b/doc/man/nvme_format_nvm.2 @@ -0,0 +1,17 @@ +.TH "nvme_format_nvm" 9 "nvme_format_nvm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_format_nvm \- Format nvme namespace(s) +.SH SYNOPSIS +.B "int" nvme_format_nvm +.BI "(struct nvme_format_nvm_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_format_nvme_args\fP argument structure +.SH "DESCRIPTION" +The Format NVM command low level formats the NVM media. This command is used +by the host to change the LBA data size and/or metadata size. A low level +format may destroy all data and metadata associated with all namespaces or +only the specific namespace associated with the command +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_format_nvm_compln_event.2 b/doc/man/nvme_format_nvm_compln_event.2 new file mode 100644 index 0000000..7819ab2 --- /dev/null +++ b/doc/man/nvme_format_nvm_compln_event.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_format_nvm_compln_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_format_nvm_compln_event \- Format NVM Completion Event Data +.SH SYNOPSIS +struct nvme_format_nvm_compln_event { +.br +.BI " __le32 nsid;" +.br +.BI " __u8 smallest_fpi;" +.br +.BI " __u8 format_nvm_status;" +.br +.BI " __le16 compln_info;" +.br +.BI " __le32 status_field;" +.br +.BI " +}; +.br + +.SH Members +.IP "nsid" 12 +Namespace Identifier +.IP "smallest_fpi" 12 +Smallest Format Progress Indicator +.IP "format_nvm_status" 12 +Format NVM Status +.IP "compln_info" 12 +Completion Information +.IP "status_field" 12 +Status Field diff --git a/doc/man/nvme_format_nvm_start_event.2 b/doc/man/nvme_format_nvm_start_event.2 new file mode 100644 index 0000000..3916c1f --- /dev/null +++ b/doc/man/nvme_format_nvm_start_event.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_format_nvm_start_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_format_nvm_start_event \- Format NVM Start Event Data +.SH SYNOPSIS +struct nvme_format_nvm_start_event { +.br +.BI " __le32 nsid;" +.br +.BI " __u8 fna;" +.br +.BI " __u8 rsvd5[3];" +.br +.BI " __le32 format_nvm_cdw10;" +.br +.BI " +}; +.br + +.SH Members +.IP "nsid" 12 +Namespace Identifier +.IP "fna" 12 +Format NVM Attributes +.IP "rsvd5" 12 +Reserved +.IP "format_nvm_cdw10" 12 +Format NVM CDW10 diff --git a/doc/man/nvme_free_ctrl.2 b/doc/man/nvme_free_ctrl.2 new file mode 100644 index 0000000..e1eb037 --- /dev/null +++ b/doc/man/nvme_free_ctrl.2 @@ -0,0 +1,9 @@ +.TH "nvme_free_ctrl" 9 "nvme_free_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_free_ctrl \- Free controller +.SH SYNOPSIS +.B "void" nvme_free_ctrl +.BI "(struct nvme_ctrl *c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance diff --git a/doc/man/nvme_free_host.2 b/doc/man/nvme_free_host.2 new file mode 100644 index 0000000..b9e8f2f --- /dev/null +++ b/doc/man/nvme_free_host.2 @@ -0,0 +1,9 @@ +.TH "nvme_free_host" 9 "nvme_free_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_free_host \- Free nvme_host_t object +.SH SYNOPSIS +.B "void" nvme_free_host +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +nvme_host_t object diff --git a/doc/man/nvme_free_ns.2 b/doc/man/nvme_free_ns.2 new file mode 100644 index 0000000..4eda57f --- /dev/null +++ b/doc/man/nvme_free_ns.2 @@ -0,0 +1,9 @@ +.TH "nvme_free_ns" 9 "nvme_free_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_free_ns \- Free a namespace object +.SH SYNOPSIS +.B "void" nvme_free_ns +.BI "(struct nvme_ns *n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance diff --git a/doc/man/nvme_free_subsystem.2 b/doc/man/nvme_free_subsystem.2 new file mode 100644 index 0000000..2310b66 --- /dev/null +++ b/doc/man/nvme_free_subsystem.2 @@ -0,0 +1,11 @@ +.TH "nvme_free_subsystem" 9 "nvme_free_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_free_subsystem \- Free a subsystem +.SH SYNOPSIS +.B "void" nvme_free_subsystem +.BI "(struct nvme_subsystem *s " ");" +.SH ARGUMENTS +.IP "s" 12 +subsystem +.SH "DESCRIPTION" +Frees \fIs\fP and all related objects. diff --git a/doc/man/nvme_free_tree.2 b/doc/man/nvme_free_tree.2 new file mode 100644 index 0000000..cb8f359 --- /dev/null +++ b/doc/man/nvme_free_tree.2 @@ -0,0 +1,11 @@ +.TH "nvme_free_tree" 9 "nvme_free_tree" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_free_tree \- Free root object +.SH SYNOPSIS +.B "void" nvme_free_tree +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.SH "DESCRIPTION" +Free an \fInvme_root_t\fP object and all attached objects diff --git a/doc/man/nvme_fw_commit.2 b/doc/man/nvme_fw_commit.2 new file mode 100644 index 0000000..26ffeaa --- /dev/null +++ b/doc/man/nvme_fw_commit.2 @@ -0,0 +1,16 @@ +.TH "nvme_fw_commit" 9 "nvme_fw_commit" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_fw_commit \- Commit firmware using the specified action +.SH SYNOPSIS +.B "int" nvme_fw_commit +.BI "(struct nvme_fw_commit_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_fw_commit_args\fP argument structure +.SH "DESCRIPTION" +The Firmware Commit command modifies the firmware image or Boot Partitions. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. The command +status response may specify additional reset actions required to complete +the commit process. diff --git a/doc/man/nvme_fw_commit_ca.2 b/doc/man/nvme_fw_commit_ca.2 new file mode 100644 index 0000000..a93e72b --- /dev/null +++ b/doc/man/nvme_fw_commit_ca.2 @@ -0,0 +1,59 @@ +.TH "libnvme" 9 "enum nvme_fw_commit_ca" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_fw_commit_ca \- Firmware Commit - Commit Action +.SH SYNOPSIS +enum nvme_fw_commit_ca { +.br +.BI " NVME_FW_COMMIT_CA_REPLACE" +, +.br +.br +.BI " NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE" +, +.br +.br +.BI " NVME_FW_COMMIT_CA_SET_ACTIVE" +, +.br +.br +.BI " NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE_IMMEDIATE" +, +.br +.br +.BI " NVME_FW_COMMIT_CA_REPLACE_BOOT_PARTITION" +, +.br +.br +.BI " NVME_FW_COMMIT_CA_ACTIVATE_BOOT_PARTITION" + +}; +.SH Constants +.IP "NVME_FW_COMMIT_CA_REPLACE" 12 +Downloaded image replaces the existing +image, if any, in the specified Firmware +Slot. The newly placed image is not +activated. +.IP "NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE" 12 +Downloaded image replaces the existing +image, if any, in the specified Firmware +Slot. The newly placed image is activated +at the next Controller Level Reset. +.IP "NVME_FW_COMMIT_CA_SET_ACTIVE" 12 +The existing image in the specified +Firmware Slot is activated at the +next Controller Level Reset. +.IP "NVME_FW_COMMIT_CA_REPLACE_AND_ACTIVATE_IMMEDIATE" 12 +Downloaded image replaces the existing +image, if any, in the specified Firmware +Slot and is then activated immediately. +If there is not a newly downloaded image, +then the existing image in the specified +firmware slot is activated immediately. +.IP "NVME_FW_COMMIT_CA_REPLACE_BOOT_PARTITION" 12 +Downloaded image replaces the Boot +Partition specified by the Boot +Partition ID field. +.IP "NVME_FW_COMMIT_CA_ACTIVATE_BOOT_PARTITION" 12 +Mark the Boot Partition specified in +the BPID field as active and update +BPINFO.ABPID. diff --git a/doc/man/nvme_fw_commit_event.2 b/doc/man/nvme_fw_commit_event.2 new file mode 100644 index 0000000..6790ddf --- /dev/null +++ b/doc/man/nvme_fw_commit_event.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_fw_commit_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_fw_commit_event \- Firmware Commit Event Data +.SH SYNOPSIS +struct nvme_fw_commit_event { +.br +.BI " __le64 old_fw_rev;" +.br +.BI " __le64 new_fw_rev;" +.br +.BI " __u8 fw_commit_action;" +.br +.BI " __u8 fw_slot;" +.br +.BI " __u8 sct_fw;" +.br +.BI " __u8 sc_fw;" +.br +.BI " __le16 vndr_assign_fw_commit_rc;" +.br +.BI " +}; +.br + +.SH Members +.IP "old_fw_rev" 12 +Old Firmware Revision +.IP "new_fw_rev" 12 +New Firmware Revision +.IP "fw_commit_action" 12 +Firmware Commit Action +.IP "fw_slot" 12 +Firmware Slot +.IP "sct_fw" 12 +Status Code Type for Firmware Commit Command +.IP "sc_fw" 12 +Status Returned for Firmware Commit Command +.IP "vndr_assign_fw_commit_rc" 12 +Vendor Assigned Firmware Commit Result Code diff --git a/doc/man/nvme_fw_download.2 b/doc/man/nvme_fw_download.2 new file mode 100644 index 0000000..c021d31 --- /dev/null +++ b/doc/man/nvme_fw_download.2 @@ -0,0 +1,25 @@ +.TH "nvme_fw_download" 9 "nvme_fw_download" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_fw_download \- Download part or all of a firmware image to the controller +.SH SYNOPSIS +.B "int" nvme_fw_download +.BI "(struct nvme_fw_download_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_fw_download_args\fP argument structure +.SH "DESCRIPTION" +The Firmware Image Download command downloads all or a portion of an image +for a future update to the controller. The Firmware Image Download command +downloads a new image (in whole or in part) to the controller. + +The image may be constructed of multiple pieces that are individually +downloaded with separate Firmware Image Download commands. Each Firmware +Image Download command includes a Dword Offset and Number of Dwords that +specify a dword range. + +The new firmware image is not activated as part of the Firmware Image +Download command. Use the \fBnvme_fw_commit\fP to activate a newly downloaded +image. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_fw_download_seq.2 b/doc/man/nvme_fw_download_seq.2 new file mode 100644 index 0000000..c9b95fa --- /dev/null +++ b/doc/man/nvme_fw_download_seq.2 @@ -0,0 +1,24 @@ +.TH "nvme_fw_download_seq" 9 "nvme_fw_download_seq" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_fw_download_seq \- Firmware download sequence +.SH SYNOPSIS +.B "int" nvme_fw_download_seq +.BI "(int fd " "," +.BI "__u32 size " "," +.BI "__u32 xfer " "," +.BI "__u32 offset " "," +.BI "void *buf " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "size" 12 +Total size of the firmware image to transfer +.IP "xfer" 12 +Maximum size to send with each partial transfer +.IP "offset" 12 +Starting offset to send with this firmware download +.IP "buf" 12 +Address of buffer containing all or part of the firmware image. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_gen_dhchap_key.2 b/doc/man/nvme_gen_dhchap_key.2 new file mode 100644 index 0000000..7035019 --- /dev/null +++ b/doc/man/nvme_gen_dhchap_key.2 @@ -0,0 +1,24 @@ +.TH "nvme_gen_dhchap_key" 9 "nvme_gen_dhchap_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_gen_dhchap_key \- DH-HMAC-CHAP key generation +.SH SYNOPSIS +.B "int" nvme_gen_dhchap_key +.BI "(char *hostnqn " "," +.BI "enum nvme_hmac_alg hmac " "," +.BI "unsigned int key_len " "," +.BI "unsigned char *secret " "," +.BI "unsigned char *key " ");" +.SH ARGUMENTS +.IP "hostnqn" 12 +Host NVMe Qualified Name +.IP "hmac" 12 +HMAC algorithm +.IP "key_len" 12 +Output key length +.IP "secret" 12 +Secret to used for digest +.IP "key" 12 +Generated DH-HMAC-CHAP key +.SH "RETURN" +If key generation was successful the function returns 0 or +-1 with errno set otherwise. diff --git a/doc/man/nvme_get_ana_log_len.2 b/doc/man/nvme_get_ana_log_len.2 new file mode 100644 index 0000000..1e1b0da --- /dev/null +++ b/doc/man/nvme_get_ana_log_len.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_ana_log_len" 9 "nvme_get_ana_log_len" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_ana_log_len \- Retrieve size of the current ANA log +.SH SYNOPSIS +.B "int" nvme_get_ana_log_len +.BI "(int fd " "," +.BI "size_t *analen " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "analen" 12 +Pointer to where the length will be set on success +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_attr.2 b/doc/man/nvme_get_attr.2 new file mode 100644 index 0000000..058e372 --- /dev/null +++ b/doc/man/nvme_get_attr.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_attr" 9 "nvme_get_attr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_attr \- Read sysfs attribute +.SH SYNOPSIS +.B "char *" nvme_get_attr +.BI "(const char *d " "," +.BI "const char *attr " ");" +.SH ARGUMENTS +.IP "d" 12 +sysfs directory +.IP "attr" 12 +sysfs attribute name +.SH "RETURN" +String with the contents of \fIattr\fP or NULL in case of an empty value +or in case of an error (indicated by non-zero errno code). diff --git a/doc/man/nvme_get_ctrl_attr.2 b/doc/man/nvme_get_ctrl_attr.2 new file mode 100644 index 0000000..622fa5f --- /dev/null +++ b/doc/man/nvme_get_ctrl_attr.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_ctrl_attr" 9 "nvme_get_ctrl_attr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_ctrl_attr \- Read controller sysfs attribute +.SH SYNOPSIS +.B "char *" nvme_get_ctrl_attr +.BI "(nvme_ctrl_t c " "," +.BI "const char *attr " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "attr" 12 +sysfs attribute name +.SH "RETURN" +String with the contents of \fIattr\fP or NULL in case of an empty value +or in case of an error (indicated by non-zero errno code). diff --git a/doc/man/nvme_get_ctrl_telemetry.2 b/doc/man/nvme_get_ctrl_telemetry.2 new file mode 100644 index 0000000..79d55d6 --- /dev/null +++ b/doc/man/nvme_get_ctrl_telemetry.2 @@ -0,0 +1,27 @@ +.TH "nvme_get_ctrl_telemetry" 9 "nvme_get_ctrl_telemetry" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_ctrl_telemetry \- Get controller telemetry log +.SH SYNOPSIS +.B "int" nvme_get_ctrl_telemetry +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_telemetry_log **log " "," +.BI "enum nvme_telemetry_da da " "," +.BI "size_t *size " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +On success, set to the value of the allocated and retrieved log. +.IP "da" 12 +Log page data area, valid values: \fIenum nvme_telemetry_da\fP +.IP "size" 12 +Ptr to the telemetry log size, so it can be returned +.SH "DESCRIPTION" +The total size allocated can be calculated as: +(nvme_telemetry_log da size + 1) * NVME_LOG_TELEM_BLOCK_SIZE. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_directive_receive_length.2 b/doc/man/nvme_get_directive_receive_length.2 new file mode 100644 index 0000000..729b1de --- /dev/null +++ b/doc/man/nvme_get_directive_receive_length.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_directive_receive_length" 9 "nvme_get_directive_receive_length" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_directive_receive_length \- Get directive receive length +.SH SYNOPSIS +.B "int" nvme_get_directive_receive_length +.BI "(enum nvme_directive_dtype dtype " "," +.BI "enum nvme_directive_receive_doper doper " "," +.BI "__u32 *len " ");" +.SH ARGUMENTS +.IP "dtype" 12 +Directive type, see \fIenum nvme_directive_dtype\fP +.IP "doper" 12 +Directive receive operation, see \fIenum nvme_directive_receive_doper\fP +.IP "len" 12 +On success, set to this directives payload length in bytes. +.SH "RETURN" +0 on success, -1 with errno set to EINVAL if the function did not +recognize \fIdtype\fP or \fIdoper\fP. diff --git a/doc/man/nvme_get_discovery_args.2 b/doc/man/nvme_get_discovery_args.2 new file mode 100644 index 0000000..6f83ded --- /dev/null +++ b/doc/man/nvme_get_discovery_args.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_get_discovery_args" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_get_discovery_args \- Arguments for nvmf_get_discovery_wargs() +.SH SYNOPSIS +struct nvme_get_discovery_args { +.br +.BI " nvme_ctrl_t c;" +.br +.BI " int args_size;" +.br +.BI " int max_retries;" +.br +.BI " __u32 *result;" +.br +.BI " __u32 timeout;" +.br +.BI " __u8 lsp;" +.br +.BI " +}; +.br + +.SH Members +.IP "c" 12 +Discovery controller +.IP "args_size" 12 +Length of the structure +.IP "max_retries" 12 +Number of retries in case of failure +.IP "result" 12 +The command completion result from CQE dword0 +.IP "timeout" 12 +Timeout in ms (default: NVME_DEFAULT_IOCTL_TIMEOUT) +.IP "lsp" 12 +Log specific field (See enum nvmf_log_discovery_lsp) diff --git a/doc/man/nvme_get_feature_length.2 b/doc/man/nvme_get_feature_length.2 new file mode 100644 index 0000000..50dd008 --- /dev/null +++ b/doc/man/nvme_get_feature_length.2 @@ -0,0 +1,19 @@ +.TH "nvme_get_feature_length" 9 "nvme_get_feature_length" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_feature_length \- Retreive the command payload length for a specific feature identifier +.SH SYNOPSIS +.B "int" nvme_get_feature_length +.BI "(int fid " "," +.BI "__u32 cdw11 " "," +.BI "__u32 *len " ");" +.SH ARGUMENTS +.IP "fid" 12 +Feature identifier, see \fIenum nvme_features_id\fP. +.IP "cdw11" 12 +The cdw11 value may affect the transfer (only known fid is +NVME_FEAT_FID_HOST_ID) +.IP "len" 12 +On success, set to this features payload length in bytes. +.SH "RETURN" +0 on success, -1 with errno set to EINVAL if the function did not +recognize \fIfid\fP. diff --git a/doc/man/nvme_get_feature_length2.2 b/doc/man/nvme_get_feature_length2.2 new file mode 100644 index 0000000..41bd0f2 --- /dev/null +++ b/doc/man/nvme_get_feature_length2.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_feature_length2" 9 "nvme_get_feature_length2" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_feature_length2 \- Retreive the command payload length for a specific feature identifier +.SH SYNOPSIS +.B "int" nvme_get_feature_length2 +.BI "(int fid " "," +.BI "__u32 cdw11 " "," +.BI "enum nvme_data_tfr dir " "," +.BI "__u32 *len " ");" +.SH ARGUMENTS +.IP "fid" 12 +Feature identifier, see \fIenum nvme_features_id\fP. +.IP "cdw11" 12 +The cdw11 value may affect the transfer (only known fid is +NVME_FEAT_FID_HOST_ID) +.IP "dir" 12 +Data transfer direction: false - host to controller, true - +controller to host may affect the transfer (only known fid is +NVME_FEAT_FID_HOST_MEM_BUF). +.IP "len" 12 +On success, set to this features payload length in bytes. +.SH "RETURN" +0 on success, -1 with errno set to EINVAL if the function did not +recognize \fIfid\fP. diff --git a/doc/man/nvme_get_features.2 b/doc/man/nvme_get_features.2 new file mode 100644 index 0000000..33c0a8f --- /dev/null +++ b/doc/man/nvme_get_features.2 @@ -0,0 +1,12 @@ +.TH "nvme_get_features" 9 "nvme_get_features" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features \- Retrieve a feature attribute +.SH SYNOPSIS +.B "int" nvme_get_features +.BI "(struct nvme_get_features_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_get_features_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_arbitration.2 b/doc/man/nvme_get_features_arbitration.2 new file mode 100644 index 0000000..4a51848 --- /dev/null +++ b/doc/man/nvme_get_features_arbitration.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_arbitration" 9 "nvme_get_features_arbitration" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_arbitration \- Get arbitration feature +.SH SYNOPSIS +.B "int" nvme_get_features_arbitration +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_async_event.2 b/doc/man/nvme_get_features_async_event.2 new file mode 100644 index 0000000..2fb73f4 --- /dev/null +++ b/doc/man/nvme_get_features_async_event.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_async_event" 9 "nvme_get_features_async_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_async_event \- Get asynchronous event feature +.SH SYNOPSIS +.B "int" nvme_get_features_async_event +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_auto_pst.2 b/doc/man/nvme_get_features_auto_pst.2 new file mode 100644 index 0000000..fa3a947 --- /dev/null +++ b/doc/man/nvme_get_features_auto_pst.2 @@ -0,0 +1,20 @@ +.TH "nvme_get_features_auto_pst" 9 "nvme_get_features_auto_pst" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_auto_pst \- Get autonomous power state feature +.SH SYNOPSIS +.B "int" nvme_get_features_auto_pst +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "struct nvme_feat_auto_pst *apst " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "apst" 12 +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_data.2 b/doc/man/nvme_get_features_data.2 new file mode 100644 index 0000000..b1a8604 --- /dev/null +++ b/doc/man/nvme_get_features_data.2 @@ -0,0 +1,27 @@ +.TH "nvme_get_features_data" 9 "nvme_get_features_data" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_data \- Helper function for @nvme_get_features() +.SH SYNOPSIS +.B "int" nvme_get_features_data +.BI "(int fd " "," +.BI "enum nvme_features_id fid " "," +.BI "__u32 nsid " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "fid" 12 +Feature identifier +.IP "nsid" 12 +Namespace ID, if applicable +.IP "data_len" 12 +Length of feature data, if applicable, in bytes +.IP "data" 12 +User address of feature data, if applicable +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_endurance_event_cfg.2 b/doc/man/nvme_get_features_endurance_event_cfg.2 new file mode 100644 index 0000000..2b4715e --- /dev/null +++ b/doc/man/nvme_get_features_endurance_event_cfg.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_endurance_event_cfg" 9 "nvme_get_features_endurance_event_cfg" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_endurance_event_cfg \- Get endurance event config feature +.SH SYNOPSIS +.B "int" nvme_get_features_endurance_event_cfg +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u16 endgid " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "endgid" 12 +Endurance Group Identifier +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_err_recovery.2 b/doc/man/nvme_get_features_err_recovery.2 new file mode 100644 index 0000000..c8962ed --- /dev/null +++ b/doc/man/nvme_get_features_err_recovery.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_err_recovery" 9 "nvme_get_features_err_recovery" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_err_recovery \- Get error recovery feature +.SH SYNOPSIS +.B "int" nvme_get_features_err_recovery +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_hctm.2 b/doc/man/nvme_get_features_hctm.2 new file mode 100644 index 0000000..c205318 --- /dev/null +++ b/doc/man/nvme_get_features_hctm.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_hctm" 9 "nvme_get_features_hctm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_hctm \- Get thermal management feature +.SH SYNOPSIS +.B "int" nvme_get_features_hctm +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_host_behavior.2 b/doc/man/nvme_get_features_host_behavior.2 new file mode 100644 index 0000000..800211d --- /dev/null +++ b/doc/man/nvme_get_features_host_behavior.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_host_behavior" 9 "nvme_get_features_host_behavior" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_host_behavior \- Get host behavior feature +.SH SYNOPSIS +.B "int" nvme_get_features_host_behavior +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "struct nvme_feat_host_behavior *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "data" 12 +Pointer to structure nvme_feat_host_behavior +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_host_id.2 b/doc/man/nvme_get_features_host_id.2 new file mode 100644 index 0000000..4ee0ca8 --- /dev/null +++ b/doc/man/nvme_get_features_host_id.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_features_host_id" 9 "nvme_get_features_host_id" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_host_id \- Get host id feature +.SH SYNOPSIS +.B "int" nvme_get_features_host_id +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "bool exhid " "," +.BI "__u32 len " "," +.BI "__u8 *hostid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "exhid" 12 +Enable Extended Host Identifier +.IP "len" 12 +Length of \fIhostid\fP +.IP "hostid" 12 +Buffer for returned host ID +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_host_mem_buf.2 b/doc/man/nvme_get_features_host_mem_buf.2 new file mode 100644 index 0000000..5c3766b --- /dev/null +++ b/doc/man/nvme_get_features_host_mem_buf.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_host_mem_buf" 9 "nvme_get_features_host_mem_buf" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_host_mem_buf \- Get host memory buffer feature +.SH SYNOPSIS +.B "int" nvme_get_features_host_mem_buf +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_iocs_profile.2 b/doc/man/nvme_get_features_iocs_profile.2 new file mode 100644 index 0000000..2fcde5f --- /dev/null +++ b/doc/man/nvme_get_features_iocs_profile.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_iocs_profile" 9 "nvme_get_features_iocs_profile" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_iocs_profile \- Get IOCS profile feature +.SH SYNOPSIS +.B "int" nvme_get_features_iocs_profile +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_irq_coalesce.2 b/doc/man/nvme_get_features_irq_coalesce.2 new file mode 100644 index 0000000..c2b54dd --- /dev/null +++ b/doc/man/nvme_get_features_irq_coalesce.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_irq_coalesce" 9 "nvme_get_features_irq_coalesce" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_irq_coalesce \- Get IRQ coalesce feature +.SH SYNOPSIS +.B "int" nvme_get_features_irq_coalesce +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_irq_config.2 b/doc/man/nvme_get_features_irq_config.2 new file mode 100644 index 0000000..1467d67 --- /dev/null +++ b/doc/man/nvme_get_features_irq_config.2 @@ -0,0 +1,20 @@ +.TH "nvme_get_features_irq_config" 9 "nvme_get_features_irq_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_irq_config \- Get IRQ config feature +.SH SYNOPSIS +.B "int" nvme_get_features_irq_config +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u16 iv " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "iv" 12 +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_kato.2 b/doc/man/nvme_get_features_kato.2 new file mode 100644 index 0000000..464ea62 --- /dev/null +++ b/doc/man/nvme_get_features_kato.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_kato" 9 "nvme_get_features_kato" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_kato \- Get keep alive timeout feature +.SH SYNOPSIS +.B "int" nvme_get_features_kato +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_lba_range.2 b/doc/man/nvme_get_features_lba_range.2 new file mode 100644 index 0000000..19af419 --- /dev/null +++ b/doc/man/nvme_get_features_lba_range.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_lba_range" 9 "nvme_get_features_lba_range" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_lba_range \- Get LBA range feature +.SH SYNOPSIS +.B "int" nvme_get_features_lba_range +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "struct nvme_lba_range_type *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "data" 12 +User address of feature data, if applicable +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_lba_sts_interval.2 b/doc/man/nvme_get_features_lba_sts_interval.2 new file mode 100644 index 0000000..d06b19b --- /dev/null +++ b/doc/man/nvme_get_features_lba_sts_interval.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_lba_sts_interval" 9 "nvme_get_features_lba_sts_interval" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_lba_sts_interval \- Get LBA status information feature +.SH SYNOPSIS +.B "int" nvme_get_features_lba_sts_interval +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_nopsc.2 b/doc/man/nvme_get_features_nopsc.2 new file mode 100644 index 0000000..8c1e396 --- /dev/null +++ b/doc/man/nvme_get_features_nopsc.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_nopsc" 9 "nvme_get_features_nopsc" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_nopsc \- Get non-operational power state feature +.SH SYNOPSIS +.B "int" nvme_get_features_nopsc +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_num_queues.2 b/doc/man/nvme_get_features_num_queues.2 new file mode 100644 index 0000000..bda5239 --- /dev/null +++ b/doc/man/nvme_get_features_num_queues.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_num_queues" 9 "nvme_get_features_num_queues" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_num_queues \- Get number of queues feature +.SH SYNOPSIS +.B "int" nvme_get_features_num_queues +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_plm_config.2 b/doc/man/nvme_get_features_plm_config.2 new file mode 100644 index 0000000..d04f793 --- /dev/null +++ b/doc/man/nvme_get_features_plm_config.2 @@ -0,0 +1,23 @@ +.TH "nvme_get_features_plm_config" 9 "nvme_get_features_plm_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_plm_config \- Get predictable latency feature +.SH SYNOPSIS +.B "int" nvme_get_features_plm_config +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u16 nvmsetid " "," +.BI "struct nvme_plm_config *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "nvmsetid" 12 +NVM set id +.IP "data" 12 +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_plm_window.2 b/doc/man/nvme_get_features_plm_window.2 new file mode 100644 index 0000000..454617c --- /dev/null +++ b/doc/man/nvme_get_features_plm_window.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_plm_window" 9 "nvme_get_features_plm_window" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_plm_window \- Get window select feature +.SH SYNOPSIS +.B "int" nvme_get_features_plm_window +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u16 nvmsetid " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "nvmsetid" 12 +NVM set id +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_power_mgmt.2 b/doc/man/nvme_get_features_power_mgmt.2 new file mode 100644 index 0000000..3155068 --- /dev/null +++ b/doc/man/nvme_get_features_power_mgmt.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_power_mgmt" 9 "nvme_get_features_power_mgmt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_power_mgmt \- Get power management feature +.SH SYNOPSIS +.B "int" nvme_get_features_power_mgmt +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_resv_mask.2 b/doc/man/nvme_get_features_resv_mask.2 new file mode 100644 index 0000000..e02f80a --- /dev/null +++ b/doc/man/nvme_get_features_resv_mask.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_resv_mask" 9 "nvme_get_features_resv_mask" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_resv_mask \- Get reservation mask feature +.SH SYNOPSIS +.B "int" nvme_get_features_resv_mask +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_resv_persist.2 b/doc/man/nvme_get_features_resv_persist.2 new file mode 100644 index 0000000..4e83fa7 --- /dev/null +++ b/doc/man/nvme_get_features_resv_persist.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_resv_persist" 9 "nvme_get_features_resv_persist" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_resv_persist \- Get reservation persist feature +.SH SYNOPSIS +.B "int" nvme_get_features_resv_persist +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_rrl.2 b/doc/man/nvme_get_features_rrl.2 new file mode 100644 index 0000000..069de9e --- /dev/null +++ b/doc/man/nvme_get_features_rrl.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_rrl" 9 "nvme_get_features_rrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_rrl \- Get read recovery level feature +.SH SYNOPSIS +.B "int" nvme_get_features_rrl +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_sanitize.2 b/doc/man/nvme_get_features_sanitize.2 new file mode 100644 index 0000000..03a4a21 --- /dev/null +++ b/doc/man/nvme_get_features_sanitize.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_sanitize" 9 "nvme_get_features_sanitize" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_sanitize \- Get sanitize feature +.SH SYNOPSIS +.B "int" nvme_get_features_sanitize +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_sel.2 b/doc/man/nvme_get_features_sel.2 new file mode 100644 index 0000000..1b40475 --- /dev/null +++ b/doc/man/nvme_get_features_sel.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_get_features_sel" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_get_features_sel \- Get Features - Select +.SH SYNOPSIS +enum nvme_get_features_sel { +.br +.BI " NVME_GET_FEATURES_SEL_CURRENT" +, +.br +.br +.BI " NVME_GET_FEATURES_SEL_DEFAULT" +, +.br +.br +.BI " NVME_GET_FEATURES_SEL_SAVED" +, +.br +.br +.BI " NVME_GET_FEATURES_SEL_SUPPORTED" + +}; +.SH Constants +.IP "NVME_GET_FEATURES_SEL_CURRENT" 12 +Current value +.IP "NVME_GET_FEATURES_SEL_DEFAULT" 12 +Default value +.IP "NVME_GET_FEATURES_SEL_SAVED" 12 +Saved value +.IP "NVME_GET_FEATURES_SEL_SUPPORTED" 12 +Supported capabilities diff --git a/doc/man/nvme_get_features_simple.2 b/doc/man/nvme_get_features_simple.2 new file mode 100644 index 0000000..6347ea7 --- /dev/null +++ b/doc/man/nvme_get_features_simple.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_simple" 9 "nvme_get_features_simple" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_simple \- Helper function for @nvme_get_features() +.SH SYNOPSIS +.B "int" nvme_get_features_simple +.BI "(int fd " "," +.BI "enum nvme_features_id fid " "," +.BI "__u32 nsid " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "fid" 12 +Feature identifier +.IP "nsid" 12 +Namespace ID, if applicable +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_sw_progress.2 b/doc/man/nvme_get_features_sw_progress.2 new file mode 100644 index 0000000..2f3aaef --- /dev/null +++ b/doc/man/nvme_get_features_sw_progress.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_sw_progress" 9 "nvme_get_features_sw_progress" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_sw_progress \- Get software progress feature +.SH SYNOPSIS +.B "int" nvme_get_features_sw_progress +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_temp_thresh.2 b/doc/man/nvme_get_features_temp_thresh.2 new file mode 100644 index 0000000..20da00f --- /dev/null +++ b/doc/man/nvme_get_features_temp_thresh.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_temp_thresh" 9 "nvme_get_features_temp_thresh" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_temp_thresh \- Get temperature threshold feature +.SH SYNOPSIS +.B "int" nvme_get_features_temp_thresh +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_timestamp.2 b/doc/man/nvme_get_features_timestamp.2 new file mode 100644 index 0000000..f0e3ed9 --- /dev/null +++ b/doc/man/nvme_get_features_timestamp.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_timestamp" 9 "nvme_get_features_timestamp" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_timestamp \- Get timestamp feature +.SH SYNOPSIS +.B "int" nvme_get_features_timestamp +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "struct nvme_timestamp *ts " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "ts" 12 +Current timestamp +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_volatile_wc.2 b/doc/man/nvme_get_features_volatile_wc.2 new file mode 100644 index 0000000..6c366c9 --- /dev/null +++ b/doc/man/nvme_get_features_volatile_wc.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_volatile_wc" 9 "nvme_get_features_volatile_wc" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_volatile_wc \- Get volatile write cache feature +.SH SYNOPSIS +.B "int" nvme_get_features_volatile_wc +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_write_atomic.2 b/doc/man/nvme_get_features_write_atomic.2 new file mode 100644 index 0000000..5a517da --- /dev/null +++ b/doc/man/nvme_get_features_write_atomic.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_features_write_atomic" 9 "nvme_get_features_write_atomic" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_write_atomic \- Get write atomic feature +.SH SYNOPSIS +.B "int" nvme_get_features_write_atomic +.BI "(int fd " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_features_write_protect.2 b/doc/man/nvme_get_features_write_protect.2 new file mode 100644 index 0000000..cd1da22 --- /dev/null +++ b/doc/man/nvme_get_features_write_protect.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_features_write_protect" 9 "nvme_get_features_write_protect" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_features_write_protect \- Get write protect feature +.SH SYNOPSIS +.B "int" nvme_get_features_write_protect +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "enum nvme_get_features_sel sel " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "sel" 12 +Select which type of attribute to return, see \fIenum nvme_get_features_sel\fP +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_host_telemetry.2 b/doc/man/nvme_get_host_telemetry.2 new file mode 100644 index 0000000..5355a3c --- /dev/null +++ b/doc/man/nvme_get_host_telemetry.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_host_telemetry" 9 "nvme_get_host_telemetry" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_host_telemetry \- Get host telemetry log +.SH SYNOPSIS +.B "int" nvme_get_host_telemetry +.BI "(int fd " "," +.BI "struct nvme_telemetry_log **log " "," +.BI "enum nvme_telemetry_da da " "," +.BI "size_t *size " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "log" 12 +On success, set to the value of the allocated and retrieved log. +.IP "da" 12 +Log page data area, valid values: \fIenum nvme_telemetry_da\fP +.IP "size" 12 +Ptr to the telemetry log size, so it can be returned +.SH "DESCRIPTION" +The total size allocated can be calculated as: +(nvme_telemetry_log da size + 1) * NVME_LOG_TELEM_BLOCK_SIZE. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_lba_status.2 b/doc/man/nvme_get_lba_status.2 new file mode 100644 index 0000000..02a9dd3 --- /dev/null +++ b/doc/man/nvme_get_lba_status.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_lba_status" 9 "nvme_get_lba_status" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_lba_status \- Retrieve information on possibly unrecoverable LBAs +.SH SYNOPSIS +.B "int" nvme_get_lba_status +.BI "(struct nvme_get_lba_status_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_get_lba_status_args\fP argument structure +.SH "DESCRIPTION" +The Get LBA Status command requests information about Potentially +Unrecoverable LBAs. Refer to the specification for action type descriptions. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_lba_status_log.2 b/doc/man/nvme_get_lba_status_log.2 new file mode 100644 index 0000000..79fd0ee --- /dev/null +++ b/doc/man/nvme_get_lba_status_log.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_lba_status_log" 9 "nvme_get_lba_status_log" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_lba_status_log \- Retrieve the LBA Status log page +.SH SYNOPSIS +.B "int" nvme_get_lba_status_log +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_lba_status_log **log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of the nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +On success, set to the value of the allocated and retrieved log. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log.2 b/doc/man/nvme_get_log.2 new file mode 100644 index 0000000..6c33516 --- /dev/null +++ b/doc/man/nvme_get_log.2 @@ -0,0 +1,12 @@ +.TH "nvme_get_log" 9 "nvme_get_log" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log \- NVMe Admin Get Log command +.SH SYNOPSIS +.B "int" nvme_get_log +.BI "(struct nvme_get_log_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_get_log_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_ana.2 b/doc/man/nvme_get_log_ana.2 new file mode 100644 index 0000000..6822ff3 --- /dev/null +++ b/doc/man/nvme_get_log_ana.2 @@ -0,0 +1,33 @@ +.TH "nvme_get_log_ana" 9 "nvme_get_log_ana" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_ana \- Retrieve Asymmetric Namespace Access log page +.SH SYNOPSIS +.B "int" nvme_get_log_ana +.BI "(int fd " "," +.BI "enum nvme_log_ana_lsp lsp " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "lsp" 12 +Log specific, see \fIenum nvme_get_log_ana_lsp\fP +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the ana log +.SH "DESCRIPTION" +This log consists of a header describing the log and descriptors containing +the asymmetric namespace access information for ANA Groups that contain +namespaces that are attached to the controller processing the command. + +See \fIstruct nvme_ana_rsp_hdr\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_ana_groups.2 b/doc/man/nvme_get_log_ana_groups.2 new file mode 100644 index 0000000..466d7e4 --- /dev/null +++ b/doc/man/nvme_get_log_ana_groups.2 @@ -0,0 +1,23 @@ +.TH "nvme_get_log_ana_groups" 9 "nvme_get_log_ana_groups" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_ana_groups \- Retrieve Asymmetric Namespace Access groups only log page +.SH SYNOPSIS +.B "int" nvme_get_log_ana_groups +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u32 len " "," +.BI "struct nvme_ana_group_desc *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the ana group log +.SH "DESCRIPTION" +See \fIstruct nvme_ana_group_desc\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_boot_partition.2 b/doc/man/nvme_get_log_boot_partition.2 new file mode 100644 index 0000000..a649316 --- /dev/null +++ b/doc/man/nvme_get_log_boot_partition.2 @@ -0,0 +1,25 @@ +.TH "nvme_get_log_boot_partition" 9 "nvme_get_log_boot_partition" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_boot_partition \- Retrieve Boot Partition +.SH SYNOPSIS +.B "int" nvme_get_log_boot_partition +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u8 lsp " "," +.BI "__u32 len " "," +.BI "struct nvme_boot_partition *part " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "lsp" 12 +The log specified field of LID +.IP "len" 12 +The allocated size, minimum +struct nvme_boot_partition +.IP "part" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_changed_ns_list.2 b/doc/man/nvme_get_log_changed_ns_list.2 new file mode 100644 index 0000000..2f93f0d --- /dev/null +++ b/doc/man/nvme_get_log_changed_ns_list.2 @@ -0,0 +1,22 @@ +.TH "nvme_get_log_changed_ns_list" 9 "nvme_get_log_changed_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_changed_ns_list \- Retrieve namespace changed list +.SH SYNOPSIS +.B "int" nvme_get_log_changed_ns_list +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_ns_list *ns_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "ns_log" 12 +User address to store the log page +.SH "DESCRIPTION" +This log page describes namespaces attached to this controller that have +changed since the last time the namespace was identified, been added, or +deleted. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_cmd_effects.2 b/doc/man/nvme_get_log_cmd_effects.2 new file mode 100644 index 0000000..7045413 --- /dev/null +++ b/doc/man/nvme_get_log_cmd_effects.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_cmd_effects" 9 "nvme_get_log_cmd_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_cmd_effects \- Retrieve nvme command effects log +.SH SYNOPSIS +.B "int" nvme_get_log_cmd_effects +.BI "(int fd " "," +.BI "enum nvme_csi csi " "," +.BI "struct nvme_cmd_effects_log *effects_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "csi" 12 +Command Set Identifier +.IP "effects_log" 12 +User address to store the effects log +.SH "DESCRIPTION" +This log page describes the commands that the controller supports and the +effects of those commands on the state of the NVM subsystem. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_create_telemetry_host.2 b/doc/man/nvme_get_log_create_telemetry_host.2 new file mode 100644 index 0000000..4eca320 --- /dev/null +++ b/doc/man/nvme_get_log_create_telemetry_host.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_log_create_telemetry_host" 9 "nvme_get_log_create_telemetry_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_create_telemetry_host \- Create host telemetry log +.SH SYNOPSIS +.B "int" nvme_get_log_create_telemetry_host +.BI "(int fd " "," +.BI "struct nvme_telemetry_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "log" 12 +Userspace address of the log payload +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_device_self_test.2 b/doc/man/nvme_get_log_device_self_test.2 new file mode 100644 index 0000000..9447e7e --- /dev/null +++ b/doc/man/nvme_get_log_device_self_test.2 @@ -0,0 +1,19 @@ +.TH "nvme_get_log_device_self_test" 9 "nvme_get_log_device_self_test" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_device_self_test \- Retrieve the device self test log +.SH SYNOPSIS +.B "int" nvme_get_log_device_self_test +.BI "(int fd " "," +.BI "struct nvme_self_test_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "log" 12 +Userspace address of the log payload +.SH "DESCRIPTION" +The log page indicates the status of an in progress self test and the +percent complete of that operation, and the results of the previous 20 +self-test operations. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_discovery.2 b/doc/man/nvme_get_log_discovery.2 new file mode 100644 index 0000000..4fd1409 --- /dev/null +++ b/doc/man/nvme_get_log_discovery.2 @@ -0,0 +1,27 @@ +.TH "nvme_get_log_discovery" 9 "nvme_get_log_discovery" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_discovery \- Retrieve Discovery log page +.SH SYNOPSIS +.B "int" nvme_get_log_discovery +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset of this log to retrieve +.IP "len" 12 +The allocated size for this portion of the log +.IP "log" 12 +User address to store the discovery log +.SH "DESCRIPTION" +Supported only by fabrics discovery controllers, returning discovery +records. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_endurance_group.2 b/doc/man/nvme_get_log_endurance_group.2 new file mode 100644 index 0000000..91b596e --- /dev/null +++ b/doc/man/nvme_get_log_endurance_group.2 @@ -0,0 +1,25 @@ +.TH "nvme_get_log_endurance_group" 9 "nvme_get_log_endurance_group" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_endurance_group \- Get Endurance Group log +.SH SYNOPSIS +.B "int" nvme_get_log_endurance_group +.BI "(int fd " "," +.BI "__u16 endgid " "," +.BI "struct nvme_endurance_group_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "endgid" 12 +Starting group identifier to return in the list +.IP "log" 12 +User address to store the endurance log +.SH "DESCRIPTION" +This log page indicates if an Endurance Group Event has occurred for a +particular Endurance Group. If an Endurance Group Event has occurred, the +details of the particular event are included in the Endurance Group +Information log page for that Endurance Group. An asynchronous event is +generated when an entry for an Endurance Group is newly added to this log +page. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_endurance_grp_evt.2 b/doc/man/nvme_get_log_endurance_grp_evt.2 new file mode 100644 index 0000000..fbb4910 --- /dev/null +++ b/doc/man/nvme_get_log_endurance_grp_evt.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_log_endurance_grp_evt" 9 "nvme_get_log_endurance_grp_evt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_endurance_grp_evt \- Retrieve Rotational Media Information +.SH SYNOPSIS +.B "int" nvme_get_log_endurance_grp_evt +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_error.2 b/doc/man/nvme_get_log_error.2 new file mode 100644 index 0000000..48c1bc1 --- /dev/null +++ b/doc/man/nvme_get_log_error.2 @@ -0,0 +1,25 @@ +.TH "nvme_get_log_error" 9 "nvme_get_log_error" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_error \- Retrieve nvme error log +.SH SYNOPSIS +.B "int" nvme_get_log_error +.BI "(int fd " "," +.BI "unsigned int nr_entries " "," +.BI "bool rae " "," +.BI "struct nvme_error_log_page *err_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nr_entries" 12 +Number of error log entries allocated +.IP "rae" 12 +Retain asynchronous events +.IP "err_log" 12 +Array of error logs of size 'entries' +.SH "DESCRIPTION" +This log page describes extended error information for a command that +completed with error, or may report an error that is not specific to a +particular command. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_fdp_configurations.2 b/doc/man/nvme_get_log_fdp_configurations.2 new file mode 100644 index 0000000..71c0b5f --- /dev/null +++ b/doc/man/nvme_get_log_fdp_configurations.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_fdp_configurations" 9 "nvme_get_log_fdp_configurations" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_fdp_configurations \- Get list of Flexible Data Placement configurations +.SH SYNOPSIS +.B "int" nvme_get_log_fdp_configurations +.BI "(int fd " "," +.BI "__u16 egid " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "egid" 12 +Endurance group identifier +.IP "offset" 12 +Offset into log page +.IP "len" 12 +Length (in bytes) of provided user buffer to hold the log data +.IP "log" 12 +Log page data buffer diff --git a/doc/man/nvme_get_log_fdp_events.2 b/doc/man/nvme_get_log_fdp_events.2 new file mode 100644 index 0000000..a5613f4 --- /dev/null +++ b/doc/man/nvme_get_log_fdp_events.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_log_fdp_events" 9 "nvme_get_log_fdp_events" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_fdp_events \- Get Flexible Data Placement events +.SH SYNOPSIS +.B "int" nvme_get_log_fdp_events +.BI "(int fd " "," +.BI "__u16 egid " "," +.BI "bool host_events " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "egid" 12 +Endurance group identifier +.IP "host_events" 12 +Whether to report host or controller events +.IP "offset" 12 +Offset into log page +.IP "len" 12 +Length (in bytes) of provided user buffer to hold the log data +.IP "log" 12 +Log page data buffer diff --git a/doc/man/nvme_get_log_fdp_stats.2 b/doc/man/nvme_get_log_fdp_stats.2 new file mode 100644 index 0000000..adcd781 --- /dev/null +++ b/doc/man/nvme_get_log_fdp_stats.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_fdp_stats" 9 "nvme_get_log_fdp_stats" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_fdp_stats \- Get Flexible Data Placement statistics +.SH SYNOPSIS +.B "int" nvme_get_log_fdp_stats +.BI "(int fd " "," +.BI "__u16 egid " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "egid" 12 +Endurance group identifier +.IP "offset" 12 +Offset into log page +.IP "len" 12 +Length (in bytes) of provided user buffer to hold the log data +.IP "log" 12 +Log page data buffer diff --git a/doc/man/nvme_get_log_fid_supported_effects.2 b/doc/man/nvme_get_log_fid_supported_effects.2 new file mode 100644 index 0000000..0b7541c --- /dev/null +++ b/doc/man/nvme_get_log_fid_supported_effects.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_fid_supported_effects" 9 "nvme_get_log_fid_supported_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_fid_supported_effects \- Retrieve Feature Identifiers Supported and Effects +.SH SYNOPSIS +.B "int" nvme_get_log_fid_supported_effects +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_fid_supported_effects_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +FID Supported and Effects data structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_fw_slot.2 b/doc/man/nvme_get_log_fw_slot.2 new file mode 100644 index 0000000..787f2d0 --- /dev/null +++ b/doc/man/nvme_get_log_fw_slot.2 @@ -0,0 +1,22 @@ +.TH "nvme_get_log_fw_slot" 9 "nvme_get_log_fw_slot" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_fw_slot \- Retrieves the controller firmware log +.SH SYNOPSIS +.B "int" nvme_get_log_fw_slot +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_firmware_slot *fw_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "fw_log" 12 +User address to store the log page +.SH "DESCRIPTION" +This log page describes the firmware revision stored in each firmware slot +supported. The firmware revision is indicated as an ASCII string. The log +page also indicates the active slot number. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_lba_status.2 b/doc/man/nvme_get_log_lba_status.2 new file mode 100644 index 0000000..11ba889 --- /dev/null +++ b/doc/man/nvme_get_log_lba_status.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_log_lba_status" 9 "nvme_get_log_lba_status" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_lba_status \- Retrieve LBA Status +.SH SYNOPSIS +.B "int" nvme_get_log_lba_status +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_media_unit_stat.2 b/doc/man/nvme_get_log_media_unit_stat.2 new file mode 100644 index 0000000..ce07cf9 --- /dev/null +++ b/doc/man/nvme_get_log_media_unit_stat.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_media_unit_stat" 9 "nvme_get_log_media_unit_stat" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_media_unit_stat \- Retrieve Media Unit Status +.SH SYNOPSIS +.B "int" nvme_get_log_media_unit_stat +.BI "(int fd " "," +.BI "__u16 domid " "," +.BI "struct nvme_media_unit_stat_log *mus " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "domid" 12 +Domain Identifier selection, if supported +.IP "mus" 12 +User address to store the Media Unit statistics log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_mi_cmd_supported_effects.2 b/doc/man/nvme_get_log_mi_cmd_supported_effects.2 new file mode 100644 index 0000000..c2c973f --- /dev/null +++ b/doc/man/nvme_get_log_mi_cmd_supported_effects.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_mi_cmd_supported_effects" 9 "nvme_get_log_mi_cmd_supported_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_mi_cmd_supported_effects \- displays the MI Commands Supported by the controller +.SH SYNOPSIS +.B "int" nvme_get_log_mi_cmd_supported_effects +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_mi_cmd_supported_effects_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +MI Command Supported and Effects data structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_page.2 b/doc/man/nvme_get_log_page.2 new file mode 100644 index 0000000..9ff9c87 --- /dev/null +++ b/doc/man/nvme_get_log_page.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_page" 9 "nvme_get_log_page" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_page \- Get log page data +.SH SYNOPSIS +.B "int" nvme_get_log_page +.BI "(int fd " "," +.BI "__u32 xfer_len " "," +.BI "struct nvme_get_log_args *args " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "xfer_len" 12 +Max log transfer size per request to split the total. +.IP "args" 12 +\fIstruct nvme_get_log_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_persistent_event.2 b/doc/man/nvme_get_log_persistent_event.2 new file mode 100644 index 0000000..d11de09 --- /dev/null +++ b/doc/man/nvme_get_log_persistent_event.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_persistent_event" 9 "nvme_get_log_persistent_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_persistent_event \- Retrieve Persistent Event Log +.SH SYNOPSIS +.B "int" nvme_get_log_persistent_event +.BI "(int fd " "," +.BI "enum nvme_pevent_log_action action " "," +.BI "__u32 size " "," +.BI "void *pevent_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "action" 12 +Action the controller should take during processing this command +.IP "size" 12 +Size of \fIpevent_log\fP +.IP "pevent_log" 12 +User address to store the persistent event log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_predictable_lat_event.2 b/doc/man/nvme_get_log_predictable_lat_event.2 new file mode 100644 index 0000000..6e33277 --- /dev/null +++ b/doc/man/nvme_get_log_predictable_lat_event.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_log_predictable_lat_event" 9 "nvme_get_log_predictable_lat_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_predictable_lat_event \- Retrieve Predictable Latency Event Aggregate Log Page +.SH SYNOPSIS +.B "int" nvme_get_log_predictable_lat_event +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset into the predictable latency event +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_predictable_lat_nvmset.2 b/doc/man/nvme_get_log_predictable_lat_nvmset.2 new file mode 100644 index 0000000..bc5fde8 --- /dev/null +++ b/doc/man/nvme_get_log_predictable_lat_nvmset.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_predictable_lat_nvmset" 9 "nvme_get_log_predictable_lat_nvmset" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_predictable_lat_nvmset \- Predictable Latency Per NVM Set +.SH SYNOPSIS +.B "int" nvme_get_log_predictable_lat_nvmset +.BI "(int fd " "," +.BI "__u16 nvmsetid " "," +.BI "struct nvme_nvmset_predictable_lat_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nvmsetid" 12 +NVM set id +.IP "log" 12 +User address to store the predictable latency log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_reclaim_unit_handle_usage.2 b/doc/man/nvme_get_log_reclaim_unit_handle_usage.2 new file mode 100644 index 0000000..7e62cc6 --- /dev/null +++ b/doc/man/nvme_get_log_reclaim_unit_handle_usage.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_reclaim_unit_handle_usage" 9 "nvme_get_log_reclaim_unit_handle_usage" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_reclaim_unit_handle_usage \- Get reclaim unit handle usage +.SH SYNOPSIS +.B "int" nvme_get_log_reclaim_unit_handle_usage +.BI "(int fd " "," +.BI "__u16 egid " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "egid" 12 +Endurance group identifier +.IP "offset" 12 +Offset into log page +.IP "len" 12 +Length (in bytes) of provided user buffer to hold the log data +.IP "log" 12 +Log page data buffer diff --git a/doc/man/nvme_get_log_reservation.2 b/doc/man/nvme_get_log_reservation.2 new file mode 100644 index 0000000..dd0a3cb --- /dev/null +++ b/doc/man/nvme_get_log_reservation.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_reservation" 9 "nvme_get_log_reservation" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_reservation \- Retrieve Reservation Notification +.SH SYNOPSIS +.B "int" nvme_get_log_reservation +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_resv_notification_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the reservation log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_sanitize.2 b/doc/man/nvme_get_log_sanitize.2 new file mode 100644 index 0000000..35c7e41 --- /dev/null +++ b/doc/man/nvme_get_log_sanitize.2 @@ -0,0 +1,21 @@ +.TH "nvme_get_log_sanitize" 9 "nvme_get_log_sanitize" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_sanitize \- Retrieve Sanitize Status +.SH SYNOPSIS +.B "int" nvme_get_log_sanitize +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_sanitize_log_page *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the sanitize log +.SH "DESCRIPTION" +The Sanitize Status log page reports sanitize operation time estimates and +information about the most recent sanitize operation. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_smart.2 b/doc/man/nvme_get_log_smart.2 new file mode 100644 index 0000000..48fcc57 --- /dev/null +++ b/doc/man/nvme_get_log_smart.2 @@ -0,0 +1,28 @@ +.TH "nvme_get_log_smart" 9 "nvme_get_log_smart" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_smart \- Retrieve nvme smart log +.SH SYNOPSIS +.B "int" nvme_get_log_smart +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "bool rae " "," +.BI "struct nvme_smart_log *smart_log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Optional namespace identifier +.IP "rae" 12 +Retain asynchronous events +.IP "smart_log" 12 +User address to store the smart log +.SH "DESCRIPTION" +This log page provides SMART and general health information. The information +provided is over the life of the controller and is retained across power +cycles. To request the controller log page, the namespace identifier +specified is FFFFFFFFh. The controller may also support requesting the log +page on a per namespace basis, as indicated by bit 0 of the LPA field in the +Identify Controller data structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_support_cap_config_list.2 b/doc/man/nvme_get_log_support_cap_config_list.2 new file mode 100644 index 0000000..2b8881d --- /dev/null +++ b/doc/man/nvme_get_log_support_cap_config_list.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_support_cap_config_list" 9 "nvme_get_log_support_cap_config_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_support_cap_config_list \- Retrieve Supported Capacity Configuration List +.SH SYNOPSIS +.B "int" nvme_get_log_support_cap_config_list +.BI "(int fd " "," +.BI "__u16 domid " "," +.BI "struct nvme_supported_cap_config_list_log *cap " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "domid" 12 +Domain Identifier selection, if supported +.IP "cap" 12 +User address to store supported capabilities config list +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise diff --git a/doc/man/nvme_get_log_supported_log_pages.2 b/doc/man/nvme_get_log_supported_log_pages.2 new file mode 100644 index 0000000..335b35d --- /dev/null +++ b/doc/man/nvme_get_log_supported_log_pages.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_log_supported_log_pages" 9 "nvme_get_log_supported_log_pages" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_supported_log_pages \- Retrieve nmve supported log pages +.SH SYNOPSIS +.B "int" nvme_get_log_supported_log_pages +.BI "(int fd " "," +.BI "bool rae " "," +.BI "struct nvme_supported_log_pages *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +Array of LID supported and Effects data structures +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_telemetry_ctrl.2 b/doc/man/nvme_get_log_telemetry_ctrl.2 new file mode 100644 index 0000000..2fa418f --- /dev/null +++ b/doc/man/nvme_get_log_telemetry_ctrl.2 @@ -0,0 +1,27 @@ +.TH "nvme_get_log_telemetry_ctrl" 9 "nvme_get_log_telemetry_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_telemetry_ctrl \- Get Telemetry Controller-Initiated log page +.SH SYNOPSIS +.B "int" nvme_get_log_telemetry_ctrl +.BI "(int fd " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset into the telemetry data +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "DESCRIPTION" +Retrieves the Telemetry Controller-Initiated log page at the requested offset +using the previously existing capture. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_telemetry_host.2 b/doc/man/nvme_get_log_telemetry_host.2 new file mode 100644 index 0000000..01bccc7 --- /dev/null +++ b/doc/man/nvme_get_log_telemetry_host.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_log_telemetry_host" 9 "nvme_get_log_telemetry_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_telemetry_host \- Get Telemetry Host-Initiated log page +.SH SYNOPSIS +.B "int" nvme_get_log_telemetry_host +.BI "(int fd " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "offset" 12 +Offset into the telemetry data +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "DESCRIPTION" +Retrieves the Telemetry Host-Initiated log page at the requested offset +using the previously existing capture. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_log_zns_changed_zones.2 b/doc/man/nvme_get_log_zns_changed_zones.2 new file mode 100644 index 0000000..908bf12 --- /dev/null +++ b/doc/man/nvme_get_log_zns_changed_zones.2 @@ -0,0 +1,23 @@ +.TH "nvme_get_log_zns_changed_zones" 9 "nvme_get_log_zns_changed_zones" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_log_zns_changed_zones \- Retrieve list of zones that have changed +.SH SYNOPSIS +.B "int" nvme_get_log_zns_changed_zones +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "bool rae " "," +.BI "struct nvme_zns_changed_zone_log *log " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the changed zone log +.SH "DESCRIPTION" +The list of zones that have changed state due to an exceptional event. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_logical_block_size.2 b/doc/man/nvme_get_logical_block_size.2 new file mode 100644 index 0000000..63419a7 --- /dev/null +++ b/doc/man/nvme_get_logical_block_size.2 @@ -0,0 +1,18 @@ +.TH "nvme_get_logical_block_size" 9 "nvme_get_logical_block_size" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_logical_block_size \- Retrieve block size +.SH SYNOPSIS +.B "int" nvme_get_logical_block_size +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "int *blksize " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace id +.IP "blksize" 12 +Pointer to where the block size will be set on success +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_new_host_telemetry.2 b/doc/man/nvme_get_new_host_telemetry.2 new file mode 100644 index 0000000..d6d101a --- /dev/null +++ b/doc/man/nvme_get_new_host_telemetry.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_new_host_telemetry" 9 "nvme_get_new_host_telemetry" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_new_host_telemetry \- Get new host telemetry log +.SH SYNOPSIS +.B "int" nvme_get_new_host_telemetry +.BI "(int fd " "," +.BI "struct nvme_telemetry_log **log " "," +.BI "enum nvme_telemetry_da da " "," +.BI "size_t *size " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "log" 12 +On success, set to the value of the allocated and retrieved log. +.IP "da" 12 +Log page data area, valid values: \fIenum nvme_telemetry_da\fP +.IP "size" 12 +Ptr to the telemetry log size, so it can be returned +.SH "DESCRIPTION" +The total size allocated can be calculated as: +(nvme_telemetry_log da size + 1) * NVME_LOG_TELEM_BLOCK_SIZE. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_ns_attr.2 b/doc/man/nvme_get_ns_attr.2 new file mode 100644 index 0000000..0aa77f7 --- /dev/null +++ b/doc/man/nvme_get_ns_attr.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_ns_attr" 9 "nvme_get_ns_attr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_ns_attr \- Read namespace sysfs attribute +.SH SYNOPSIS +.B "char *" nvme_get_ns_attr +.BI "(nvme_ns_t n " "," +.BI "const char *attr " ");" +.SH ARGUMENTS +.IP "n" 12 +nvme_ns_t object +.IP "attr" 12 +sysfs attribute name +.SH "RETURN" +String with the contents of \fIattr\fP or NULL in case of an empty value +or in case of an error (indicated by non-zero errno code). diff --git a/doc/man/nvme_get_nsid.2 b/doc/man/nvme_get_nsid.2 new file mode 100644 index 0000000..8773686 --- /dev/null +++ b/doc/man/nvme_get_nsid.2 @@ -0,0 +1,19 @@ +.TH "nvme_get_nsid" 9 "nvme_get_nsid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_nsid \- Retrieve the NSID from a namespace file descriptor +.SH SYNOPSIS +.B "int" nvme_get_nsid +.BI "(int fd " "," +.BI "__u32 *nsid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme namespace +.IP "nsid" 12 +User pointer to namespace id +.SH "DESCRIPTION" +This should only be sent to namespace handles, not to controllers. The +kernel's interface returns the nsid as the return value. This is unfortunate +for many architectures that are incapable of allowing distinguishing a +namespace id > 0x80000000 from a negative error number. +.SH "RETURN" +0 if \fInsid\fP was set successfully or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_path_attr.2 b/doc/man/nvme_get_path_attr.2 new file mode 100644 index 0000000..73b73a2 --- /dev/null +++ b/doc/man/nvme_get_path_attr.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_path_attr" 9 "nvme_get_path_attr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_path_attr \- Read path sysfs attribute +.SH SYNOPSIS +.B "char *" nvme_get_path_attr +.BI "(nvme_path_t p " "," +.BI "const char *attr " ");" +.SH ARGUMENTS +.IP "p" 12 +nvme_path_t object +.IP "attr" 12 +sysfs attribute name +.SH "RETURN" +String with the contents of \fIattr\fP or NULL in case of an empty value +or in case of an error (indicated by non-zero errno code). diff --git a/doc/man/nvme_get_property.2 b/doc/man/nvme_get_property.2 new file mode 100644 index 0000000..b5d8582 --- /dev/null +++ b/doc/man/nvme_get_property.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_property" 9 "nvme_get_property" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_property \- Get a controller property +.SH SYNOPSIS +.B "int" nvme_get_property +.BI "(struct nvme_get_property_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_get_propert_args\fP argument structure +.SH "DESCRIPTION" +This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These +properties align to the PCI MMIO controller registers. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_get_subsys_attr.2 b/doc/man/nvme_get_subsys_attr.2 new file mode 100644 index 0000000..645e947 --- /dev/null +++ b/doc/man/nvme_get_subsys_attr.2 @@ -0,0 +1,15 @@ +.TH "nvme_get_subsys_attr" 9 "nvme_get_subsys_attr" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_get_subsys_attr \- Read subsystem sysfs attribute +.SH SYNOPSIS +.B "char *" nvme_get_subsys_attr +.BI "(nvme_subsystem_t s " "," +.BI "const char *attr " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.IP "attr" 12 +sysfs attribute name +.SH "RETURN" +String with the contents of \fIattr\fP or NULL in case of an empty value +or in case of an error (indicated by non-zero errno code). diff --git a/doc/man/nvme_hmac_alg.2 b/doc/man/nvme_hmac_alg.2 new file mode 100644 index 0000000..a243dee --- /dev/null +++ b/doc/man/nvme_hmac_alg.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_hmac_alg" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_hmac_alg \- HMAC algorithm +.SH SYNOPSIS +enum nvme_hmac_alg { +.br +.BI " NVME_HMAC_ALG_NONE" +, +.br +.br +.BI " NVME_HMAC_ALG_SHA2_256" +, +.br +.br +.BI " NVME_HMAC_ALG_SHA2_384" +, +.br +.br +.BI " NVME_HMAC_ALG_SHA2_512" + +}; +.SH Constants +.IP "NVME_HMAC_ALG_NONE" 12 +No HMAC algorithm +.IP "NVME_HMAC_ALG_SHA2_256" 12 +SHA2-256 +.IP "NVME_HMAC_ALG_SHA2_384" 12 +SHA2-384 +.IP "NVME_HMAC_ALG_SHA2_512" 12 +SHA2-512 diff --git a/doc/man/nvme_host_behavior_support.2 b/doc/man/nvme_host_behavior_support.2 new file mode 100644 index 0000000..d2d1b4d --- /dev/null +++ b/doc/man/nvme_host_behavior_support.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvme_host_behavior_support" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_host_behavior_support \- Enable Advanced Command +.SH SYNOPSIS +enum nvme_host_behavior_support { +.br +.BI " NVME_ENABLE_ACRE" + +}; +.SH Constants +.IP "NVME_ENABLE_ACRE" 12 +Enable Advanced Command Retry Enable diff --git a/doc/man/nvme_host_get_dhchap_key.2 b/doc/man/nvme_host_get_dhchap_key.2 new file mode 100644 index 0000000..d99e3cd --- /dev/null +++ b/doc/man/nvme_host_get_dhchap_key.2 @@ -0,0 +1,11 @@ +.TH "nvme_host_get_dhchap_key" 9 "nvme_host_get_dhchap_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_get_dhchap_key \- Return host key +.SH SYNOPSIS +.B "const char *" nvme_host_get_dhchap_key +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +Host for which the key should be returned +.SH "RETURN" +DH-HMAC-CHAP host key or NULL if not set diff --git a/doc/man/nvme_host_get_hostid.2 b/doc/man/nvme_host_get_hostid.2 new file mode 100644 index 0000000..313c6aa --- /dev/null +++ b/doc/man/nvme_host_get_hostid.2 @@ -0,0 +1,11 @@ +.TH "nvme_host_get_hostid" 9 "nvme_host_get_hostid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_get_hostid \- Host ID of an nvme_host_t object +.SH SYNOPSIS +.B "const char *" nvme_host_get_hostid +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +nvme_host_t object +.SH "RETURN" +Host ID of \fIh\fP diff --git a/doc/man/nvme_host_get_hostnqn.2 b/doc/man/nvme_host_get_hostnqn.2 new file mode 100644 index 0000000..91383a9 --- /dev/null +++ b/doc/man/nvme_host_get_hostnqn.2 @@ -0,0 +1,11 @@ +.TH "nvme_host_get_hostnqn" 9 "nvme_host_get_hostnqn" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_get_hostnqn \- Host NQN of an nvme_host_t object +.SH SYNOPSIS +.B "const char *" nvme_host_get_hostnqn +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +nvme_host_t object +.SH "RETURN" +Host NQN of \fIh\fP diff --git a/doc/man/nvme_host_get_hostsymname.2 b/doc/man/nvme_host_get_hostsymname.2 new file mode 100644 index 0000000..095d114 --- /dev/null +++ b/doc/man/nvme_host_get_hostsymname.2 @@ -0,0 +1,12 @@ +.TH "nvme_host_get_hostsymname" 9 "nvme_host_get_hostsymname" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_get_hostsymname \- Get the host's symbolic name +.SH SYNOPSIS +.B "const char *" nvme_host_get_hostsymname +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +Host for which the symbolic name should be returned. +.SH "RETURN" +The symbolic name or NULL if a symbolic name hasn't been +configure. diff --git a/doc/man/nvme_host_get_root.2 b/doc/man/nvme_host_get_root.2 new file mode 100644 index 0000000..df64a25 --- /dev/null +++ b/doc/man/nvme_host_get_root.2 @@ -0,0 +1,11 @@ +.TH "nvme_host_get_root" 9 "nvme_host_get_root" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_get_root \- Returns nvme_root_t object +.SH SYNOPSIS +.B "nvme_root_t" nvme_host_get_root +.BI "(nvme_host_t h " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.SH "RETURN" +\fInvme_root_t\fP object from \fIh\fP diff --git a/doc/man/nvme_host_is_pdc_enabled.2 b/doc/man/nvme_host_is_pdc_enabled.2 new file mode 100644 index 0000000..ab175ee --- /dev/null +++ b/doc/man/nvme_host_is_pdc_enabled.2 @@ -0,0 +1,16 @@ +.TH "nvme_host_is_pdc_enabled" 9 "nvme_host_is_pdc_enabled" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_is_pdc_enabled \- Is Persistenct Discovery Controller enabled +.SH SYNOPSIS +.B "bool" nvme_host_is_pdc_enabled +.BI "(nvme_host_t h " "," +.BI "bool fallback " ");" +.SH ARGUMENTS +.IP "h" 12 +Host which to check if PDC is enabled +.IP "fallback" 12 +The fallback default value of the flag when +\fInvme_host_set_pdc_enabled\fP has not be used +to set the flag. +.SH "RETURN" +true if PDC is enabled for \fIh\fP, else false diff --git a/doc/man/nvme_host_mem_buf_attrs.2 b/doc/man/nvme_host_mem_buf_attrs.2 new file mode 100644 index 0000000..d37127b --- /dev/null +++ b/doc/man/nvme_host_mem_buf_attrs.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_host_mem_buf_attrs" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_host_mem_buf_attrs \- Host Memory Buffer - Attributes Data Structure +.SH SYNOPSIS +struct nvme_host_mem_buf_attrs { +.br +.BI " __le32 hsize;" +.br +.BI " __le32 hmdlal;" +.br +.BI " __le32 hmdlau;" +.br +.BI " __le32 hmdlec;" +.br +.BI " __u8 rsvd16[4080];" +.br +.BI " +}; +.br + +.SH Members +.IP "hsize" 12 +Host Memory Buffer Size +.IP "hmdlal" 12 +Host Memory Descriptor List Lower Address +.IP "hmdlau" 12 +Host Memory Descriptor List Upper Address +.IP "hmdlec" 12 +Host Memory Descriptor List Entry Count +.IP "rsvd16" 12 +Reserved diff --git a/doc/man/nvme_host_metadata.2 b/doc/man/nvme_host_metadata.2 new file mode 100644 index 0000000..0b1719b --- /dev/null +++ b/doc/man/nvme_host_metadata.2 @@ -0,0 +1,33 @@ +.TH "libnvme" 9 "struct nvme_host_metadata" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_host_metadata \- Host Metadata Data Structure +.SH SYNOPSIS +struct nvme_host_metadata { +.br +.BI " __u8 ndesc;" +.br +.BI " __u8 rsvd1;" +.br +.BI " union {" +.br +.BI " struct nvme_metadata_element_desc descs[0];" +.br +.BI " __u8 descs_buf[4094];" +.br +.BI " };" +.br +.BI " +}; +.br + +.SH Members +.IP "ndesc" 12 +Number of metadata element descriptors +.IP "rsvd1" 12 +Reserved +.IP "{unnamed_union}" 12 +anonymous +.IP "descs" 12 +Metadata element descriptors +.IP "descs_buf" 12 +Metadata element descriptor buffer diff --git a/doc/man/nvme_host_set_dhchap_key.2 b/doc/man/nvme_host_set_dhchap_key.2 new file mode 100644 index 0000000..424fca2 --- /dev/null +++ b/doc/man/nvme_host_set_dhchap_key.2 @@ -0,0 +1,12 @@ +.TH "nvme_host_set_dhchap_key" 9 "nvme_host_set_dhchap_key" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_set_dhchap_key \- set host key +.SH SYNOPSIS +.B "void" nvme_host_set_dhchap_key +.BI "(nvme_host_t h " "," +.BI "const char *key " ");" +.SH ARGUMENTS +.IP "h" 12 +Host for which the key should be set +.IP "key" 12 +DH-HMAC-CHAP Key to set or NULL to clear existing key diff --git a/doc/man/nvme_host_set_hostsymname.2 b/doc/man/nvme_host_set_hostsymname.2 new file mode 100644 index 0000000..644dbe7 --- /dev/null +++ b/doc/man/nvme_host_set_hostsymname.2 @@ -0,0 +1,12 @@ +.TH "nvme_host_set_hostsymname" 9 "nvme_host_set_hostsymname" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_set_hostsymname \- Set the host's symbolic name +.SH SYNOPSIS +.B "void" nvme_host_set_hostsymname +.BI "(nvme_host_t h " "," +.BI "const char *hostsymname " ");" +.SH ARGUMENTS +.IP "h" 12 +Host for which the symbolic name should be set. +.IP "hostsymname" 12 +Symbolic name diff --git a/doc/man/nvme_host_set_pdc_enabled.2 b/doc/man/nvme_host_set_pdc_enabled.2 new file mode 100644 index 0000000..cede6d6 --- /dev/null +++ b/doc/man/nvme_host_set_pdc_enabled.2 @@ -0,0 +1,16 @@ +.TH "nvme_host_set_pdc_enabled" 9 "nvme_host_set_pdc_enabled" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_host_set_pdc_enabled \- Set Persistent Discovery Controller flag +.SH SYNOPSIS +.B "void" nvme_host_set_pdc_enabled +.BI "(nvme_host_t h " "," +.BI "bool enabled " ");" +.SH ARGUMENTS +.IP "h" 12 +Host for which the falg should be set +.IP "enabled" 12 +The bool to set the enabled flag +.SH "DESCRIPTION" +When \fBnvme_host_set_pdc_enabled\fP is not used to set the PDC flag, +\fBnvme_host_is_pdc_enabled\fP will return the default value which was +passed into the function and not the undefined flag value. diff --git a/doc/man/nvme_id_ctrl.2 b/doc/man/nvme_id_ctrl.2 new file mode 100644 index 0000000..f3b3164 --- /dev/null +++ b/doc/man/nvme_id_ctrl.2 @@ -0,0 +1,505 @@ +.TH "libnvme" 9 "struct nvme_id_ctrl" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_ctrl \- Identify Controller data structure +.SH SYNOPSIS +struct nvme_id_ctrl { +.br +.BI " __le16 vid;" +.br +.BI " __le16 ssvid;" +.br +.BI " char sn[20];" +.br +.BI " char mn[40];" +.br +.BI " char fr[8];" +.br +.BI " __u8 rab;" +.br +.BI " __u8 ieee[3];" +.br +.BI " __u8 cmic;" +.br +.BI " __u8 mdts;" +.br +.BI " __le16 cntlid;" +.br +.BI " __le32 ver;" +.br +.BI " __le32 rtd3r;" +.br +.BI " __le32 rtd3e;" +.br +.BI " __le32 oaes;" +.br +.BI " __le32 ctratt;" +.br +.BI " __le16 rrls;" +.br +.BI " __u8 rsvd102[9];" +.br +.BI " __u8 cntrltype;" +.br +.BI " __u8 fguid[16];" +.br +.BI " __le16 crdt1;" +.br +.BI " __le16 crdt2;" +.br +.BI " __le16 crdt3;" +.br +.BI " __u8 rsvd134[119];" +.br +.BI " __u8 nvmsr;" +.br +.BI " __u8 vwci;" +.br +.BI " __u8 mec;" +.br +.BI " __le16 oacs;" +.br +.BI " __u8 acl;" +.br +.BI " __u8 aerl;" +.br +.BI " __u8 frmw;" +.br +.BI " __u8 lpa;" +.br +.BI " __u8 elpe;" +.br +.BI " __u8 npss;" +.br +.BI " __u8 avscc;" +.br +.BI " __u8 apsta;" +.br +.BI " __le16 wctemp;" +.br +.BI " __le16 cctemp;" +.br +.BI " __le16 mtfa;" +.br +.BI " __le32 hmpre;" +.br +.BI " __le32 hmmin;" +.br +.BI " __u8 tnvmcap[16];" +.br +.BI " __u8 unvmcap[16];" +.br +.BI " __le32 rpmbs;" +.br +.BI " __le16 edstt;" +.br +.BI " __u8 dsto;" +.br +.BI " __u8 fwug;" +.br +.BI " __le16 kas;" +.br +.BI " __le16 hctma;" +.br +.BI " __le16 mntmt;" +.br +.BI " __le16 mxtmt;" +.br +.BI " __le32 sanicap;" +.br +.BI " __le32 hmminds;" +.br +.BI " __le16 hmmaxd;" +.br +.BI " __le16 nsetidmax;" +.br +.BI " __le16 endgidmax;" +.br +.BI " __u8 anatt;" +.br +.BI " __u8 anacap;" +.br +.BI " __le32 anagrpmax;" +.br +.BI " __le32 nanagrpid;" +.br +.BI " __le32 pels;" +.br +.BI " __le16 domainid;" +.br +.BI " __u8 rsvd358[10];" +.br +.BI " __u8 megcap[16];" +.br +.BI " __u8 rsvd384[128];" +.br +.BI " __u8 sqes;" +.br +.BI " __u8 cqes;" +.br +.BI " __le16 maxcmd;" +.br +.BI " __le32 nn;" +.br +.BI " __le16 oncs;" +.br +.BI " __le16 fuses;" +.br +.BI " __u8 fna;" +.br +.BI " __u8 vwc;" +.br +.BI " __le16 awun;" +.br +.BI " __le16 awupf;" +.br +.BI " __u8 icsvscc;" +.br +.BI " __u8 nwpc;" +.br +.BI " __le16 acwu;" +.br +.BI " __le16 ocfs;" +.br +.BI " __le32 sgls;" +.br +.BI " __le32 mnan;" +.br +.BI " __u8 maxdna[16];" +.br +.BI " __le32 maxcna;" +.br +.BI " __u8 rsvd564[204];" +.br +.BI " char subnqn[NVME_NQN_LENGTH];" +.br +.BI " __u8 rsvd1024[768];" +.br +.BI " __le32 ioccsz;" +.br +.BI " __le32 iorcsz;" +.br +.BI " __le16 icdoff;" +.br +.BI " __u8 fcatt;" +.br +.BI " __u8 msdbd;" +.br +.BI " __le16 ofcs;" +.br +.BI " __u8 dctype;" +.br +.BI " __u8 rsvd1807[241];" +.br +.BI " struct nvme_id_psd psd[32];" +.br +.BI " __u8 vs[1024];" +.br +.BI " +}; +.br + +.SH Members +.IP "vid" 12 +PCI Vendor ID, the company vendor identifier that is assigned by +the PCI SIG. +.IP "ssvid" 12 +PCI Subsystem Vendor ID, the company vendor identifier that is +assigned by the PCI SIG for the subsystem. +.IP "sn" 12 +Serial Number in ASCII +.IP "mn" 12 +Model Number in ASCII +.IP "fr" 12 +Firmware Revision in ASCII, the currently active firmware +revision for the NVM subsystem +.IP "rab" 12 +Recommended Arbitration Burst, reported as a power of two +.IP "ieee" 12 +IEEE assigned Organization Unique Identifier +.IP "cmic" 12 +Controller Multipath IO and Namespace Sharing Capabilities of +the controller and NVM subsystem. See \fIenum nvme_id_ctrl_cmic\fP. +.IP "mdts" 12 +Max Data Transfer Size is the largest data transfer size. The +host should not submit a command that exceeds this maximum data +transfer size. The value is in units of the minimum memory page +size (CAP.MPSMIN) and is reported as a power of two +.IP "cntlid" 12 +Controller ID, the NVM subsystem unique controller identifier +associated with the controller. +.IP "ver" 12 +Version, this field contains the value reported in the Version +register, or property (see \fIenum nvme_registers\fP NVME_REG_VS). +.IP "rtd3r" 12 +RTD3 Resume Latency, the expected latency in microseconds to resume +from Runtime D3 +.IP "rtd3e" 12 +RTD3 Exit Latency, the typical latency in microseconds to enter +Runtime D3. +.IP "oaes" 12 +Optional Async Events Supported, see \fIenum\fP nvme_id_ctrl_oaes. +.IP "ctratt" 12 +Controller Attributes, see \fIenum\fP nvme_id_ctrl_ctratt. +.IP "rrls" 12 +Read Recovery Levels. If a bit is set, then the corresponding +Read Recovery Level is supported. If a bit is cleared, then the +corresponding Read Recovery Level is not supported. +.IP "rsvd102" 12 +Reserved +.IP "cntrltype" 12 +Controller Type, see \fIenum nvme_id_ctrl_cntrltype\fP +.IP "fguid" 12 +FRU GUID, a 128-bit value that is globally unique for a given +Field Replaceable Unit +.IP "crdt1" 12 +Controller Retry Delay time in 100 millisecond units if CQE CRD +field is 1 +.IP "crdt2" 12 +Controller Retry Delay time in 100 millisecond units if CQE CRD +field is 2 +.IP "crdt3" 12 +Controller Retry Delay time in 100 millisecond units if CQE CRD +field is 3 +.IP "rsvd134" 12 +Reserved +.IP "nvmsr" 12 +NVM Subsystem Report, see \fIenum nvme_id_ctrl_nvmsr\fP +.IP "vwci" 12 +VPD Write Cycle Information, see \fIenum nvme_id_ctrl_vwci\fP +.IP "mec" 12 +Management Endpoint Capabilities, see \fIenum nvme_id_ctrl_mec\fP +.IP "oacs" 12 +Optional Admin Command Support,the optional Admin commands and +features supported by the controller, see \fIenum nvme_id_ctrl_oacs\fP. +.IP "acl" 12 +Abort Command Limit, the maximum number of concurrently +executing Abort commands supported by the controller. This is a +0's based value. +.IP "aerl" 12 +Async Event Request Limit, the maximum number of concurrently +outstanding Asynchronous Event Request commands supported by the +controller This is a 0's based value. +.IP "frmw" 12 +Firmware Updates indicates capabilities regarding firmware +updates. See \fIenum nvme_id_ctrl_frmw\fP. +.IP "lpa" 12 +Log Page Attributes, see \fIenum nvme_id_ctrl_lpa\fP. +.IP "elpe" 12 +Error Log Page Entries, the maximum number of Error Information +log entries that are stored by the controller. This field is a +0's based value. +.IP "npss" 12 +Number of Power States Supported, the number of NVM Express +power states supported by the controller, indicating the number +of valid entries in \fIstruct nvme_id_ctrl\fP.psd. This is a 0's +based value. +.IP "avscc" 12 +Admin Vendor Specific Command Configuration, see +\fIenum nvme_id_ctrl_avscc\fP. +.IP "apsta" 12 +Autonomous Power State Transition Attributes, see +\fIenum nvme_id_ctrl_apsta\fP. +.IP "wctemp" 12 +Warning Composite Temperature Threshold indicates +the minimum Composite Temperature field value (see \fIstruct +nvme_smart_log\fP.critical_comp_time) that indicates an overheating +condition during which controller operation continues. +.IP "cctemp" 12 +Critical Composite Temperature Threshold, field indicates the +minimum Composite Temperature field value (see \fIstruct +nvme_smart_log\fP.critical_comp_time) that indicates a critical +overheating condition. +.IP "mtfa" 12 +Maximum Time for Firmware Activation indicates the maximum time +the controller temporarily stops processing commands to activate +the firmware image, specified in 100 millisecond units. This +field is always valid if the controller supports firmware +activation without a reset. +.IP "hmpre" 12 +Host Memory Buffer Preferred Size indicates the preferred size +that the host is requested to allocate for the Host Memory +Buffer feature in 4 KiB units. +.IP "hmmin" 12 +Host Memory Buffer Minimum Size indicates the minimum size that +the host is requested to allocate for the Host Memory Buffer +feature in 4 KiB units. +.IP "tnvmcap" 12 +Total NVM Capacity, the total NVM capacity in the NVM subsystem. +The value is in bytes. +.IP "unvmcap" 12 +Unallocated NVM Capacity, the unallocated NVM capacity in the +NVM subsystem. The value is in bytes. +.IP "rpmbs" 12 +Replay Protected Memory Block Support, see +\fIenum nvme_id_ctrl_rpmbs\fP. +.IP "edstt" 12 +Extended Device Self-test Time, if Device Self-test command is +supported (see \fIstruct nvme_id_ctrl\fP.oacs, NVME_CTRL_OACS_SELF_TEST), +then this field indicates the nominal amount of time in one +minute units that the controller takes to complete an extended +device self-test operation when in power state 0. +.IP "dsto" 12 +Device Self-test Options, see \fIenum nvme_id_ctrl_dsto\fP. +.IP "fwug" 12 +Firmware Update Granularity indicates the granularity and +alignment requirement of the firmware image being updated by the +Firmware Image Download command. The value is reported in 4 KiB +units. A value of 0h indicates no information on granularity is +provided. A value of FFh indicates no restriction +.IP "kas" 12 +Keep Alive Support indicates the granularity of the Keep Alive +Timer in 100 millisecond units. +.IP "hctma" 12 +Host Controlled Thermal Management Attributes, see +\fIenum nvme_id_ctrl_hctm\fP. +.IP "mntmt" 12 +Minimum Thermal Management Temperature indicates the minimum +temperature, in degrees Kelvin, that the host may request in the +Thermal Management Temperature 1 field and Thermal Management +Temperature 2 field of a Set Features command with the Feature +Identifier field set to NVME_FEAT_FID_HCTM. +.IP "mxtmt" 12 +Maximum Thermal Management Temperature indicates the maximum +temperature, in degrees Kelvin, that the host may request in the +Thermal Management Temperature 1 field and Thermal Management +Temperature 2 field of the Set Features command with the Feature +Identifier set to NVME_FEAT_FID_HCTM. +.IP "sanicap" 12 +Sanitize Capabilities, see \fIenum nvme_id_ctrl_sanicap\fP +.IP "hmminds" 12 +Host Memory Buffer Minimum Descriptor Entry Size indicates the +minimum usable size of a Host Memory Buffer Descriptor Entry in +4 KiB units. +.IP "hmmaxd" 12 +Host Memory Maximum Descriptors Entries indicates the number of +usable Host Memory Buffer Descriptor Entries. +.IP "nsetidmax" 12 +NVM Set Identifier Maximum, defines the maximum value of a valid +NVM Set Identifier for any controller in the NVM subsystem. +.IP "endgidmax" 12 +Endurance Group Identifier Maximum, defines the maximum value of +a valid Endurance Group Identifier for any controller in the NVM +subsystem. +.IP "anatt" 12 +ANA Transition Time indicates the maximum amount of time, in +seconds, for a transition between ANA states or the maximum +amount of time, in seconds, that the controller reports the ANA +change state. +.IP "anacap" 12 +Asymmetric Namespace Access Capabilities, see +\fIenum nvme_id_ctrl_anacap\fP. +.IP "anagrpmax" 12 +ANA Group Identifier Maximum indicates the maximum value of a +valid ANA Group Identifier for any controller in the NVM +subsystem. +.IP "nanagrpid" 12 +Number of ANA Group Identifiers indicates the number of ANA +groups supported by this controller. +.IP "pels" 12 +Persistent Event Log Size indicates the maximum reportable size +for the Persistent Event Log. +.IP "domainid" 12 +Domain Identifier indicates the identifier of the domain +that contains this controller. +.IP "rsvd358" 12 +Reserved +.IP "megcap" 12 +Max Endurance Group Capacity indicates the maximum capacity +of a single Endurance Group. +.IP "rsvd384" 12 +Reserved +.IP "sqes" 12 +Submission Queue Entry Size, see \fIenum nvme_id_ctrl_sqes\fP. +.IP "cqes" 12 +Completion Queue Entry Size, see \fIenum nvme_id_ctrl_cqes\fP. +.IP "maxcmd" 12 +Maximum Outstanding Commands indicates the maximum number of +commands that the controller processes at one time for a +particular queue. +.IP "nn" 12 +Number of Namespaces indicates the maximum value of a valid +nsid for the NVM subsystem. If the MNAN (\fIstruct nvme_id_ctrl\fP.mnan +field is cleared to 0h, then this field also indicates the +maximum number of namespaces supported by the NVM subsystem. +.IP "oncs" 12 +Optional NVM Command Support, see \fIenum nvme_id_ctrl_oncs\fP. +.IP "fuses" 12 +Fused Operation Support, see \fIenum nvme_id_ctrl_fuses\fP. +.IP "fna" 12 +Format NVM Attributes, see \fIenum nvme_id_ctrl_fna\fP. +.IP "vwc" 12 +Volatile Write Cache, see \fIenum nvme_id_ctrl_vwc\fP. +.IP "awun" 12 +Atomic Write Unit Normal indicates the size of the write +operation guaranteed to be written atomically to the NVM across +all namespaces with any supported namespace format during normal +operation. This field is specified in logical blocks and is a +0's based value. +.IP "awupf" 12 +Atomic Write Unit Power Fail indicates the size of the write +operation guaranteed to be written atomically to the NVM across +all namespaces with any supported namespace format during a +power fail or error condition. This field is specified in +logical blocks and is a 0’s based value. +.IP "icsvscc" 12 +NVM Vendor Specific Command Configuration, see +\fIenum nvme_id_ctrl_nvscc\fP. +.IP "nwpc" 12 +Namespace Write Protection Capabilities, see +\fIenum nvme_id_ctrl_nwpc\fP. +.IP "acwu" 12 +Atomic Compare & Write Unit indicates the size of the write +operation guaranteed to be written atomically to the NVM across +all namespaces with any supported namespace format for a Compare +and Write fused operation. This field is specified in logical +blocks and is a 0’s based value. +.IP "ocfs" 12 +Optional Copy Formats Supported, each bit n means controller +supports Copy Format n. +.IP "sgls" 12 +SGL Support, see \fIenum nvme_id_ctrl_sgls\fP +.IP "mnan" 12 +Maximum Number of Allowed Namespaces indicates the maximum +number of namespaces supported by the NVM subsystem. +.IP "maxdna" 12 +Maximum Domain Namespace Attachments indicates the maximum +of the sum of the number of namespaces attached to each I/O +controller in the Domain. +.IP "maxcna" 12 +Maximum I/O Controller Namespace Attachments indicates the +maximum number of namespaces that are allowed to be attached to +this I/O controller. +.IP "rsvd564" 12 +Reserved +.IP "subnqn" 12 +NVM Subsystem NVMe Qualified Name, UTF-8 null terminated string +.IP "rsvd1024" 12 +Reserved +.IP "ioccsz" 12 +I/O Queue Command Capsule Supported Size, defines the maximum +I/O command capsule size in 16 byte units. +.IP "iorcsz" 12 +I/O Queue Response Capsule Supported Size, defines the maximum +I/O response capsule size in 16 byte units. +.IP "icdoff" 12 +In Capsule Data Offset, defines the offset where data starts +within a capsule. This value is applicable to I/O Queues only. +.IP "fcatt" 12 +Fabrics Controller Attributes, see \fIenum nvme_id_ctrl_fcatt\fP. +.IP "msdbd" 12 +Maximum SGL Data Block Descriptors indicates the maximum +number of SGL Data Block or Keyed SGL Data Block descriptors +that a host is allowed to place in a capsule. A value of 0h +indicates no limit. +.IP "ofcs" 12 +Optional Fabric Commands Support, see \fIenum nvme_id_ctrl_ofcs\fP. +.IP "dctype" 12 +Discovery Controller Type (DCTYPE). This field indicates what +type of Discovery controller the controller is (see enum +nvme_id_ctrl_dctype) +.IP "rsvd1807" 12 +Reserved +.IP "psd" 12 +Power State Descriptors, see \fIstruct nvme_id_psd\fP. +.IP "vs" 12 +Vendor Specific diff --git a/doc/man/nvme_id_ctrl_anacap.2 b/doc/man/nvme_id_ctrl_anacap.2 new file mode 100644 index 0000000..bb14914 --- /dev/null +++ b/doc/man/nvme_id_ctrl_anacap.2 @@ -0,0 +1,59 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_anacap" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_anacap \- This field indicates the capabilities associated with Asymmetric Namespace Access Reporting. +.SH SYNOPSIS +enum nvme_id_ctrl_anacap { +.br +.BI " NVME_CTRL_ANACAP_OPT" +, +.br +.br +.BI " NVME_CTRL_ANACAP_NON_OPT" +, +.br +.br +.BI " NVME_CTRL_ANACAP_INACCESSIBLE" +, +.br +.br +.BI " NVME_CTRL_ANACAP_PERSISTENT_LOSS" +, +.br +.br +.BI " NVME_CTRL_ANACAP_CHANGE" +, +.br +.br +.BI " NVME_CTRL_ANACAP_GRPID_NO_CHG" +, +.br +.br +.BI " NVME_CTRL_ANACAP_GRPID_MGMT" + +}; +.SH Constants +.IP "NVME_CTRL_ANACAP_OPT" 12 +If set, then the controller is able to +report ANA Optimized state. +.IP "NVME_CTRL_ANACAP_NON_OPT" 12 +If set, then the controller is able to +report ANA Non-Optimized state. +.IP "NVME_CTRL_ANACAP_INACCESSIBLE" 12 +If set, then the controller is able to +report ANA Inaccessible state. +.IP "NVME_CTRL_ANACAP_PERSISTENT_LOSS" 12 +If set, then the controller is able to +report ANA Persistent Loss state. +.IP "NVME_CTRL_ANACAP_CHANGE" 12 +If set, then the controller is able to +report ANA Change state. +.IP "NVME_CTRL_ANACAP_GRPID_NO_CHG" 12 +If set, then the ANAGRPID field in the +Identify Namespace data structure +(\fIstruct nvme_id_ns\fP.anagrpid), does not +change while the namespace is attached to +any controller. +.IP "NVME_CTRL_ANACAP_GRPID_MGMT" 12 +If set, then the controller supports a +non-zero value in the ANAGRPID field of +the Namespace Management command. diff --git a/doc/man/nvme_id_ctrl_apsta.2 b/doc/man/nvme_id_ctrl_apsta.2 new file mode 100644 index 0000000..661ba05 --- /dev/null +++ b/doc/man/nvme_id_ctrl_apsta.2 @@ -0,0 +1,13 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_apsta" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_apsta \- Flags indicating the attributes of the autonomous power state transition feature. +.SH SYNOPSIS +enum nvme_id_ctrl_apsta { +.br +.BI " NVME_CTRL_APSTA_APST" + +}; +.SH Constants +.IP "NVME_CTRL_APSTA_APST" 12 +If set, then the controller supports autonomous power +state transitions. diff --git a/doc/man/nvme_id_ctrl_avscc.2 b/doc/man/nvme_id_ctrl_avscc.2 new file mode 100644 index 0000000..b9a71e4 --- /dev/null +++ b/doc/man/nvme_id_ctrl_avscc.2 @@ -0,0 +1,14 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_avscc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_avscc \- Flags indicating the configuration settings for Admin Vendor Specific command handling. +.SH SYNOPSIS +enum nvme_id_ctrl_avscc { +.br +.BI " NVME_CTRL_AVSCC_AVS" + +}; +.SH Constants +.IP "NVME_CTRL_AVSCC_AVS" 12 +If set, all Admin Vendor Specific Commands use the +optional vendor specific command format with NDT and +NDM fields. diff --git a/doc/man/nvme_id_ctrl_cmic.2 b/doc/man/nvme_id_ctrl_cmic.2 new file mode 100644 index 0000000..e4dee6f --- /dev/null +++ b/doc/man/nvme_id_ctrl_cmic.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_cmic" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_cmic \- Controller Multipath IO and Namespace Sharing Capabilities of the controller and NVM subsystem. +.SH SYNOPSIS +enum nvme_id_ctrl_cmic { +.br +.BI " NVME_CTRL_CMIC_MULTI_PORT" +, +.br +.br +.BI " NVME_CTRL_CMIC_MULTI_CTRL" +, +.br +.br +.BI " NVME_CTRL_CMIC_MULTI_SRIOV" +, +.br +.br +.BI " NVME_CTRL_CMIC_MULTI_ANA_REPORTING" + +}; +.SH Constants +.IP "NVME_CTRL_CMIC_MULTI_PORT" 12 +If set, then the NVM subsystem may contain +more than one NVM subsystem port, otherwise +the NVM subsystem contains only a single +NVM subsystem port. +.IP "NVME_CTRL_CMIC_MULTI_CTRL" 12 +If set, then the NVM subsystem may contain +two or more controllers, otherwise the +NVM subsystem contains only a single +controller. An NVM subsystem that contains +multiple controllers may be used by +multiple hosts, or may provide multiple +paths for a single host. +.IP "NVME_CTRL_CMIC_MULTI_SRIOV" 12 +If set, then the controller is associated +with an SR-IOV Virtual Function, otherwise +it is associated with a PCI Function +or a Fabrics connection. +.IP "NVME_CTRL_CMIC_MULTI_ANA_REPORTING" 12 +If set, then the NVM subsystem supports +Asymmetric Namespace Access Reporting. diff --git a/doc/man/nvme_id_ctrl_cntrltype.2 b/doc/man/nvme_id_ctrl_cntrltype.2 new file mode 100644 index 0000000..111367f --- /dev/null +++ b/doc/man/nvme_id_ctrl_cntrltype.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_cntrltype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_cntrltype \- Controller types +.SH SYNOPSIS +enum nvme_id_ctrl_cntrltype { +.br +.BI " NVME_CTRL_CNTRLTYPE_IO" +, +.br +.br +.BI " NVME_CTRL_CNTRLTYPE_DISCOVERY" +, +.br +.br +.BI " NVME_CTRL_CNTRLTYPE_ADMIN" + +}; +.SH Constants +.IP "NVME_CTRL_CNTRLTYPE_IO" 12 +NVM I/O controller +.IP "NVME_CTRL_CNTRLTYPE_DISCOVERY" 12 +Discovery controller +.IP "NVME_CTRL_CNTRLTYPE_ADMIN" 12 +Admin controller diff --git a/doc/man/nvme_id_ctrl_cqes.2 b/doc/man/nvme_id_ctrl_cqes.2 new file mode 100644 index 0000000..88e1045 --- /dev/null +++ b/doc/man/nvme_id_ctrl_cqes.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_cqes" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_cqes \- Defines the required and maximum Completion Queue entry size when using the NVM Command Set. +.SH SYNOPSIS +enum nvme_id_ctrl_cqes { +.br +.BI " NVME_CTRL_CQES_MIN" +, +.br +.br +.BI " NVME_CTRL_CQES_MAX" + +}; +.SH Constants +.IP "NVME_CTRL_CQES_MIN" 12 +Mask to get the value of the required Completion Queue +Entry size when using the NVM Command Set. +.IP "NVME_CTRL_CQES_MAX" 12 +Mask to get the value of the maximum Completion Queue +entry size when using the NVM Command Set. diff --git a/doc/man/nvme_id_ctrl_ctratt.2 b/doc/man/nvme_id_ctrl_ctratt.2 new file mode 100644 index 0000000..fb5b19e --- /dev/null +++ b/doc/man/nvme_id_ctrl_ctratt.2 @@ -0,0 +1,110 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_ctratt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_ctratt \- Controller attributes +.SH SYNOPSIS +enum nvme_id_ctrl_ctratt { +.br +.BI " NVME_CTRL_CTRATT_128_ID" +, +.br +.br +.BI " NVME_CTRL_CTRATT_NON_OP_PSP" +, +.br +.br +.BI " NVME_CTRL_CTRATT_NVM_SETS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_READ_RECV_LVLS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_ENDURANCE_GROUPS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_PREDICTABLE_LAT" +, +.br +.br +.BI " NVME_CTRL_CTRATT_TBKAS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY" +, +.br +.br +.BI " NVME_CTRL_CTRATT_SQ_ASSOCIATIONS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_UUID_LIST" +, +.br +.br +.BI " NVME_CTRL_CTRATT_MDS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_FIXED_CAP" +, +.br +.br +.BI " NVME_CTRL_CTRATT_VARIABLE_CAP" +, +.br +.br +.BI " NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_DEL_NVM_SETS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_ELBAS" +, +.br +.br +.BI " NVME_CTRL_CTRATT_FDPS" + +}; +.SH Constants +.IP "NVME_CTRL_CTRATT_128_ID" 12 +128-bit Host Identifier supported +.IP "NVME_CTRL_CTRATT_NON_OP_PSP" 12 +Non-Operational Poser State Permissive Mode +supported +.IP "NVME_CTRL_CTRATT_NVM_SETS" 12 +NVM Sets supported +.IP "NVME_CTRL_CTRATT_READ_RECV_LVLS" 12 +Read Recovery Levels supported +.IP "NVME_CTRL_CTRATT_ENDURANCE_GROUPS" 12 +Endurance Groups supported +.IP "NVME_CTRL_CTRATT_PREDICTABLE_LAT" 12 +Predictable Latency Mode supported +.IP "NVME_CTRL_CTRATT_TBKAS" 12 +Traffic Based Keep Alive Support +.IP "NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY" 12 +Namespace Granularity reporting +supported +.IP "NVME_CTRL_CTRATT_SQ_ASSOCIATIONS" 12 +SQ Associations supported +.IP "NVME_CTRL_CTRATT_UUID_LIST" 12 +UUID List reporting supported +.IP "NVME_CTRL_CTRATT_MDS" 12 +Multi-Domain Subsystem supported +.IP "NVME_CTRL_CTRATT_FIXED_CAP" 12 +Fixed Capacity Management supported +.IP "NVME_CTRL_CTRATT_VARIABLE_CAP" 12 +Variable Capacity Management supported +.IP "NVME_CTRL_CTRATT_DEL_ENDURANCE_GROUPS" 12 +Delete Endurance Groups supported +.IP "NVME_CTRL_CTRATT_DEL_NVM_SETS" 12 +Delete NVM Sets supported +.IP "NVME_CTRL_CTRATT_ELBAS" 12 +Extended LBA Formats supported +.IP "NVME_CTRL_CTRATT_FDPS" 12 +Flexible Data Placement supported diff --git a/doc/man/nvme_id_ctrl_dctype.2 b/doc/man/nvme_id_ctrl_dctype.2 new file mode 100644 index 0000000..84e8eac --- /dev/null +++ b/doc/man/nvme_id_ctrl_dctype.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_dctype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_dctype \- Discovery Controller types +.SH SYNOPSIS +enum nvme_id_ctrl_dctype { +.br +.BI " NVME_CTRL_DCTYPE_NOT_REPORTED" +, +.br +.br +.BI " NVME_CTRL_DCTYPE_DDC" +, +.br +.br +.BI " NVME_CTRL_DCTYPE_CDC" + +}; +.SH Constants +.IP "NVME_CTRL_DCTYPE_NOT_REPORTED" 12 +Not reported (I/O, Admin, and pre-TP8010) +.IP "NVME_CTRL_DCTYPE_DDC" 12 +Direct Discovery controller +.IP "NVME_CTRL_DCTYPE_CDC" 12 +Central Discovery controller diff --git a/doc/man/nvme_id_ctrl_dsto.2 b/doc/man/nvme_id_ctrl_dsto.2 new file mode 100644 index 0000000..5cb40c6 --- /dev/null +++ b/doc/man/nvme_id_ctrl_dsto.2 @@ -0,0 +1,13 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_dsto" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_dsto \- Flags indicating the optional Device Self-test command or operation behaviors supported by the controller or NVM subsystem. +.SH SYNOPSIS +enum nvme_id_ctrl_dsto { +.br +.BI " NVME_CTRL_DSTO_ONE_DST" + +}; +.SH Constants +.IP "NVME_CTRL_DSTO_ONE_DST" 12 +If set, then the NVM subsystem supports only one +device self-test operation in progress at a time. diff --git a/doc/man/nvme_id_ctrl_fcatt.2 b/doc/man/nvme_id_ctrl_fcatt.2 new file mode 100644 index 0000000..ed96f39 --- /dev/null +++ b/doc/man/nvme_id_ctrl_fcatt.2 @@ -0,0 +1,14 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_fcatt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_fcatt \- This field indicates attributes of the controller that are specific to NVMe over Fabrics. +.SH SYNOPSIS +enum nvme_id_ctrl_fcatt { +.br +.BI " NVME_CTRL_FCATT_DYNAMIC" + +}; +.SH Constants +.IP "NVME_CTRL_FCATT_DYNAMIC" 12 +If cleared, then the NVM subsystem uses a dynamic +controller model. If set, then the NVM subsystem +uses a static controller model. diff --git a/doc/man/nvme_id_ctrl_fna.2 b/doc/man/nvme_id_ctrl_fna.2 new file mode 100644 index 0000000..4356601 --- /dev/null +++ b/doc/man/nvme_id_ctrl_fna.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_fna" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_fna \- This field indicates attributes for the Format NVM command. +.SH SYNOPSIS +enum nvme_id_ctrl_fna { +.br +.BI " NVME_CTRL_FNA_FMT_ALL_NAMESPACES" +, +.br +.br +.BI " NVME_CTRL_FNA_SEC_ALL_NAMESPACES" +, +.br +.br +.BI " NVME_CTRL_FNA_CRYPTO_ERASE" +, +.br +.br +.BI " NVME_CTRL_FNA_NSID_FFFFFFFF" + +}; +.SH Constants +.IP "NVME_CTRL_FNA_FMT_ALL_NAMESPACES" 12 +If set, then all namespaces in an NVM +subsystem shall be configured with the +same attributes and a format (excluding +secure erase) of any namespace results in +a format of all namespaces in an NVM +subsystem. If cleared, then the +controller supports format on a per +namespace basis. +.IP "NVME_CTRL_FNA_SEC_ALL_NAMESPACES" 12 +If set, then any secure erase performed +as part of a format operation results in +a secure erase of all namespaces in the +NVM subsystem. If cleared, then any +secure erase performed as part of a +format results in a secure erase of the +particular namespace specified. +.IP "NVME_CTRL_FNA_CRYPTO_ERASE" 12 +If set, then cryptographic erase is +supported. If cleared, then cryptographic +erase is not supported. +.IP "NVME_CTRL_FNA_NSID_FFFFFFFF" 12 +If set, then format does not support +nsid value set to FFFFFFFFh. If cleared, +format supports nsid value set to +FFFFFFFFh. diff --git a/doc/man/nvme_id_ctrl_frmw.2 b/doc/man/nvme_id_ctrl_frmw.2 new file mode 100644 index 0000000..064ee86 --- /dev/null +++ b/doc/man/nvme_id_ctrl_frmw.2 @@ -0,0 +1,34 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_frmw" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_frmw \- Flags and values indicates capabilities regarding firmware updates from &struct nvme_id_ctrl.frmw. +.SH SYNOPSIS +enum nvme_id_ctrl_frmw { +.br +.BI " NVME_CTRL_FRMW_1ST_RO" +, +.br +.br +.BI " NVME_CTRL_FRMW_NR_SLOTS" +, +.br +.br +.BI " NVME_CTRL_FRMW_FW_ACT_NO_RESET" +, +.br +.br +.BI " NVME_CTRL_FRMW_MP_UP_DETECTION" + +}; +.SH Constants +.IP "NVME_CTRL_FRMW_1ST_RO" 12 +If set, the first firmware slot is readonly +.IP "NVME_CTRL_FRMW_NR_SLOTS" 12 +Mask to get the value of the number of +firmware slots that the controller supports. +.IP "NVME_CTRL_FRMW_FW_ACT_NO_RESET" 12 +If set, the controller supports firmware +activation without a reset. +.IP "NVME_CTRL_FRMW_MP_UP_DETECTION" 12 +If set, the controller is able to detect +overlapping firmware/boot partition +image update. diff --git a/doc/man/nvme_id_ctrl_fuses.2 b/doc/man/nvme_id_ctrl_fuses.2 new file mode 100644 index 0000000..7abf42e --- /dev/null +++ b/doc/man/nvme_id_ctrl_fuses.2 @@ -0,0 +1,13 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_fuses" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_fuses \- This field indicates the fused operations that the controller supports. +.SH SYNOPSIS +enum nvme_id_ctrl_fuses { +.br +.BI " NVME_CTRL_FUSES_COMPARE_AND_WRITE" + +}; +.SH Constants +.IP "NVME_CTRL_FUSES_COMPARE_AND_WRITE" 12 +If set, then the controller supports the +Compare and Write fused operation. diff --git a/doc/man/nvme_id_ctrl_hctm.2 b/doc/man/nvme_id_ctrl_hctm.2 new file mode 100644 index 0000000..ae1e293 --- /dev/null +++ b/doc/man/nvme_id_ctrl_hctm.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_hctm" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_hctm \- Flags indicate the attributes of the host controlled thermal management feature +.SH SYNOPSIS +enum nvme_id_ctrl_hctm { +.br +.BI " NVME_CTRL_HCTMA_HCTM" + +}; +.SH Constants +.IP "NVME_CTRL_HCTMA_HCTM" 12 +then the controller supports host controlled thermal +management, and the Set Features command and Get +Features command with the Feature Identifier field +set to NVME_FEAT_FID_HCTM. diff --git a/doc/man/nvme_id_ctrl_lpa.2 b/doc/man/nvme_id_ctrl_lpa.2 new file mode 100644 index 0000000..24671ea --- /dev/null +++ b/doc/man/nvme_id_ctrl_lpa.2 @@ -0,0 +1,65 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_lpa" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_lpa \- Flags indicating optional attributes for log pages that are accessed via the Get Log Page command. +.SH SYNOPSIS +enum nvme_id_ctrl_lpa { +.br +.BI " NVME_CTRL_LPA_SMART_PER_NS" +, +.br +.br +.BI " NVME_CTRL_LPA_CMD_EFFECTS" +, +.br +.br +.BI " NVME_CTRL_LPA_EXTENDED" +, +.br +.br +.BI " NVME_CTRL_LPA_TELEMETRY" +, +.br +.br +.BI " NVME_CTRL_LPA_PERSETENT_EVENT" +, +.br +.br +.BI " NVME_CTRL_LPA_LI0_LI5_LI12_LI13" +, +.br +.br +.BI " NVME_CTRL_LPA_DA4_TELEMETRY" + +}; +.SH Constants +.IP "NVME_CTRL_LPA_SMART_PER_NS" 12 +If set, controller supports SMART/Health log +page on a per namespace basis. +.IP "NVME_CTRL_LPA_CMD_EFFECTS" 12 +If Set, the controller supports the commands +supported and effects log page. +.IP "NVME_CTRL_LPA_EXTENDED" 12 +If set, the controller supports extended data +for log page command including extended number +of dwords and log page offset fields. +.IP "NVME_CTRL_LPA_TELEMETRY" 12 +If set, the controller supports the telemetry +host-initiated and telemetry controller-initiated +log pages and sending telemetry log notices. +.IP "NVME_CTRL_LPA_PERSETENT_EVENT" 12 +If set, the controller supports +persistent event log. +.IP "NVME_CTRL_LPA_LI0_LI5_LI12_LI13" 12 +If set, the controller supports +- log pages log page. +- returning scope of each command in +commands supported and effects log +page. +- feature identifiers supported and +effects log page. +- NVMe-MI commands supported and +effects log page. +.IP "NVME_CTRL_LPA_DA4_TELEMETRY" 12 +If set, the controller supports data +area 4 for telemetry host-initiated and +telemetry. diff --git a/doc/man/nvme_id_ctrl_mec.2 b/doc/man/nvme_id_ctrl_mec.2 new file mode 100644 index 0000000..9c536ed --- /dev/null +++ b/doc/man/nvme_id_ctrl_mec.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_mec" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_mec \- Flags indicating the capabilities of the Management Endpoint in the Controller, &struct nvme_id_ctrl.mec. +.SH SYNOPSIS +enum nvme_id_ctrl_mec { +.br +.BI " NVME_CTRL_MEC_SMBUSME" +, +.br +.br +.BI " NVME_CTRL_MEC_PCIEME" + +}; +.SH Constants +.IP "NVME_CTRL_MEC_SMBUSME" 12 +If set, then the NVM Subsystem contains a Management +Endpoint on an SMBus/I2C port. +.IP "NVME_CTRL_MEC_PCIEME" 12 +If set, then the NVM Subsystem contains a Management +Endpoint on a PCIe port. diff --git a/doc/man/nvme_id_ctrl_nvm.2 b/doc/man/nvme_id_ctrl_nvm.2 new file mode 100644 index 0000000..42cb097 --- /dev/null +++ b/doc/man/nvme_id_ctrl_nvm.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_id_ctrl_nvm" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_ctrl_nvm \- I/O Command Set Specific Identify Controller data structure +.SH SYNOPSIS +struct nvme_id_ctrl_nvm { +.br +.BI " __u8 vsl;" +.br +.BI " __u8 wzsl;" +.br +.BI " __u8 wusl;" +.br +.BI " __u8 dmrl;" +.br +.BI " __u32 dmrsl;" +.br +.BI " __u64 dmsl;" +.br +.BI " __u8 rsvd16[4080];" +.br +.BI " +}; +.br + +.SH Members +.IP "vsl" 12 +Verify Size Limit +.IP "wzsl" 12 +Write Zeroes Size Limit +.IP "wusl" 12 +Write Uncorrectable Size Limit +.IP "dmrl" 12 +Dataset Management Ranges Limit +.IP "dmrsl" 12 +Dataset Management Range Size Limit +.IP "dmsl" 12 +Dataset Management Size Limit +.IP "rsvd16" 12 +reserved diff --git a/doc/man/nvme_id_ctrl_nvmsr.2 b/doc/man/nvme_id_ctrl_nvmsr.2 new file mode 100644 index 0000000..e0ced53 --- /dev/null +++ b/doc/man/nvme_id_ctrl_nvmsr.2 @@ -0,0 +1,22 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_nvmsr" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_nvmsr \- This field reports information associated with the NVM Subsystem, see &struct nvme_id_ctrl.nvmsr. +.SH SYNOPSIS +enum nvme_id_ctrl_nvmsr { +.br +.BI " NVME_CTRL_NVMSR_NVMESD" +, +.br +.br +.BI " NVME_CTRL_NVMSR_NVMEE" + +}; +.SH Constants +.IP "NVME_CTRL_NVMSR_NVMESD" 12 +If set, then the NVM Subsystem is part of an NVMe +Storage Device; if cleared, then the NVM Subsystem +is not part of an NVMe Storage Device. +.IP "NVME_CTRL_NVMSR_NVMEE" 12 +If set’, then the NVM Subsystem is part of an NVMe +Enclosure; if cleared, then the NVM Subsystem is +not part of an NVMe Enclosure. diff --git a/doc/man/nvme_id_ctrl_nvscc.2 b/doc/man/nvme_id_ctrl_nvscc.2 new file mode 100644 index 0000000..670e9a2 --- /dev/null +++ b/doc/man/nvme_id_ctrl_nvscc.2 @@ -0,0 +1,13 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_nvscc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_nvscc \- This field indicates the configuration settings for NVM Vendor Specific command handling. +.SH SYNOPSIS +enum nvme_id_ctrl_nvscc { +.br +.BI " NVME_CTRL_NVSCC_FMT" + +}; +.SH Constants +.IP "NVME_CTRL_NVSCC_FMT" 12 +If set, all NVM Vendor Specific Commands use the +format with NDT and NDM fields. diff --git a/doc/man/nvme_id_ctrl_nwpc.2 b/doc/man/nvme_id_ctrl_nwpc.2 new file mode 100644 index 0000000..f17eba6 --- /dev/null +++ b/doc/man/nvme_id_ctrl_nwpc.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_nwpc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_nwpc \- This field indicates the optional namespace write protection capabilities supported by the controller. +.SH SYNOPSIS +enum nvme_id_ctrl_nwpc { +.br +.BI " NVME_CTRL_NWPC_WRITE_PROTECT" +, +.br +.br +.BI " NVME_CTRL_NWPC_WRITE_PROTECT_POWER_CYCLE" +, +.br +.br +.BI " NVME_CTRL_NWPC_WRITE_PROTECT_PERMANENT" + +}; +.SH Constants +.IP "NVME_CTRL_NWPC_WRITE_PROTECT" 12 +If set, then the controller shall +support the No Write Protect and +Write Protect namespace write +protection states and may support +the Write Protect Until Power +Cycle state and Permanent Write +Protect namespace write +protection states. +.IP "NVME_CTRL_NWPC_WRITE_PROTECT_POWER_CYCLE" 12 +If set, then the controller +supports the Write Protect Until +Power Cycle state. +.IP "NVME_CTRL_NWPC_WRITE_PROTECT_PERMANENT" 12 +If set, then the controller +supports the Permanent Write +Protect state. diff --git a/doc/man/nvme_id_ctrl_oacs.2 b/doc/man/nvme_id_ctrl_oacs.2 new file mode 100644 index 0000000..d1915fd --- /dev/null +++ b/doc/man/nvme_id_ctrl_oacs.2 @@ -0,0 +1,84 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_oacs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_oacs \- Flags indicating the optional Admin commands and features supported by the controller, see &struct nvme_id_ctrl.oacs. +.SH SYNOPSIS +enum nvme_id_ctrl_oacs { +.br +.BI " NVME_CTRL_OACS_SECURITY" +, +.br +.br +.BI " NVME_CTRL_OACS_FORMAT" +, +.br +.br +.BI " NVME_CTRL_OACS_FW" +, +.br +.br +.BI " NVME_CTRL_OACS_NS_MGMT" +, +.br +.br +.BI " NVME_CTRL_OACS_SELF_TEST" +, +.br +.br +.BI " NVME_CTRL_OACS_DIRECTIVES" +, +.br +.br +.BI " NVME_CTRL_OACS_NVME_MI" +, +.br +.br +.BI " NVME_CTRL_OACS_VIRT_MGMT" +, +.br +.br +.BI " NVME_CTRL_OACS_DBBUF_CFG" +, +.br +.br +.BI " NVME_CTRL_OACS_LBA_STATUS" +, +.br +.br +.BI " NVME_CTRL_OACS_CMD_FEAT_LD" + +}; +.SH Constants +.IP "NVME_CTRL_OACS_SECURITY" 12 +If set, then the controller supports the +Security Send and Security Receive commands. +.IP "NVME_CTRL_OACS_FORMAT" 12 +If set then the controller supports the Format +NVM command. +.IP "NVME_CTRL_OACS_FW" 12 +If set, then the controller supports the +Firmware Commit and Firmware Image Download commands. +.IP "NVME_CTRL_OACS_NS_MGMT" 12 +If set, then the controller supports the +Namespace Management capability +.IP "NVME_CTRL_OACS_SELF_TEST" 12 +If set, then the controller supports the Device +Self-test command. +.IP "NVME_CTRL_OACS_DIRECTIVES" 12 +If set, then the controller supports Directives +and the Directive Send and Directive Receive +commands. +.IP "NVME_CTRL_OACS_NVME_MI" 12 +If set, then the controller supports the NVMe-MI +Send and NVMe-MI Receive commands. +.IP "NVME_CTRL_OACS_VIRT_MGMT" 12 +If set, then the controller supports the +Virtualization Management command. +.IP "NVME_CTRL_OACS_DBBUF_CFG" 12 +If set, then the controller supports the +Doorbell Buffer Config command. +.IP "NVME_CTRL_OACS_LBA_STATUS" 12 +If set, then the controller supports the Get LBA +Status capability. +.IP "NVME_CTRL_OACS_CMD_FEAT_LD" 12 +If set, then the controller supports the command +and feature lockdown capability. diff --git a/doc/man/nvme_id_ctrl_oaes.2 b/doc/man/nvme_id_ctrl_oaes.2 new file mode 100644 index 0000000..dc536d4 --- /dev/null +++ b/doc/man/nvme_id_ctrl_oaes.2 @@ -0,0 +1,62 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_oaes" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_oaes \- Optional Asynchronous Events Supported +.SH SYNOPSIS +enum nvme_id_ctrl_oaes { +.br +.BI " NVME_CTRL_OAES_NA" +, +.br +.br +.BI " NVME_CTRL_OAES_FA" +, +.br +.br +.BI " NVME_CTRL_OAES_ANA" +, +.br +.br +.BI " NVME_CTRL_OAES_PLEA" +, +.br +.br +.BI " NVME_CTRL_OAES_LBAS" +, +.br +.br +.BI " NVME_CTRL_OAES_EGE" +, +.br +.br +.BI " NVME_CTRL_OAES_NS" +, +.br +.br +.BI " NVME_CTRL_OAES_ZD" +, +.br +.br +.BI " NVME_CTRL_OAES_DL" + +}; +.SH Constants +.IP "NVME_CTRL_OAES_NA" 12 +Namespace Attribute Notices event supported +.IP "NVME_CTRL_OAES_FA" 12 +Firmware Activation Notices event supported +.IP "NVME_CTRL_OAES_ANA" 12 +ANA Change Notices supported +.IP "NVME_CTRL_OAES_PLEA" 12 +Predictable Latency Event Aggregate Log +Change Notices event supported +.IP "NVME_CTRL_OAES_LBAS" 12 +LBA Status Information Notices event supported +.IP "NVME_CTRL_OAES_EGE" 12 +Endurance Group Events Aggregate Log Change +Notices event supported +.IP "NVME_CTRL_OAES_NS" 12 +Normal NVM Subsystem Shutdown event supported +.IP "NVME_CTRL_OAES_ZD" 12 +Zone Descriptor Change Notifications supported +.IP "NVME_CTRL_OAES_DL" 12 +Discover Log Page Change Notifications supported diff --git a/doc/man/nvme_id_ctrl_ofcs.2 b/doc/man/nvme_id_ctrl_ofcs.2 new file mode 100644 index 0000000..3528e37 --- /dev/null +++ b/doc/man/nvme_id_ctrl_ofcs.2 @@ -0,0 +1,14 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_ofcs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_ofcs \- Indicate whether the controller supports optional fabric commands. +.SH SYNOPSIS +enum nvme_id_ctrl_ofcs { +.br +.BI " NVME_CTRL_OFCS_DISCONNECT" + +}; +.SH Constants +.IP "NVME_CTRL_OFCS_DISCONNECT" 12 +If set, then the controller supports the +Disconnect command and deletion of individual +I/O Queues. diff --git a/doc/man/nvme_id_ctrl_oncs.2 b/doc/man/nvme_id_ctrl_oncs.2 new file mode 100644 index 0000000..f788b4d --- /dev/null +++ b/doc/man/nvme_id_ctrl_oncs.2 @@ -0,0 +1,72 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_oncs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_oncs \- This field indicates the optional NVM commands and features supported by the controller. +.SH SYNOPSIS +enum nvme_id_ctrl_oncs { +.br +.BI " NVME_CTRL_ONCS_COMPARE" +, +.br +.br +.BI " NVME_CTRL_ONCS_WRITE_UNCORRECTABLE" +, +.br +.br +.BI " NVME_CTRL_ONCS_DSM" +, +.br +.br +.BI " NVME_CTRL_ONCS_WRITE_ZEROES" +, +.br +.br +.BI " NVME_CTRL_ONCS_SAVE_FEATURES" +, +.br +.br +.BI " NVME_CTRL_ONCS_RESERVATIONS" +, +.br +.br +.BI " NVME_CTRL_ONCS_TIMESTAMP" +, +.br +.br +.BI " NVME_CTRL_ONCS_VERIFY" +, +.br +.br +.BI " NVME_CTRL_ONCS_COPY" + +}; +.SH Constants +.IP "NVME_CTRL_ONCS_COMPARE" 12 +If set, then the controller supports +the Compare command. +.IP "NVME_CTRL_ONCS_WRITE_UNCORRECTABLE" 12 +If set, then the controller supports +the Write Uncorrectable command. +.IP "NVME_CTRL_ONCS_DSM" 12 +If set, then the controller supports +the Dataset Management command. +.IP "NVME_CTRL_ONCS_WRITE_ZEROES" 12 +If set, then the controller supports +the Write Zeroes command. +.IP "NVME_CTRL_ONCS_SAVE_FEATURES" 12 +If set, then the controller supports +the Save field set to a non-zero value +in the Set Features command and the +Select field set to a non-zero value in +the Get Features command. +.IP "NVME_CTRL_ONCS_RESERVATIONS" 12 +If set, then the controller supports +reservations. +.IP "NVME_CTRL_ONCS_TIMESTAMP" 12 +If set, then the controller supports +the Timestamp feature. +.IP "NVME_CTRL_ONCS_VERIFY" 12 +If set, then the controller supports +the Verify command. +.IP "NVME_CTRL_ONCS_COPY" 12 +If set, then the controller supports +the copy command. diff --git a/doc/man/nvme_id_ctrl_rpmbs.2 b/doc/man/nvme_id_ctrl_rpmbs.2 new file mode 100644 index 0000000..501fccc --- /dev/null +++ b/doc/man/nvme_id_ctrl_rpmbs.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_rpmbs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_rpmbs \- This field indicates if the controller supports one or more Replay Protected Memory Blocks, from &struct nvme_id_ctrl.rpmbs. +.SH SYNOPSIS +enum nvme_id_ctrl_rpmbs { +.br +.BI " NVME_CTRL_RPMBS_NR_UNITS" +, +.br +.br +.BI " NVME_CTRL_RPMBS_AUTH_METHOD" +, +.br +.br +.BI " NVME_CTRL_RPMBS_TOTAL_SIZE" +, +.br +.br +.BI " NVME_CTRL_RPMBS_ACCESS_SIZE" + +}; +.SH Constants +.IP "NVME_CTRL_RPMBS_NR_UNITS" 12 +Mask to get the value of the Number of RPMB Units +.IP "NVME_CTRL_RPMBS_AUTH_METHOD" 12 +Mask to get the value of the Authentication Method +.IP "NVME_CTRL_RPMBS_TOTAL_SIZE" 12 +Mask to get the value of Total Size +.IP "NVME_CTRL_RPMBS_ACCESS_SIZE" 12 +Mask to get the value of Access Size diff --git a/doc/man/nvme_id_ctrl_sanicap.2 b/doc/man/nvme_id_ctrl_sanicap.2 new file mode 100644 index 0000000..9c53643 --- /dev/null +++ b/doc/man/nvme_id_ctrl_sanicap.2 @@ -0,0 +1,44 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_sanicap" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_sanicap \- Indicates attributes for sanitize operations. +.SH SYNOPSIS +enum nvme_id_ctrl_sanicap { +.br +.BI " NVME_CTRL_SANICAP_CES" +, +.br +.br +.BI " NVME_CTRL_SANICAP_BES" +, +.br +.br +.BI " NVME_CTRL_SANICAP_OWS" +, +.br +.br +.BI " NVME_CTRL_SANICAP_NDI" +, +.br +.br +.BI " NVME_CTRL_SANICAP_NODMMAS" + +}; +.SH Constants +.IP "NVME_CTRL_SANICAP_CES" 12 +Crypto Erase Support. If set, then the +controller supports the Crypto Erase sanitize operation. +.IP "NVME_CTRL_SANICAP_BES" 12 +Block Erase Support. If set, then the controller +supports the Block Erase sanitize operation. +.IP "NVME_CTRL_SANICAP_OWS" 12 +Overwrite Support. If set, then the controller +supports the Overwrite sanitize operation. +.IP "NVME_CTRL_SANICAP_NDI" 12 +No-Deallocate Inhibited. If set and the No- +Deallocate Response Mode bit is set, then the +controller deallocates after the sanitize +operation even if the No-Deallocate After +Sanitize bit is set in a Sanitize command. +.IP "NVME_CTRL_SANICAP_NODMMAS" 12 +No-Deallocate Modifies Media After Sanitize, +mask to extract value. diff --git a/doc/man/nvme_id_ctrl_sgls.2 b/doc/man/nvme_id_ctrl_sgls.2 new file mode 100644 index 0000000..10809b8 --- /dev/null +++ b/doc/man/nvme_id_ctrl_sgls.2 @@ -0,0 +1,46 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_sgls" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_sgls \- This field indicates if SGLs are supported for the NVM Command Set and the particular SGL types supported. +.SH SYNOPSIS +enum nvme_id_ctrl_sgls { +.br +.BI " NVME_CTRL_SGLS_SUPPORTED" +, +.br +.br +.BI " NVME_CTRL_SGLS_KEYED" +, +.br +.br +.BI " NVME_CTRL_SGLS_BIT_BUCKET" +, +.br +.br +.BI " NVME_CTRL_SGLS_MPTR_BYTE_ALIGNED" +, +.br +.br +.BI " NVME_CTRL_SGLS_OVERSIZE" +, +.br +.br +.BI " NVME_CTRL_SGLS_MPTR_SGL" +, +.br +.br +.BI " NVME_CTRL_SGLS_OFFSET" +, +.br +.br +.BI " NVME_CTRL_SGLS_TPORT" + +}; +.SH Constants +.IP "NVME_CTRL_SGLS_SUPPORTED" 12 +.IP "NVME_CTRL_SGLS_KEYED" 12 +.IP "NVME_CTRL_SGLS_BIT_BUCKET" 12 +.IP "NVME_CTRL_SGLS_MPTR_BYTE_ALIGNED" 12 +.IP "NVME_CTRL_SGLS_OVERSIZE" 12 +.IP "NVME_CTRL_SGLS_MPTR_SGL" 12 +.IP "NVME_CTRL_SGLS_OFFSET" 12 +.IP "NVME_CTRL_SGLS_TPORT" 12 diff --git a/doc/man/nvme_id_ctrl_sqes.2 b/doc/man/nvme_id_ctrl_sqes.2 new file mode 100644 index 0000000..b50dd1b --- /dev/null +++ b/doc/man/nvme_id_ctrl_sqes.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_sqes" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_sqes \- Defines the required and maximum Submission Queue entry size when using the NVM Command Set. +.SH SYNOPSIS +enum nvme_id_ctrl_sqes { +.br +.BI " NVME_CTRL_SQES_MIN" +, +.br +.br +.BI " NVME_CTRL_SQES_MAX" + +}; +.SH Constants +.IP "NVME_CTRL_SQES_MIN" 12 +Mask to get the value of the required Submission Queue +Entry size when using the NVM Command Set. +.IP "NVME_CTRL_SQES_MAX" 12 +Mask to get the value of the maximum Submission Queue +entry size when using the NVM Command Set. diff --git a/doc/man/nvme_id_ctrl_vwc.2 b/doc/man/nvme_id_ctrl_vwc.2 new file mode 100644 index 0000000..bc65e6d --- /dev/null +++ b/doc/man/nvme_id_ctrl_vwc.2 @@ -0,0 +1,22 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_vwc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_vwc \- Volatile write cache +.SH SYNOPSIS +enum nvme_id_ctrl_vwc { +.br +.BI " NVME_CTRL_VWC_PRESENT" +, +.br +.br +.BI " NVME_CTRL_VWC_FLUSH" + +}; +.SH Constants +.IP "NVME_CTRL_VWC_PRESENT" 12 +If set, indicates a volatile write cache is present. +If a volatile write cache is present, then the host +controls whether the volatile write cache is enabled +with a Set Features command specifying the value +NVME_FEAT_FID_VOLATILE_WC. +.IP "NVME_CTRL_VWC_FLUSH" 12 +Mask to get the value of the flush command behavior. diff --git a/doc/man/nvme_id_ctrl_vwci.2 b/doc/man/nvme_id_ctrl_vwci.2 new file mode 100644 index 0000000..dd6d327 --- /dev/null +++ b/doc/man/nvme_id_ctrl_vwci.2 @@ -0,0 +1,28 @@ +.TH "libnvme" 9 "enum nvme_id_ctrl_vwci" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ctrl_vwci \- This field indicates information about remaining number of times that VPD contents are able to be updated using the VPD Write command, see &struct nvme_id_ctrl.vwci. +.SH SYNOPSIS +enum nvme_id_ctrl_vwci { +.br +.BI " NVME_CTRL_VWCI_VWCR" +, +.br +.br +.BI " NVME_CTRL_VWCI_VWCRV" + +}; +.SH Constants +.IP "NVME_CTRL_VWCI_VWCR" 12 +Mask to get value of VPD Write Cycles Remaining. If +the VPD Write Cycle Remaining Valid bit is set, then +this field contains a value indicating the remaining +number of times that VPD contents are able to be +updated using the VPD Write command. If this field is +set to 7Fh, then the remaining number of times that +VPD contents are able to be updated using the VPD +Write command is greater than or equal to 7Fh. +.IP "NVME_CTRL_VWCI_VWCRV" 12 +VPD Write Cycle Remaining Valid. If this bit is set, +then the VPD Write Cycle Remaining field is valid. If +this bit is cleared, then the VPD Write Cycles +Remaining field is invalid and cleared to 0h. diff --git a/doc/man/nvme_id_directives.2 b/doc/man/nvme_id_directives.2 new file mode 100644 index 0000000..d4e4b8a --- /dev/null +++ b/doc/man/nvme_id_directives.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_id_directives" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_directives \- Identify Directive - Return Parameters Data Structure +.SH SYNOPSIS +struct nvme_id_directives { +.br +.BI " __u8 supported[32];" +.br +.BI " __u8 enabled[32];" +.br +.BI " __u8 rsvd64[4032];" +.br +.BI " +}; +.br + +.SH Members +.IP "supported" 12 +Identify directive is supported +.IP "enabled" 12 +Identify directive is Enabled +.IP "rsvd64" 12 +Reserved diff --git a/doc/man/nvme_id_domain_attr.2 b/doc/man/nvme_id_domain_attr.2 new file mode 100644 index 0000000..2820669 --- /dev/null +++ b/doc/man/nvme_id_domain_attr.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_id_domain_attr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_domain_attr \- Domain Attributes Entry +.SH SYNOPSIS +struct nvme_id_domain_attr { +.br +.BI " __le16 dom_id;" +.br +.BI " __u8 rsvd2[14];" +.br +.BI " __u8 dom_cap[16];" +.br +.BI " __u8 unalloc_dom_cap[16];" +.br +.BI " __u8 max_egrp_dom_cap[16];" +.br +.BI " __u8 rsvd64[64];" +.br +.BI " +}; +.br + +.SH Members +.IP "dom_id" 12 +Domain Identifier +.IP "rsvd2" 12 +Reserved +.IP "dom_cap" 12 +Total Domain Capacity +.IP "unalloc_dom_cap" 12 +Unallocated Domain Capacity +.IP "max_egrp_dom_cap" 12 +Max Endurance Group Domain Capacity +.IP "rsvd64" 12 +Reserved diff --git a/doc/man/nvme_id_domain_list.2 b/doc/man/nvme_id_domain_list.2 new file mode 100644 index 0000000..64c0e3f --- /dev/null +++ b/doc/man/nvme_id_domain_list.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_id_domain_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_domain_list \- Domain List +.SH SYNOPSIS +struct nvme_id_domain_list { +.br +.BI " __u8 num;" +.br +.BI " __u8 rsvd[127];" +.br +.BI " struct nvme_id_domain_attr domain_attr[NVME_ID_DOMAIN_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "num" 12 +Number of domain attributes +.IP "rsvd" 12 +Reserved +.IP "domain_attr" 12 +List of domain attributes diff --git a/doc/man/nvme_id_endurance_group_list.2 b/doc/man/nvme_id_endurance_group_list.2 new file mode 100644 index 0000000..12128ef --- /dev/null +++ b/doc/man/nvme_id_endurance_group_list.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_id_endurance_group_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_endurance_group_list \- Endurance Group List +.SH SYNOPSIS +struct nvme_id_endurance_group_list { +.br +.BI " __le16 num;" +.br +.BI " __le16 identifier[NVME_ID_ENDURANCE_GROUP_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "num" 12 +Number of Identifiers +.IP "identifier" 12 +Endurance Group Identifier diff --git a/doc/man/nvme_id_independent_id_ns.2 b/doc/man/nvme_id_independent_id_ns.2 new file mode 100644 index 0000000..06de59c --- /dev/null +++ b/doc/man/nvme_id_independent_id_ns.2 @@ -0,0 +1,56 @@ +.TH "libnvme" 9 "struct nvme_id_independent_id_ns" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_independent_id_ns \- Identify - I/O Command Set Independent Identify Namespace Data Structure +.SH SYNOPSIS +struct nvme_id_independent_id_ns { +.br +.BI " __u8 nsfeat;" +.br +.BI " __u8 nmic;" +.br +.BI " __u8 rescap;" +.br +.BI " __u8 fpi;" +.br +.BI " __le32 anagrpid;" +.br +.BI " __u8 nsattr;" +.br +.BI " __u8 rsvd9;" +.br +.BI " __le16 nvmsetid;" +.br +.BI " __le16 endgid;" +.br +.BI " __u8 nstat;" +.br +.BI " __u8 rsvd15[4081];" +.br +.BI " +}; +.br + +.SH Members +.IP "nsfeat" 12 +common namespace features +.IP "nmic" 12 +Namespace Multi-path I/O and Namespace +Sharing Capabilities +.IP "rescap" 12 +Reservation Capabilities +.IP "fpi" 12 +Format Progress Indicator +.IP "anagrpid" 12 +ANA Group Identifier +.IP "nsattr" 12 +Namespace Attributes +.IP "rsvd9" 12 +reserved +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "endgid" 12 +Endurance Group Identifier +.IP "nstat" 12 +Namespace Status +.IP "rsvd15" 12 +reserved diff --git a/doc/man/nvme_id_iocs.2 b/doc/man/nvme_id_iocs.2 new file mode 100644 index 0000000..6c31e0a --- /dev/null +++ b/doc/man/nvme_id_iocs.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "struct nvme_id_iocs" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_iocs \- NVMe Identify IO Command Set data structure +.SH SYNOPSIS +struct nvme_id_iocs { +.br +.BI " __u64 iocsc[512];" +.br +.BI " +}; +.br + +.SH Members +.IP "iocsc" 12 +List of supported IO Command Set Combination vectors diff --git a/doc/man/nvme_id_ns.2 b/doc/man/nvme_id_ns.2 new file mode 100644 index 0000000..8305252 --- /dev/null +++ b/doc/man/nvme_id_ns.2 @@ -0,0 +1,237 @@ +.TH "libnvme" 9 "struct nvme_id_ns" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_ns \- Identify Namespace data structure +.SH SYNOPSIS +struct nvme_id_ns { +.br +.BI " __le64 nsze;" +.br +.BI " __le64 ncap;" +.br +.BI " __le64 nuse;" +.br +.BI " __u8 nsfeat;" +.br +.BI " __u8 nlbaf;" +.br +.BI " __u8 flbas;" +.br +.BI " __u8 mc;" +.br +.BI " __u8 dpc;" +.br +.BI " __u8 dps;" +.br +.BI " __u8 nmic;" +.br +.BI " __u8 rescap;" +.br +.BI " __u8 fpi;" +.br +.BI " __u8 dlfeat;" +.br +.BI " __le16 nawun;" +.br +.BI " __le16 nawupf;" +.br +.BI " __le16 nacwu;" +.br +.BI " __le16 nabsn;" +.br +.BI " __le16 nabo;" +.br +.BI " __le16 nabspf;" +.br +.BI " __le16 noiob;" +.br +.BI " __u8 nvmcap[16];" +.br +.BI " __le16 npwg;" +.br +.BI " __le16 npwa;" +.br +.BI " __le16 npdg;" +.br +.BI " __le16 npda;" +.br +.BI " __le16 nows;" +.br +.BI " __le16 mssrl;" +.br +.BI " __le32 mcl;" +.br +.BI " __u8 msrc;" +.br +.BI " __u8 rsvd81;" +.br +.BI " __u8 nulbaf;" +.br +.BI " __u8 rsvd83[9];" +.br +.BI " __le32 anagrpid;" +.br +.BI " __u8 rsvd96[3];" +.br +.BI " __u8 nsattr;" +.br +.BI " __le16 nvmsetid;" +.br +.BI " __le16 endgid;" +.br +.BI " __u8 nguid[16];" +.br +.BI " __u8 eui64[8];" +.br +.BI " struct nvme_lbaf lbaf[64];" +.br +.BI " __le64 lbstm;" +.br +.BI " __u8 vs[3704];" +.br +.BI " +}; +.br + +.SH Members +.IP "nsze" 12 +Namespace Size indicates the total size of the namespace in +logical blocks. The number of logical blocks is based on the +formatted LBA size. +.IP "ncap" 12 +Namespace Capacity indicates the maximum number of logical blocks +that may be allocated in the namespace at any point in time. The +number of logical blocks is based on the formatted LBA size. +.IP "nuse" 12 +Namespace Utilization indicates the current number of logical +blocks allocated in the namespace. This field is smaller than or +equal to the Namespace Capacity. The number of logical blocks is +based on the formatted LBA size. +.IP "nsfeat" 12 +Namespace Features, see \fIenum nvme_id_nsfeat\fP. +.IP "nlbaf" 12 +Number of LBA Formats defines the number of supported LBA data +size and metadata size combinations supported by the namespace +and the highest possible index to \fIstruct nvme_id_ns\fP.lbaf. +.IP "flbas" 12 +Formatted LBA Size, see \fIenum nvme_id_ns_flbas\fP. +.IP "mc" 12 +Metadata Capabilities, see \fIenum nvme_id_ns_mc\fP. +.IP "dpc" 12 +End-to-end Data Protection Capabilities, see +\fIenum nvme_id_ns_dpc\fP. +.IP "dps" 12 +End-to-end Data Protection Type Settings, see +\fIenum nvme_id_ns_dps\fP. +.IP "nmic" 12 +Namespace Multi-path I/O and Namespace Sharing Capabilities, see +\fIenum nvme_id_ns_nmic\fP. +.IP "rescap" 12 +Reservation Capabilities, see \fIenum nvme_id_ns_rescap\fP. +.IP "fpi" 12 +Format Progress Indicator, see \fIenum nvme_nd_ns_fpi\fP. +.IP "dlfeat" 12 +Deallocate Logical Block Features, see \fIenum nvme_id_ns_dlfeat\fP. +.IP "nawun" 12 +Namespace Atomic Write Unit Normal indicates the +namespace specific size of the write operation guaranteed to be +written atomically to the NVM during normal operation. +.IP "nawupf" 12 +Namespace Atomic Write Unit Power Fail indicates the +namespace specific size of the write operation guaranteed to be +written atomically to the NVM during a power fail or error +condition. +.IP "nacwu" 12 +Namespace Atomic Compare & Write Unit indicates the namespace +specific size of the write operation guaranteed to be written +atomically to the NVM for a Compare and Write fused command. +.IP "nabsn" 12 +Namespace Atomic Boundary Size Normal indicates the atomic +boundary size for this namespace for the NAWUN value. This field +is specified in logical blocks. +.IP "nabo" 12 +Namespace Atomic Boundary Offset indicates the LBA on this +namespace where the first atomic boundary starts. +.IP "nabspf" 12 +Namespace Atomic Boundary Size Power Fail indicates the atomic +boundary size for this namespace specific to the Namespace Atomic +Write Unit Power Fail value. This field is specified in logical +blocks. +.IP "noiob" 12 +Namespace Optimal I/O Boundary indicates the optimal I/O boundary +for this namespace. This field is specified in logical blocks. +The host should construct Read and Write commands that do not +cross the I/O boundary to achieve optimal performance. +.IP "nvmcap" 12 +NVM Capacity indicates the total size of the NVM allocated to +this namespace. The value is in bytes. +.IP "npwg" 12 +Namespace Preferred Write Granularity indicates the smallest +recommended write granularity in logical blocks for this +namespace. This is a 0's based value. +.IP "npwa" 12 +Namespace Preferred Write Alignment indicates the recommended +write alignment in logical blocks for this namespace. This is a +0's based value. +.IP "npdg" 12 +Namespace Preferred Deallocate Granularity indicates the +recommended granularity in logical blocks for the Dataset +Management command with the Attribute - Deallocate bit. +.IP "npda" 12 +Namespace Preferred Deallocate Alignment indicates the +recommended alignment in logical blocks for the Dataset +Management command with the Attribute - Deallocate bit +.IP "nows" 12 +Namespace Optimal Write Size indicates the size in logical blocks +for optimal write performance for this namespace. This is a 0's +based value. +.IP "mssrl" 12 +Maximum Single Source Range Length indicates the maximum number +of logical blocks that may be specified in each valid Source Range +field of a Copy command. +.IP "mcl" 12 +Maximum Copy Length indicates the maximum number of logical +blocks that may be specified in a Copy command. +.IP "msrc" 12 +Maximum Source Range Count indicates the maximum number of Source +Range entries that may be used to specify source data in a Copy +command. This is a 0’s based value. +.IP "rsvd81" 12 +Reserved +.IP "nulbaf" 12 +Number of Unique Capability LBA Formats defines the number of +supported user data size and metadata size combinations supported +by the namespace that may not share the same capabilities. LBA +formats shall be allocated in order and packed sequentially. +.IP "rsvd83" 12 +Reserved +.IP "anagrpid" 12 +ANA Group Identifier indicates the ANA Group Identifier of the +ANA group of which the namespace is a member. +.IP "rsvd96" 12 +Reserved +.IP "nsattr" 12 +Namespace Attributes, see \fIenum nvme_id_ns_attr\fP. +.IP "nvmsetid" 12 +NVM Set Identifier indicates the NVM Set with which this +namespace is associated. +.IP "endgid" 12 +Endurance Group Identifier indicates the Endurance Group with +which this namespace is associated. +.IP "nguid" 12 +Namespace Globally Unique Identifier contains a 128-bit value +that is globally unique and assigned to the namespace when the +namespace is created. This field remains fixed throughout the +life of the namespace and is preserved across namespace and +controller operations +.IP "eui64" 12 +IEEE Extended Unique Identifier contains a 64-bit IEEE Extended +Unique Identifier (EUI-64) that is globally unique and assigned +to the namespace when the namespace is created. This field +remains fixed throughout the life of the namespace and is +preserved across namespace and controller operations +.IP "lbaf" 12 +LBA Format, see \fIstruct nvme_lbaf\fP. +.IP "lbstm" 12 +Logical Block Storage Tag Mask for end-to-end protection +.IP "vs" 12 +Vendor Specific diff --git a/doc/man/nvme_id_ns_attr.2 b/doc/man/nvme_id_ns_attr.2 new file mode 100644 index 0000000..010790e --- /dev/null +++ b/doc/man/nvme_id_ns_attr.2 @@ -0,0 +1,14 @@ +.TH "libnvme" 9 "enum nvme_id_ns_attr" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_attr \- Specifies attributes of the namespace. +.SH SYNOPSIS +enum nvme_id_ns_attr { +.br +.BI " NVME_NS_NSATTR_WRITE_PROTECTED" + +}; +.SH Constants +.IP "NVME_NS_NSATTR_WRITE_PROTECTED" 12 +If set, then the namespace is currently +write protected and all write access to the +namespace shall fail. diff --git a/doc/man/nvme_id_ns_dlfeat.2 b/doc/man/nvme_id_ns_dlfeat.2 new file mode 100644 index 0000000..382aff7 --- /dev/null +++ b/doc/man/nvme_id_ns_dlfeat.2 @@ -0,0 +1,50 @@ +.TH "libnvme" 9 "enum nvme_id_ns_dlfeat" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_dlfeat \- This field indicates information about features that affect deallocating logical blocks for this namespace. +.SH SYNOPSIS +enum nvme_id_ns_dlfeat { +.br +.BI " NVME_NS_DLFEAT_RB" +, +.br +.br +.BI " NVME_NS_DLFEAT_RB_NR" +, +.br +.br +.BI " NVME_NS_DLFEAT_RB_ALL_0S" +, +.br +.br +.BI " NVME_NS_DLFEAT_RB_ALL_FS" +, +.br +.br +.BI " NVME_NS_DLFEAT_WRITE_ZEROES" +, +.br +.br +.BI " NVME_NS_DLFEAT_CRC_GUARD" + +}; +.SH Constants +.IP "NVME_NS_DLFEAT_RB" 12 +Mask to get the value of the read behavior +.IP "NVME_NS_DLFEAT_RB_NR" 12 +Read behvaior is not reported +.IP "NVME_NS_DLFEAT_RB_ALL_0S" 12 +A deallocated logical block returns all bytes +cleared to 0h. +.IP "NVME_NS_DLFEAT_RB_ALL_FS" 12 +A deallocated logical block returns all bytes +set to FFh. +.IP "NVME_NS_DLFEAT_WRITE_ZEROES" 12 +If set, indicates that the controller supports +the Deallocate bit in the Write Zeroes command +for this namespace. +.IP "NVME_NS_DLFEAT_CRC_GUARD" 12 +If set, indicates that the Guard field for +deallocated logical blocks that contain +protection information is set to the CRC for +the value read from the deallocated logical +block and its metadata diff --git a/doc/man/nvme_id_ns_dpc.2 b/doc/man/nvme_id_ns_dpc.2 new file mode 100644 index 0000000..cd8aebb --- /dev/null +++ b/doc/man/nvme_id_ns_dpc.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "enum nvme_id_ns_dpc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_dpc \- This field indicates the capabilities for the end-to-end data protection feature. +.SH SYNOPSIS +enum nvme_id_ns_dpc { +.br +.BI " NVME_NS_DPC_PI_TYPE1" +, +.br +.br +.BI " NVME_NS_DPC_PI_TYPE2" +, +.br +.br +.BI " NVME_NS_DPC_PI_TYPE3" +, +.br +.br +.BI " NVME_NS_DPC_PI_FIRST" +, +.br +.br +.BI " NVME_NS_DPC_PI_LAST" + +}; +.SH Constants +.IP "NVME_NS_DPC_PI_TYPE1" 12 +If set, indicates that the namespace supports +Protection Information Type 1. +.IP "NVME_NS_DPC_PI_TYPE2" 12 +If set, indicates that the namespace supports +Protection Information Type 2. +.IP "NVME_NS_DPC_PI_TYPE3" 12 +If set, indicates that the namespace supports +Protection Information Type 3. +.IP "NVME_NS_DPC_PI_FIRST" 12 +If set, indicates that the namespace supports +protection information transferred as the first eight +bytes of metadata. +.IP "NVME_NS_DPC_PI_LAST" 12 +If set, indicates that the namespace supports +protection information transferred as the last eight +bytes of metadata. diff --git a/doc/man/nvme_id_ns_dps.2 b/doc/man/nvme_id_ns_dps.2 new file mode 100644 index 0000000..7f7097c --- /dev/null +++ b/doc/man/nvme_id_ns_dps.2 @@ -0,0 +1,44 @@ +.TH "libnvme" 9 "enum nvme_id_ns_dps" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_dps \- This field indicates the Type settings for the end-to-end data protection feature. +.SH SYNOPSIS +enum nvme_id_ns_dps { +.br +.BI " NVME_NS_DPS_PI_NONE" +, +.br +.br +.BI " NVME_NS_DPS_PI_TYPE1" +, +.br +.br +.BI " NVME_NS_DPS_PI_TYPE2" +, +.br +.br +.BI " NVME_NS_DPS_PI_TYPE3" +, +.br +.br +.BI " NVME_NS_DPS_PI_MASK" +, +.br +.br +.BI " NVME_NS_DPS_PI_FIRST" + +}; +.SH Constants +.IP "NVME_NS_DPS_PI_NONE" 12 +Protection information is not enabled +.IP "NVME_NS_DPS_PI_TYPE1" 12 +Protection information is enabled, Type 1 +.IP "NVME_NS_DPS_PI_TYPE2" 12 +Protection information is enabled, Type 2 +.IP "NVME_NS_DPS_PI_TYPE3" 12 +Protection information is enabled, Type 3 +.IP "NVME_NS_DPS_PI_MASK" 12 +Mask to get the value of the PI type +.IP "NVME_NS_DPS_PI_FIRST" 12 +If set, indicates that the protection information, if +enabled, is transferred as the first eight bytes of +metadata. diff --git a/doc/man/nvme_id_ns_flbas.2 b/doc/man/nvme_id_ns_flbas.2 new file mode 100644 index 0000000..5794ceb --- /dev/null +++ b/doc/man/nvme_id_ns_flbas.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "enum nvme_id_ns_flbas" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_flbas \- This field indicates the LBA data size & metadata size combination that the namespace has been formatted with +.SH SYNOPSIS +enum nvme_id_ns_flbas { +.br +.BI " NVME_NS_FLBAS_LOWER_MASK" +, +.br +.br +.BI " NVME_NS_FLBAS_META_EXT" +, +.br +.br +.BI " NVME_NS_FLBAS_HIGHER_MASK" + +}; +.SH Constants +.IP "NVME_NS_FLBAS_LOWER_MASK" 12 +Mask to get the index of one of the supported +LBA Formats's least significant +4bits indicated in +:c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf. +.IP "NVME_NS_FLBAS_META_EXT" 12 +Applicable only if format contains metadata. If +this bit is set, indicates that the metadata is +transferred at the end of the data LBA, creating an +extended data LBA. If cleared, indicates that all +of the metadata for a command is transferred as a +separate contiguous buffer of data. +.IP "NVME_NS_FLBAS_HIGHER_MASK" 12 +Mask to get the index of one of +the supported LBA Formats's most significant +2bits indicated in +:c:type:`struct nvme_id_ns <nvme_id_ns>`.lbaf. diff --git a/doc/man/nvme_id_ns_granularity_desc.2 b/doc/man/nvme_id_ns_granularity_desc.2 new file mode 100644 index 0000000..75adb56 --- /dev/null +++ b/doc/man/nvme_id_ns_granularity_desc.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_id_ns_granularity_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_ns_granularity_desc \- Namespace Granularity Descriptor +.SH SYNOPSIS +struct nvme_id_ns_granularity_desc { +.br +.BI " __le64 nszegran;" +.br +.BI " __le64 ncapgran;" +.br +.BI " +}; +.br + +.SH Members +.IP "nszegran" 12 +Namespace Size Granularity +.IP "ncapgran" 12 +Namespace Capacity Granularity diff --git a/doc/man/nvme_id_ns_granularity_list.2 b/doc/man/nvme_id_ns_granularity_list.2 new file mode 100644 index 0000000..4638d0b --- /dev/null +++ b/doc/man/nvme_id_ns_granularity_list.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_id_ns_granularity_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_ns_granularity_list \- Namespace Granularity List +.SH SYNOPSIS +struct nvme_id_ns_granularity_list { +.br +.BI " __le32 attributes;" +.br +.BI " __u8 num_descriptors;" +.br +.BI " __u8 rsvd5[27];" +.br +.BI " struct nvme_id_ns_granularity_desc entry[NVME_ID_ND_DESCRIPTOR_MAX];" +.br +.BI " __u8 rsvd288[3808];" +.br +.BI " +}; +.br + +.SH Members +.IP "attributes" 12 +Namespace Granularity Attributes +.IP "num_descriptors" 12 +Number of Descriptors +.IP "rsvd5" 12 +reserved +.IP "entry" 12 +Namespace Granularity Descriptor +.IP "rsvd288" 12 +reserved diff --git a/doc/man/nvme_id_ns_mc.2 b/doc/man/nvme_id_ns_mc.2 new file mode 100644 index 0000000..346c684 --- /dev/null +++ b/doc/man/nvme_id_ns_mc.2 @@ -0,0 +1,21 @@ +.TH "libnvme" 9 "enum nvme_id_ns_mc" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_mc \- This field indicates the capabilities for metadata. +.SH SYNOPSIS +enum nvme_id_ns_mc { +.br +.BI " NVME_NS_MC_EXTENDED" +, +.br +.br +.BI " NVME_NS_MC_SEPARATE" + +}; +.SH Constants +.IP "NVME_NS_MC_EXTENDED" 12 +If set, indicates the namespace supports the metadata +being transferred as part of a separate buffer that is +specified in the Metadata Pointer. +.IP "NVME_NS_MC_SEPARATE" 12 +If set, indicates that the namespace supports the +metadata being transferred as part of an extended data LBA. diff --git a/doc/man/nvme_id_ns_nmic.2 b/doc/man/nvme_id_ns_nmic.2 new file mode 100644 index 0000000..b0e0765 --- /dev/null +++ b/doc/man/nvme_id_ns_nmic.2 @@ -0,0 +1,13 @@ +.TH "libnvme" 9 "enum nvme_id_ns_nmic" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_nmic \- This field specifies multi-path I/O and namespace sharing capabilities of the namespace. +.SH SYNOPSIS +enum nvme_id_ns_nmic { +.br +.BI " NVME_NS_NMIC_SHARED" + +}; +.SH Constants +.IP "NVME_NS_NMIC_SHARED" 12 +If set, then the namespace may be attached to two or +more controllers in the NVM subsystem concurrently diff --git a/doc/man/nvme_id_ns_rescap.2 b/doc/man/nvme_id_ns_rescap.2 new file mode 100644 index 0000000..cc8901f --- /dev/null +++ b/doc/man/nvme_id_ns_rescap.2 @@ -0,0 +1,62 @@ +.TH "libnvme" 9 "enum nvme_id_ns_rescap" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_ns_rescap \- This field indicates the reservation capabilities of the namespace. +.SH SYNOPSIS +enum nvme_id_ns_rescap { +.br +.BI " NVME_NS_RESCAP_PTPL" +, +.br +.br +.BI " NVME_NS_RESCAP_WE" +, +.br +.br +.BI " NVME_NS_RESCAP_EA" +, +.br +.br +.BI " NVME_NS_RESCAP_WERO" +, +.br +.br +.BI " NVME_NS_RESCAP_EARO" +, +.br +.br +.BI " NVME_NS_RESCAP_WEAR" +, +.br +.br +.BI " NVME_NS_RESCAP_EAAR" +, +.br +.br +.BI " NVME_NS_RESCAP_IEK_13" + +}; +.SH Constants +.IP "NVME_NS_RESCAP_PTPL" 12 +If set, indicates that the namespace supports the +Persist Through Power Loss capability. +.IP "NVME_NS_RESCAP_WE" 12 +If set, indicates that the namespace supports the +Write Exclusive reservation type. +.IP "NVME_NS_RESCAP_EA" 12 +If set, indicates that the namespace supports the +Exclusive Access reservation type. +.IP "NVME_NS_RESCAP_WERO" 12 +If set, indicates that the namespace supports the +Write Exclusive - Registrants Only reservation type. +.IP "NVME_NS_RESCAP_EARO" 12 +If set, indicates that the namespace supports the +Exclusive Access - Registrants Only reservation type. +.IP "NVME_NS_RESCAP_WEAR" 12 +If set, indicates that the namespace supports the +Write Exclusive - All Registrants reservation type. +.IP "NVME_NS_RESCAP_EAAR" 12 +If set, indicates that the namespace supports the +Exclusive Access - All Registrants reservation type. +.IP "NVME_NS_RESCAP_IEK_13" 12 +If set, indicates that Ignore Existing Key is used +as defined in revision 1.3 or later of this specification. diff --git a/doc/man/nvme_id_nsfeat.2 b/doc/man/nvme_id_nsfeat.2 new file mode 100644 index 0000000..747a0bc --- /dev/null +++ b/doc/man/nvme_id_nsfeat.2 @@ -0,0 +1,50 @@ +.TH "libnvme" 9 "enum nvme_id_nsfeat" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_nsfeat \- This field defines features of the namespace. +.SH SYNOPSIS +enum nvme_id_nsfeat { +.br +.BI " NVME_NS_FEAT_THIN" +, +.br +.br +.BI " NVME_NS_FEAT_NATOMIC" +, +.br +.br +.BI " NVME_NS_FEAT_DULBE" +, +.br +.br +.BI " NVME_NS_FEAT_ID_REUSE" +, +.br +.br +.BI " NVME_NS_FEAT_IO_OPT" + +}; +.SH Constants +.IP "NVME_NS_FEAT_THIN" 12 +If set, indicates that the namespace supports thin +provisioning. Specifically, the Namespace Capacity +reported may be less than the Namespace Size. +.IP "NVME_NS_FEAT_NATOMIC" 12 +If set, indicates that the fields NAWUN, NAWUPF, and +NACWU are defined for this namespace and should be +used by the host for this namespace instead of the +AWUN, AWUPF, and ACWU fields in the Identify +Controller data structure. +.IP "NVME_NS_FEAT_DULBE" 12 +If set, indicates that the controller supports the +Deallocated or Unwritten Logical Block error for +this namespace. +.IP "NVME_NS_FEAT_ID_REUSE" 12 +If set, indicates that the value in the NGUID field +for this namespace, if non- zero, is never reused by +the controller and that the value in the EUI64 field +for this namespace, if non-zero, is never reused by +the controller. +.IP "NVME_NS_FEAT_IO_OPT" 12 +If set, indicates that the fields NPWG, NPWA, NPDG, +NPDA, and NOWS are defined for this namespace and +should be used by the host for I/O optimization diff --git a/doc/man/nvme_id_nvmset_list.2 b/doc/man/nvme_id_nvmset_list.2 new file mode 100644 index 0000000..a7247f9 --- /dev/null +++ b/doc/man/nvme_id_nvmset_list.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_id_nvmset_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_nvmset_list \- NVM set list +.SH SYNOPSIS +struct nvme_id_nvmset_list { +.br +.BI " __u8 nid;" +.br +.BI " __u8 rsvd1[127];" +.br +.BI " struct nvme_nvmset_attr ent[NVME_ID_NVMSET_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "nid" 12 +Nvmset id +.IP "rsvd1" 12 +Reserved +.IP "ent" 12 +nvmset id list diff --git a/doc/man/nvme_id_psd.2 b/doc/man/nvme_id_psd.2 new file mode 100644 index 0000000..7ccdee9 --- /dev/null +++ b/doc/man/nvme_id_psd.2 @@ -0,0 +1,95 @@ +.TH "libnvme" 9 "struct nvme_id_psd" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_psd \- Power Management data structure +.SH SYNOPSIS +struct nvme_id_psd { +.br +.BI " __le16 mp;" +.br +.BI " __u8 rsvd2;" +.br +.BI " __u8 flags;" +.br +.BI " __le32 enlat;" +.br +.BI " __le32 exlat;" +.br +.BI " __u8 rrt;" +.br +.BI " __u8 rrl;" +.br +.BI " __u8 rwt;" +.br +.BI " __u8 rwl;" +.br +.BI " __le16 idlp;" +.br +.BI " __u8 ips;" +.br +.BI " __u8 rsvd19;" +.br +.BI " __le16 actp;" +.br +.BI " __u8 apws;" +.br +.BI " __u8 rsvd23[9];" +.br +.BI " +}; +.br + +.SH Members +.IP "mp" 12 +Maximum Power indicates the sustained maximum power consumed by the +NVM subsystem in this power state. The power in Watts is equal to +the value in this field multiplied by the scale specified in the Max +Power Scale bit (see \fIenum nvme_psd_flags\fP). A value of 0 indicates +Maximum Power is not reported. +.IP "rsvd2" 12 +Reserved +.IP "flags" 12 +Additional decoding flags, see \fIenum nvme_psd_flags\fP. +.IP "enlat" 12 +Entry Latency indicates the maximum latency in microseconds +associated with entering this power state. A value of 0 indicates +Entry Latency is not reported. +.IP "exlat" 12 +Exit Latency indicates the maximum latency in microseconds +associated with exiting this power state. A value of 0 indicates +Exit Latency is not reported. +.IP "rrt" 12 +Relative Read Throughput indicates the read throughput rank +associated with this power state relative to others. The value in +this is less than the number of supported power states. +.IP "rrl" 12 +Relative Read Latency indicates the read latency rank associated +with this power state relative to others. The value in this field is +less than the number of supported power states. +.IP "rwt" 12 +Relative Write Throughput indicates write throughput rank associated +with this power state relative to others. The value in this field is +less than the number of supported power states +.IP "rwl" 12 +Relative Write Latency indicates the write latency rank associated +with this power state relative to others. The value in this field is +less than the number of supported power states +.IP "idlp" 12 +Idle Power indicates the typical power consumed by the NVM +subsystem over 30 seconds in this power state when idle. +.IP "ips" 12 +Idle Power Scale indicates the scale for \fIstruct nvme_id_psd\fP.idlp, +see \fIenum nvme_psd_ps\fP for decoding this field. +.IP "rsvd19" 12 +Reserved +.IP "actp" 12 +Active Power indicates the largest average power consumed by the +NVM subsystem over a 10 second period in this power state with +the workload indicated in the Active Power Workload field. +.IP "apws" 12 +Bits 7-6: Active Power Scale(APS) indicates the scale for the \fIstruct +nvme_id_psd\fP.actp, see \fIenum nvme_psd_ps\fP for decoding this value. +Bits 2-0: Active Power Workload(APW) indicates the workload +used to calculate maximum power for this power state. +See \fIenum nvme_psd_workload\fP for decoding this field. +.IP "rsvd23" 12 +Reserved diff --git a/doc/man/nvme_id_uuid.2 b/doc/man/nvme_id_uuid.2 new file mode 100644 index 0000000..a6f1524 --- /dev/null +++ b/doc/man/nvme_id_uuid.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvme_id_uuid" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_id_uuid \- Identifier Association +.SH SYNOPSIS +enum nvme_id_uuid { +.br +.BI " NVME_ID_UUID_HDR_ASSOCIATION_MASK" +, +.br +.br +.BI " NVME_ID_UUID_ASSOCIATION_NONE" +, +.br +.br +.BI " NVME_ID_UUID_ASSOCIATION_VENDOR" +, +.br +.br +.BI " NVME_ID_UUID_ASSOCIATION_SUBSYSTEM_VENDOR" + +}; +.SH Constants +.IP "NVME_ID_UUID_HDR_ASSOCIATION_MASK" 12 +.IP "NVME_ID_UUID_ASSOCIATION_NONE" 12 +.IP "NVME_ID_UUID_ASSOCIATION_VENDOR" 12 +.IP "NVME_ID_UUID_ASSOCIATION_SUBSYSTEM_VENDOR" 12 diff --git a/doc/man/nvme_id_uuid_list.2 b/doc/man/nvme_id_uuid_list.2 new file mode 100644 index 0000000..68106c9 --- /dev/null +++ b/doc/man/nvme_id_uuid_list.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_id_uuid_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_uuid_list \- UUID list +.SH SYNOPSIS +struct nvme_id_uuid_list { +.br +.BI " __u8 rsvd0[32];" +.br +.BI " struct nvme_id_uuid_list_entry entry[NVME_ID_UUID_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "rsvd0" 12 +reserved +.IP "entry" 12 +UUID list entry diff --git a/doc/man/nvme_id_uuid_list_entry.2 b/doc/man/nvme_id_uuid_list_entry.2 new file mode 100644 index 0000000..1525bad --- /dev/null +++ b/doc/man/nvme_id_uuid_list_entry.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_id_uuid_list_entry" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_id_uuid_list_entry \- UUID List Entry +.SH SYNOPSIS +struct nvme_id_uuid_list_entry { +.br +.BI " __u8 header;" +.br +.BI " __u8 rsvd1[15];" +.br +.BI " __u8 uuid[16];" +.br +.BI " +}; +.br + +.SH Members +.IP "header" 12 +UUID Lists Entry Header +.IP "rsvd1" 12 +reserved +.IP "uuid" 12 +128-bit Universally Unique Identifier diff --git a/doc/man/nvme_identify.2 b/doc/man/nvme_identify.2 new file mode 100644 index 0000000..fa0a0c6 --- /dev/null +++ b/doc/man/nvme_identify.2 @@ -0,0 +1,15 @@ +.TH "nvme_identify" 9 "nvme_identify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify \- Send the NVMe Identify command +.SH SYNOPSIS +.B "int" nvme_identify +.BI "(struct nvme_identify_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_identify_args\fP argument structure +.SH "DESCRIPTION" +The Identify command returns a data buffer that describes information about +the NVM subsystem, the controller or the namespace(s). +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_active_ns_list.2 b/doc/man/nvme_identify_active_ns_list.2 new file mode 100644 index 0000000..9f4d11b --- /dev/null +++ b/doc/man/nvme_identify_active_ns_list.2 @@ -0,0 +1,24 @@ +.TH "nvme_identify_active_ns_list" 9 "nvme_identify_active_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_active_ns_list \- Retrieves active namespaces id list +.SH SYNOPSIS +.B "int" nvme_identify_active_ns_list +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_list *list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return namespaces greater than this identifier +.IP "list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A list of 1024 namespace IDs is returned to the host containing NSIDs in +increasing order that are greater than the value specified in the Namespace +Identifier (nsid) field of the command. + +See \fIstruct nvme_ns_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_active_ns_list_csi.2 b/doc/man/nvme_identify_active_ns_list_csi.2 new file mode 100644 index 0000000..5bbeda7 --- /dev/null +++ b/doc/man/nvme_identify_active_ns_list_csi.2 @@ -0,0 +1,28 @@ +.TH "nvme_identify_active_ns_list_csi" 9 "nvme_identify_active_ns_list_csi" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_active_ns_list_csi \- Active namespace ID list associated with a specified I/O command set +.SH SYNOPSIS +.B "int" nvme_identify_active_ns_list_csi +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "enum nvme_csi csi " "," +.BI "struct nvme_ns_list *ns_list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return namespaces greater than this identifier +.IP "csi" 12 +Command Set Identifier +.IP "ns_list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A list of 1024 namespace IDs is returned to the host containing active +NSIDs in increasing order that are greater than the value specified in +the Namespace Identifier (nsid) field of the command and matching the +I/O Command Set specified in the \fIcsi\fP argument. + +See \fIstruct nvme_ns_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_allocated_ns.2 b/doc/man/nvme_identify_allocated_ns.2 new file mode 100644 index 0000000..89120e5 --- /dev/null +++ b/doc/man/nvme_identify_allocated_ns.2 @@ -0,0 +1,18 @@ +.TH "nvme_identify_allocated_ns" 9 "nvme_identify_allocated_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_allocated_ns \- Same as nvme_identify_ns, but only for allocated namespaces +.SH SYNOPSIS +.B "int" nvme_identify_allocated_ns +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_ns *ns " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace to identify +.IP "ns" 12 +User space destination address to transfer the data +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_allocated_ns_list.2 b/doc/man/nvme_identify_allocated_ns_list.2 new file mode 100644 index 0000000..39b7b52 --- /dev/null +++ b/doc/man/nvme_identify_allocated_ns_list.2 @@ -0,0 +1,24 @@ +.TH "nvme_identify_allocated_ns_list" 9 "nvme_identify_allocated_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_allocated_ns_list \- Retrieves allocated namespace id list +.SH SYNOPSIS +.B "int" nvme_identify_allocated_ns_list +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_list *list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return namespaces greater than this identifier +.IP "list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A list of 1024 namespace IDs is returned to the host containing NSIDs in +increasing order that are greater than the value specified in the Namespace +Identifier (nsid) field of the command. + +See \fIstruct nvme_ns_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_allocated_ns_list_csi.2 b/doc/man/nvme_identify_allocated_ns_list_csi.2 new file mode 100644 index 0000000..b71faa1 --- /dev/null +++ b/doc/man/nvme_identify_allocated_ns_list_csi.2 @@ -0,0 +1,28 @@ +.TH "nvme_identify_allocated_ns_list_csi" 9 "nvme_identify_allocated_ns_list_csi" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_allocated_ns_list_csi \- Allocated namespace ID list associated with a specified I/O command set +.SH SYNOPSIS +.B "int" nvme_identify_allocated_ns_list_csi +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "enum nvme_csi csi " "," +.BI "struct nvme_ns_list *ns_list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return namespaces greater than this identifier +.IP "csi" 12 +Command Set Identifier +.IP "ns_list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A list of 1024 namespace IDs is returned to the host containing allocated +NSIDs in increasing order that are greater than the value specified in +the \fInsid\fP field of the command and matching the I/O Command Set +specified in the \fIcsi\fP argument. + +See \fIstruct nvme_ns_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_cns.2 b/doc/man/nvme_identify_cns.2 new file mode 100644 index 0000000..d641e33 --- /dev/null +++ b/doc/man/nvme_identify_cns.2 @@ -0,0 +1,163 @@ +.TH "libnvme" 9 "enum nvme_identify_cns" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_identify_cns \- Identify - CNS Values +.SH SYNOPSIS +enum nvme_identify_cns { +.br +.BI " NVME_IDENTIFY_CNS_NS" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CTRL" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NS_ACTIVE_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NS_DESC_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NVMSET_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_NS" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_CTRL" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_NS_ACTIVE_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_INDEPENDENT_ID_NS" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NS_USER_DATA_FORMAT" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_NS_USER_DATA_FORMAT" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_ALLOCATED_NS" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NS_CTRL_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CTRL_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_PRIMARY_CTRL_CAP" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_NS_GRANULARITY" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_UUID_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_DOMAIN_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_ENDURANCE_GROUP_ID" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE" +, +.br +.br +.BI " NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE" + +}; +.SH Constants +.IP "NVME_IDENTIFY_CNS_NS" 12 +Identify Namespace data structure +.IP "NVME_IDENTIFY_CNS_CTRL" 12 +Identify Controller data structure +.IP "NVME_IDENTIFY_CNS_NS_ACTIVE_LIST" 12 +Active Namespace ID list +.IP "NVME_IDENTIFY_CNS_NS_DESC_LIST" 12 +Namespace Identification Descriptor list +.IP "NVME_IDENTIFY_CNS_NVMSET_LIST" 12 +NVM Set List +.IP "NVME_IDENTIFY_CNS_CSI_NS" 12 +I/O Command Set specific Identify +Namespace data structure +.IP "NVME_IDENTIFY_CNS_CSI_CTRL" 12 +I/O Command Set specific Identify +Controller data structure +.IP "NVME_IDENTIFY_CNS_CSI_NS_ACTIVE_LIST" 12 +Active Namespace ID list associated +with the specified I/O Command Set +.IP "NVME_IDENTIFY_CNS_CSI_INDEPENDENT_ID_NS" 12 +I/O Command Set Independent Identify +.IP "NVME_IDENTIFY_CNS_NS_USER_DATA_FORMAT" 12 +Namespace user data format +.IP "NVME_IDENTIFY_CNS_CSI_NS_USER_DATA_FORMAT" 12 +I/O Command Set specific user data +format +Namespace data structure +.IP "NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST" 12 +Allocated Namespace ID list +.IP "NVME_IDENTIFY_CNS_ALLOCATED_NS" 12 +Identify Namespace data structure for +the specified allocated NSID +.IP "NVME_IDENTIFY_CNS_NS_CTRL_LIST" 12 +Controller List of controllers attached +to the specified NSID +.IP "NVME_IDENTIFY_CNS_CTRL_LIST" 12 +Controller List of controllers that exist +in the NVM subsystem +.IP "NVME_IDENTIFY_CNS_PRIMARY_CTRL_CAP" 12 +Primary Controller Capabilities data +structure for the specified primary controller +.IP "NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST" 12 +Secondary Controller list of controllers +associated with the primary controller +processing the command +.IP "NVME_IDENTIFY_CNS_NS_GRANULARITY" 12 +A Namespace Granularity List +.IP "NVME_IDENTIFY_CNS_UUID_LIST" 12 +A UUID List +.IP "NVME_IDENTIFY_CNS_DOMAIN_LIST" 12 +Domain List +.IP "NVME_IDENTIFY_CNS_ENDURANCE_GROUP_ID" 12 +Endurance Group List +.IP "NVME_IDENTIFY_CNS_CSI_ALLOCATED_NS_LIST" 12 +I/O Command Set specific Allocated Namespace +ID list +.IP "NVME_IDENTIFY_CNS_CSI_ID_NS_DATA_STRUCTURE" 12 +I/O Command Set specific ID Namespace +Data Structure for Allocated Namespace ID +.IP "NVME_IDENTIFY_CNS_COMMAND_SET_STRUCTURE" 12 +Base Specification 2.0a section 5.17.2.21 diff --git a/doc/man/nvme_identify_ctrl.2 b/doc/man/nvme_identify_ctrl.2 new file mode 100644 index 0000000..2f2b488 --- /dev/null +++ b/doc/man/nvme_identify_ctrl.2 @@ -0,0 +1,19 @@ +.TH "nvme_identify_ctrl" 9 "nvme_identify_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ctrl \- Retrieves nvme identify controller +.SH SYNOPSIS +.B "int" nvme_identify_ctrl +.BI "(int fd " "," +.BI "struct nvme_id_ctrl *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "id" 12 +User space destination address to transfer the data, +.SH "DESCRIPTION" +Sends nvme identify with CNS value NVME_IDENTIFY_CNS_CTRL. + +See \fIstruct nvme_id_ctrl\fP for details on the data returned. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ctrl_csi.2 b/doc/man/nvme_identify_ctrl_csi.2 new file mode 100644 index 0000000..4a3cff7 --- /dev/null +++ b/doc/man/nvme_identify_ctrl_csi.2 @@ -0,0 +1,22 @@ +.TH "nvme_identify_ctrl_csi" 9 "nvme_identify_ctrl_csi" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ctrl_csi \- I/O command set specific Identify Controller data +.SH SYNOPSIS +.B "int" nvme_identify_ctrl_csi +.BI "(int fd " "," +.BI "enum nvme_csi csi " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "csi" 12 +Command Set Identifier +.IP "data" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +An I/O Command Set specific Identify Controller data structure is returned +to the host for the controller processing the command. The specific Identify +Controller data structure to be returned is specified by \fIcsi\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ctrl_list.2 b/doc/man/nvme_identify_ctrl_list.2 new file mode 100644 index 0000000..7a787a9 --- /dev/null +++ b/doc/man/nvme_identify_ctrl_list.2 @@ -0,0 +1,24 @@ +.TH "nvme_identify_ctrl_list" 9 "nvme_identify_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ctrl_list \- Retrieves identify controller list +.SH SYNOPSIS +.B "int" nvme_identify_ctrl_list +.BI "(int fd " "," +.BI "__u16 cntid " "," +.BI "struct nvme_ctrl_list *cntlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cntid" 12 +Starting CNTLID to return in the list +.IP "cntlist" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Up to 2047 controller identifiers is returned containing a controller +identifier greater than or equal to the controller identifier specified in +\fIcntid\fP. + +See \fIstruct nvme_ctrl_list\fP for a definition of the structure returned. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_domain_list.2 b/doc/man/nvme_identify_domain_list.2 new file mode 100644 index 0000000..332198b --- /dev/null +++ b/doc/man/nvme_identify_domain_list.2 @@ -0,0 +1,25 @@ +.TH "nvme_identify_domain_list" 9 "nvme_identify_domain_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_domain_list \- Domain list data +.SH SYNOPSIS +.B "int" nvme_identify_domain_list +.BI "(int fd " "," +.BI "__u16 domid " "," +.BI "struct nvme_id_domain_list *list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "domid" 12 +Domain ID +.IP "list" 12 +User space destination address to transfer data +.SH "DESCRIPTION" +A list of 31 domain IDs is returned to the host containing domain +attributes in increasing order that are greater than the value +specified in the \fIdomid\fP field. + +See \fIstruct nvme_identify_domain_attr\fP for the definition of the +returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_endurance_group_list.2 b/doc/man/nvme_identify_endurance_group_list.2 new file mode 100644 index 0000000..4420d85 --- /dev/null +++ b/doc/man/nvme_identify_endurance_group_list.2 @@ -0,0 +1,18 @@ +.TH "nvme_identify_endurance_group_list" 9 "nvme_identify_endurance_group_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_endurance_group_list \- Endurance group list data +.SH SYNOPSIS +.B "int" nvme_identify_endurance_group_list +.BI "(int fd " "," +.BI "__u16 endgrp_id " "," +.BI "struct nvme_id_endurance_group_list *list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "endgrp_id" 12 +Endurance group identifier +.IP "list" 12 +Array of endurance group identifiers +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_independent_identify_ns.2 b/doc/man/nvme_identify_independent_identify_ns.2 new file mode 100644 index 0000000..b609829 --- /dev/null +++ b/doc/man/nvme_identify_independent_identify_ns.2 @@ -0,0 +1,22 @@ +.TH "nvme_identify_independent_identify_ns" 9 "nvme_identify_independent_identify_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_independent_identify_ns \- I/O command set independent Identify namespace data +.SH SYNOPSIS +.B "int" nvme_identify_independent_identify_ns +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_independent_id_ns *ns " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return namespaces greater than this identifier +.IP "ns" 12 +I/O Command Set Independent Identify Namespace data +structure +.SH "DESCRIPTION" +The I/O command set independent Identify namespace data structure for +the namespace identified with \fIns\fP is returned to the host. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_iocs.2 b/doc/man/nvme_identify_iocs.2 new file mode 100644 index 0000000..852d7dc --- /dev/null +++ b/doc/man/nvme_identify_iocs.2 @@ -0,0 +1,21 @@ +.TH "nvme_identify_iocs" 9 "nvme_identify_iocs" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_iocs \- I/O command set data structure +.SH SYNOPSIS +.B "int" nvme_identify_iocs +.BI "(int fd " "," +.BI "__u16 cntlid " "," +.BI "struct nvme_id_iocs *iocs " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cntlid" 12 +Controller ID +.IP "iocs" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Retrieves list of the controller's supported io command set vectors. See +\fIstruct nvme_id_iocs\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_iocs_ns_csi_user_data_format.2 b/doc/man/nvme_identify_iocs_ns_csi_user_data_format.2 new file mode 100644 index 0000000..16cc8f2 --- /dev/null +++ b/doc/man/nvme_identify_iocs_ns_csi_user_data_format.2 @@ -0,0 +1,28 @@ +.TH "nvme_identify_iocs_ns_csi_user_data_format" 9 "nvme_identify_iocs_ns_csi_user_data_format" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_iocs_ns_csi_user_data_format \- Identify I/O command set namespace data structure +.SH SYNOPSIS +.B "int" nvme_identify_iocs_ns_csi_user_data_format +.BI "(int fd " "," +.BI "__u16 user_data_format " "," +.BI "__u8 uuidx " "," +.BI "enum nvme_csi csi " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "user_data_format" 12 +Return namespaces capability of identifier +.IP "uuidx" 12 +UUID selection, if supported +.IP "csi" 12 +Command Set Identifier +.IP "data" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +I/O Command Set specific Identify Namespace data structure for +the specified User Data Format index containing the namespace +capabilities for the I/O Command Set specified in the CSI field. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ns.2 b/doc/man/nvme_identify_ns.2 new file mode 100644 index 0000000..e132d82 --- /dev/null +++ b/doc/man/nvme_identify_ns.2 @@ -0,0 +1,29 @@ +.TH "nvme_identify_ns" 9 "nvme_identify_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ns \- Retrieves nvme identify namespace +.SH SYNOPSIS +.B "int" nvme_identify_ns +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_ns *ns " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace to identify +.IP "ns" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +If the Namespace Identifier (NSID) field specifies an active NSID, then the +Identify Namespace data structure is returned to the host for that specified +namespace. + +If the controller supports the Namespace Management capability and the NSID +field is set to NVME_NSID_ALL, then the controller returns an Identify Namespace +data structure that specifies capabilities that are common across namespaces +for this controller. + +See \fIstruct nvme_id_ns\fP for details on the structure returned. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ns_csi.2 b/doc/man/nvme_identify_ns_csi.2 new file mode 100644 index 0000000..3b826ef --- /dev/null +++ b/doc/man/nvme_identify_ns_csi.2 @@ -0,0 +1,27 @@ +.TH "nvme_identify_ns_csi" 9 "nvme_identify_ns_csi" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ns_csi \- I/O command set specific identify namespace data +.SH SYNOPSIS +.B "int" nvme_identify_ns_csi +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u8 uuidx " "," +.BI "enum nvme_csi csi " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace to identify +.IP "uuidx" 12 +UUID Index for differentiating vendor specific encoding +.IP "csi" 12 +Command Set Identifier +.IP "data" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +An I/O Command Set specific Identify Namespace data structure is returned +for the namespace specified in \fInsid\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ns_csi_user_data_format.2 b/doc/man/nvme_identify_ns_csi_user_data_format.2 new file mode 100644 index 0000000..b9513ea --- /dev/null +++ b/doc/man/nvme_identify_ns_csi_user_data_format.2 @@ -0,0 +1,27 @@ +.TH "nvme_identify_ns_csi_user_data_format" 9 "nvme_identify_ns_csi_user_data_format" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ns_csi_user_data_format \- Identify namespace user data format +.SH SYNOPSIS +.B "int" nvme_identify_ns_csi_user_data_format +.BI "(int fd " "," +.BI "__u16 user_data_format " "," +.BI "__u8 uuidx " "," +.BI "enum nvme_csi csi " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "user_data_format" 12 +Return namespaces capability of identifier +.IP "uuidx" 12 +UUID selection, if supported +.IP "csi" 12 +Command Set Identifier +.IP "data" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Identify Namespace data structure for the specified User Data Format +index containing the namespace capabilities for the NVM Command Set. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ns_descs.2 b/doc/man/nvme_identify_ns_descs.2 new file mode 100644 index 0000000..b7a5f42 --- /dev/null +++ b/doc/man/nvme_identify_ns_descs.2 @@ -0,0 +1,26 @@ +.TH "nvme_identify_ns_descs" 9 "nvme_identify_ns_descs" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ns_descs \- Retrieves namespace descriptor list +.SH SYNOPSIS +.B "int" nvme_identify_ns_descs +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_id_desc *descs " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +The namespace id to retrieve descriptors +.IP "descs" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A list of Namespace Identification Descriptor structures is returned to the +host for the namespace specified in the Namespace Identifier (NSID) field if +it is an active NSID. + +The data returned is in the form of an array of 'struct nvme_ns_id_desc'. + +See \fIstruct nvme_ns_id_desc\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_ns_granularity.2 b/doc/man/nvme_identify_ns_granularity.2 new file mode 100644 index 0000000..ca60403 --- /dev/null +++ b/doc/man/nvme_identify_ns_granularity.2 @@ -0,0 +1,22 @@ +.TH "nvme_identify_ns_granularity" 9 "nvme_identify_ns_granularity" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_ns_granularity \- Retrieves namespace granularity identification +.SH SYNOPSIS +.B "int" nvme_identify_ns_granularity +.BI "(int fd " "," +.BI "struct nvme_id_ns_granularity_list *gr_list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "gr_list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +If the controller supports reporting of Namespace Granularity, then a +Namespace Granularity List is returned to the host for up to sixteen +namespace granularity descriptors + +See \fIstruct nvme_id_ns_granularity_list\fP for the definition of the returned +structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_nsid_ctrl_list.2 b/doc/man/nvme_identify_nsid_ctrl_list.2 new file mode 100644 index 0000000..7caf127 --- /dev/null +++ b/doc/man/nvme_identify_nsid_ctrl_list.2 @@ -0,0 +1,27 @@ +.TH "nvme_identify_nsid_ctrl_list" 9 "nvme_identify_nsid_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_nsid_ctrl_list \- Retrieves controller list attached to an nsid +.SH SYNOPSIS +.B "int" nvme_identify_nsid_ctrl_list +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 cntid " "," +.BI "struct nvme_ctrl_list *cntlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Return controllers that are attached to this nsid +.IP "cntid" 12 +Starting CNTLID to return in the list +.IP "cntlist" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Up to 2047 controller identifiers are returned containing a controller +identifier greater than or equal to the controller identifier specified in +\fIcntid\fP attached to \fInsid\fP. + +See \fIstruct nvme_ctrl_list\fP for a definition of the structure returned. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 diff --git a/doc/man/nvme_identify_nvmset_list.2 b/doc/man/nvme_identify_nvmset_list.2 new file mode 100644 index 0000000..115b898 --- /dev/null +++ b/doc/man/nvme_identify_nvmset_list.2 @@ -0,0 +1,25 @@ +.TH "nvme_identify_nvmset_list" 9 "nvme_identify_nvmset_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_nvmset_list \- Retrieves NVM Set List +.SH SYNOPSIS +.B "int" nvme_identify_nvmset_list +.BI "(int fd " "," +.BI "__u16 nvmsetid " "," +.BI "struct nvme_id_nvmset_list *nvmset " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "nvmset" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Retrieves an NVM Set List, \fIstruct nvme_id_nvmset_list\fP. The data structure +is an ordered list by NVM Set Identifier, starting with the first NVM Set +Identifier supported by the NVM subsystem that is equal to or greater than +the NVM Set Identifier. + +See \fIstruct nvme_id_nvmset_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_primary_ctrl.2 b/doc/man/nvme_identify_primary_ctrl.2 new file mode 100644 index 0000000..4f0f5e4 --- /dev/null +++ b/doc/man/nvme_identify_primary_ctrl.2 @@ -0,0 +1,20 @@ +.TH "nvme_identify_primary_ctrl" 9 "nvme_identify_primary_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_primary_ctrl \- Retrieve NVMe Primary Controller identification +.SH SYNOPSIS +.B "int" nvme_identify_primary_ctrl +.BI "(int fd " "," +.BI "__u16 cntid " "," +.BI "struct nvme_primary_ctrl_cap *cap " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cntid" 12 +Return controllers starting at this identifier +.IP "cap" 12 +User space destination buffer address to transfer the data +.SH "DESCRIPTION" +See \fIstruct nvme_primary_ctrl_cap\fP for the definition of the returned structure, \fIcap\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_secondary_ctrl_list.2 b/doc/man/nvme_identify_secondary_ctrl_list.2 new file mode 100644 index 0000000..1941b66 --- /dev/null +++ b/doc/man/nvme_identify_secondary_ctrl_list.2 @@ -0,0 +1,29 @@ +.TH "nvme_identify_secondary_ctrl_list" 9 "nvme_identify_secondary_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_secondary_ctrl_list \- Retrieves secondary controller list +.SH SYNOPSIS +.B "int" nvme_identify_secondary_ctrl_list +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 cntid " "," +.BI "struct nvme_secondary_ctrl_list *sc_list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace identifier +.IP "cntid" 12 +Return controllers starting at this identifier +.IP "sc_list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +A Secondary Controller List is returned to the host for up to 127 secondary +controllers associated with the primary controller processing this command. +The list contains entries for controller identifiers greater than or equal +to the value specified in the Controller Identifier (cntid). + +See \fIstruct nvme_secondary_ctrls_list\fP for a definition of the returned +structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_identify_uuid.2 b/doc/man/nvme_identify_uuid.2 new file mode 100644 index 0000000..4e131c6 --- /dev/null +++ b/doc/man/nvme_identify_uuid.2 @@ -0,0 +1,20 @@ +.TH "nvme_identify_uuid" 9 "nvme_identify_uuid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_identify_uuid \- Retrieves device's UUIDs +.SH SYNOPSIS +.B "int" nvme_identify_uuid +.BI "(int fd " "," +.BI "struct nvme_id_uuid_list *uuid_list " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "uuid_list" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Each UUID List entry is either 0h, the NVMe Invalid UUID, or a valid UUID. +Valid UUIDs are those which are non-zero and are not the NVMe Invalid UUID. + +See \fIstruct nvme_id_uuid_list\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_init_copy_range.2 b/doc/man/nvme_init_copy_range.2 new file mode 100644 index 0000000..1900f20 --- /dev/null +++ b/doc/man/nvme_init_copy_range.2 @@ -0,0 +1,27 @@ +.TH "nvme_init_copy_range" 9 "nvme_init_copy_range" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_copy_range \- Constructs a copy range structure +.SH SYNOPSIS +.B "void" nvme_init_copy_range +.BI "(struct nvme_copy_range *copy " "," +.BI "__u16 *nlbs " "," +.BI "__u64 *slbas " "," +.BI "__u32 *eilbrts " "," +.BI "__u32 *elbatms " "," +.BI "__u32 *elbats " "," +.BI "__u16 nr " ");" +.SH ARGUMENTS +.IP "copy" 12 +Copy range array +.IP "nlbs" 12 +Number of logical blocks +.IP "slbas" 12 +Starting LBA +.IP "eilbrts" 12 +Expected initial logical block reference tag +.IP "elbatms" 12 +Expected logical block application tag mask +.IP "elbats" 12 +Expected logical block application tag +.IP "nr" 12 +Number of descriptors to construct diff --git a/doc/man/nvme_init_copy_range_f1.2 b/doc/man/nvme_init_copy_range_f1.2 new file mode 100644 index 0000000..451522b --- /dev/null +++ b/doc/man/nvme_init_copy_range_f1.2 @@ -0,0 +1,27 @@ +.TH "nvme_init_copy_range_f1" 9 "nvme_init_copy_range_f1" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_copy_range_f1 \- Constructs a copy range f1 structure +.SH SYNOPSIS +.B "void" nvme_init_copy_range_f1 +.BI "(struct nvme_copy_range_f1 *copy " "," +.BI "__u16 *nlbs " "," +.BI "__u64 *slbas " "," +.BI "__u64 *eilbrts " "," +.BI "__u32 *elbatms " "," +.BI "__u32 *elbats " "," +.BI "__u16 nr " ");" +.SH ARGUMENTS +.IP "copy" 12 +Copy range array +.IP "nlbs" 12 +Number of logical blocks +.IP "slbas" 12 +Starting LBA +.IP "eilbrts" 12 +Expected initial logical block reference tag +.IP "elbatms" 12 +Expected logical block application tag mask +.IP "elbats" 12 +Expected logical block application tag +.IP "nr" 12 +Number of descriptors to construct diff --git a/doc/man/nvme_init_ctrl.2 b/doc/man/nvme_init_ctrl.2 new file mode 100644 index 0000000..1102cb0 --- /dev/null +++ b/doc/man/nvme_init_ctrl.2 @@ -0,0 +1,17 @@ +.TH "nvme_init_ctrl" 9 "nvme_init_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_ctrl \- Initialize nvme_ctrl_t object for an existing controller. +.SH SYNOPSIS +.B "int" nvme_init_ctrl +.BI "(nvme_host_t h " "," +.BI "nvme_ctrl_t c " "," +.BI "int instance " ");" +.SH ARGUMENTS +.IP "h" 12 +nvme_host_t object +.IP "c" 12 +nvme_ctrl_t object +.IP "instance" 12 +Instance number (e.g. 1 for nvme1) +.SH "RETURN" +The \fBioctl\fP return code. Typically 0 on success. diff --git a/doc/man/nvme_init_ctrl_list.2 b/doc/man/nvme_init_ctrl_list.2 new file mode 100644 index 0000000..04b7edf --- /dev/null +++ b/doc/man/nvme_init_ctrl_list.2 @@ -0,0 +1,18 @@ +.TH "nvme_init_ctrl_list" 9 "nvme_init_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_ctrl_list \- Initialize an nvme_ctrl_list structure from an array. +.SH SYNOPSIS +.B "void" nvme_init_ctrl_list +.BI "(struct nvme_ctrl_list *cntlist " "," +.BI "__u16 num_ctrls " "," +.BI "__u16 *ctrlist " ");" +.SH ARGUMENTS +.IP "cntlist" 12 +The controller list structure to initialize +.IP "num_ctrls" 12 +The number of controllers in the array, \fIctrlist\fP. +.IP "ctrlist" 12 +An array of controller identifiers in CPU native endian. +.SH "DESCRIPTION" +This is intended to be used with any command that takes a controller list +argument. See \fBnvme_ns_attach_ctrls\fP and \fBnvme_ns_detach\fP. diff --git a/doc/man/nvme_init_dsm_range.2 b/doc/man/nvme_init_dsm_range.2 new file mode 100644 index 0000000..ff73816 --- /dev/null +++ b/doc/man/nvme_init_dsm_range.2 @@ -0,0 +1,27 @@ +.TH "nvme_init_dsm_range" 9 "nvme_init_dsm_range" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_dsm_range \- Constructs a data set range structure +.SH SYNOPSIS +.B "void" nvme_init_dsm_range +.BI "(struct nvme_dsm_range *dsm " "," +.BI "__u32 *ctx_attrs " "," +.BI "__u32 *llbas " "," +.BI "__u64 *slbas " "," +.BI "__u16 nr_ranges " ");" +.SH ARGUMENTS +.IP "dsm" 12 +DSM range array +.IP "ctx_attrs" 12 +Array of context attributes +.IP "llbas" 12 +Array of length in logical blocks +.IP "slbas" 12 +Array of starting logical blocks +.IP "nr_ranges" 12 +The size of the dsm arrays +.SH "DESCRIPTION" +Each array must be the same size of size 'nr_ranges'. This is intended to be +used with constructing a payload for \fBnvme_dsm\fP. +.SH "RETURN" +The nvme command status if a response was received or -errno +otherwise. diff --git a/doc/man/nvme_init_logging.2 b/doc/man/nvme_init_logging.2 new file mode 100644 index 0000000..644cd8b --- /dev/null +++ b/doc/man/nvme_init_logging.2 @@ -0,0 +1,20 @@ +.TH "nvme_init_logging" 9 "nvme_init_logging" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_init_logging \- Initialize logging +.SH SYNOPSIS +.B "void" nvme_init_logging +.BI "(nvme_root_t r " "," +.BI "int lvl " "," +.BI "bool log_pid " "," +.BI "bool log_tstamp " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t context +.IP "lvl" 12 +Logging level to set +.IP "log_pid" 12 +Boolean to enable logging of the PID +.IP "log_tstamp" 12 +Boolean to enable logging of the timestamp +.SH "DESCRIPTION" +Sets the default logging variables for the library. diff --git a/doc/man/nvme_io.2 b/doc/man/nvme_io.2 new file mode 100644 index 0000000..b5be195 --- /dev/null +++ b/doc/man/nvme_io.2 @@ -0,0 +1,15 @@ +.TH "nvme_io" 9 "nvme_io" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_io \- Submit an nvme user I/O command +.SH SYNOPSIS +.B "int" nvme_io +.BI "(struct nvme_io_args *args " "," +.BI "__u8 opcode " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.IP "opcode" 12 +Opcode to execute +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_io_control_flags.2 b/doc/man/nvme_io_control_flags.2 new file mode 100644 index 0000000..d9f5437 --- /dev/null +++ b/doc/man/nvme_io_control_flags.2 @@ -0,0 +1,66 @@ +.TH "libnvme" 9 "enum nvme_io_control_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_io_control_flags \- I/O control flags +.SH SYNOPSIS +enum nvme_io_control_flags { +.br +.BI " NVME_IO_DTYPE_STREAMS" +, +.br +.br +.BI " NVME_IO_STC" +, +.br +.br +.BI " NVME_IO_DEAC" +, +.br +.br +.BI " NVME_IO_ZNS_APPEND_PIREMAP" +, +.br +.br +.BI " NVME_IO_PRINFO_PRCHK_REF" +, +.br +.br +.BI " NVME_IO_PRINFO_PRCHK_APP" +, +.br +.br +.BI " NVME_IO_PRINFO_PRCHK_GUARD" +, +.br +.br +.BI " NVME_IO_PRINFO_PRACT" +, +.br +.br +.BI " NVME_IO_FUA" +, +.br +.br +.BI " NVME_IO_LR" + +}; +.SH Constants +.IP "NVME_IO_DTYPE_STREAMS" 12 +Directive Type Streams +.IP "NVME_IO_STC" 12 +Storage Tag Check +.IP "NVME_IO_DEAC" 12 +Deallocate +.IP "NVME_IO_ZNS_APPEND_PIREMAP" 12 +Protection Information Remap +.IP "NVME_IO_PRINFO_PRCHK_REF" 12 +Protection Information Check Reference Tag +.IP "NVME_IO_PRINFO_PRCHK_APP" 12 +Protection Information Check Application Tag +.IP "NVME_IO_PRINFO_PRCHK_GUARD" 12 +Protection Information Check Guard field +.IP "NVME_IO_PRINFO_PRACT" 12 +Protection Information Action +.IP "NVME_IO_FUA" 12 +Force Unit Access +.IP "NVME_IO_LR" 12 +Limited Retry diff --git a/doc/man/nvme_io_dsm_flags.2 b/doc/man/nvme_io_dsm_flags.2 new file mode 100644 index 0000000..700a615 --- /dev/null +++ b/doc/man/nvme_io_dsm_flags.2 @@ -0,0 +1,96 @@ +.TH "libnvme" 9 "enum nvme_io_dsm_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_io_dsm_flags \- Dataset Management flags +.SH SYNOPSIS +enum nvme_io_dsm_flags { +.br +.BI " NVME_IO_DSM_FREQ_UNSPEC" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_TYPICAL" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_RARE" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_READS" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_WRITES" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_RW" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_ONCE" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_PREFETCH" +, +.br +.br +.BI " NVME_IO_DSM_FREQ_TEMP" +, +.br +.br +.BI " NVME_IO_DSM_LATENCY_NONE" +, +.br +.br +.BI " NVME_IO_DSM_LATENCY_IDLE" +, +.br +.br +.BI " NVME_IO_DSM_LATENCY_NORM" +, +.br +.br +.BI " NVME_IO_DSM_LATENCY_LOW" +, +.br +.br +.BI " NVME_IO_DSM_SEQ_REQ" +, +.br +.br +.BI " NVME_IO_DSM_COMPRESSED" + +}; +.SH Constants +.IP "NVME_IO_DSM_FREQ_UNSPEC" 12 +No frequency information provided +.IP "NVME_IO_DSM_FREQ_TYPICAL" 12 +Typical number of reads and writes +expected for this LBA range +.IP "NVME_IO_DSM_FREQ_RARE" 12 +Infrequent writes and infrequent +reads to the LBA range indicated +.IP "NVME_IO_DSM_FREQ_READS" 12 +Infrequent writes and frequent +reads to the LBA range indicated +.IP "NVME_IO_DSM_FREQ_WRITES" 12 +Frequent writes and infrequent +reads to the LBA range indicated +.IP "NVME_IO_DSM_FREQ_RW" 12 +Frequent writes and frequent reads +to the LBA range indicated +.IP "NVME_IO_DSM_FREQ_ONCE" 12 +.IP "NVME_IO_DSM_FREQ_PREFETCH" 12 +.IP "NVME_IO_DSM_FREQ_TEMP" 12 +.IP "NVME_IO_DSM_LATENCY_NONE" 12 +No latency information provided +.IP "NVME_IO_DSM_LATENCY_IDLE" 12 +Longer latency acceptable +.IP "NVME_IO_DSM_LATENCY_NORM" 12 +Typical latency +.IP "NVME_IO_DSM_LATENCY_LOW" 12 +Smallest possible latency +.IP "NVME_IO_DSM_SEQ_REQ" 12 +.IP "NVME_IO_DSM_COMPRESSED" 12 diff --git a/doc/man/nvme_io_mgmt_recv.2 b/doc/man/nvme_io_mgmt_recv.2 new file mode 100644 index 0000000..9624abe --- /dev/null +++ b/doc/man/nvme_io_mgmt_recv.2 @@ -0,0 +1,12 @@ +.TH "nvme_io_mgmt_recv" 9 "nvme_io_mgmt_recv" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_io_mgmt_recv \- I/O Management Receive command +.SH SYNOPSIS +.B "int" nvme_io_mgmt_recv +.BI "(struct nvme_io_mgmt_recv_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_mgmt_recv_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_io_mgmt_recv_mo.2 b/doc/man/nvme_io_mgmt_recv_mo.2 new file mode 100644 index 0000000..f9556d6 --- /dev/null +++ b/doc/man/nvme_io_mgmt_recv_mo.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvme_io_mgmt_recv_mo" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_io_mgmt_recv_mo \- I/O Management Receive - Management Operation +.SH SYNOPSIS +enum nvme_io_mgmt_recv_mo { +.br +.BI " NVME_IO_MGMT_RECV_RUH_STATUS" + +}; +.SH Constants +.IP "NVME_IO_MGMT_RECV_RUH_STATUS" 12 +Reclaim Unit Handle Status diff --git a/doc/man/nvme_io_mgmt_send.2 b/doc/man/nvme_io_mgmt_send.2 new file mode 100644 index 0000000..9b41e2c --- /dev/null +++ b/doc/man/nvme_io_mgmt_send.2 @@ -0,0 +1,12 @@ +.TH "nvme_io_mgmt_send" 9 "nvme_io_mgmt_send" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_io_mgmt_send \- I/O Management Send command +.SH SYNOPSIS +.B "int" nvme_io_mgmt_send +.BI "(struct nvme_io_mgmt_send_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_mgmt_send_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_io_mgmt_send_mo.2 b/doc/man/nvme_io_mgmt_send_mo.2 new file mode 100644 index 0000000..a2ae1ac --- /dev/null +++ b/doc/man/nvme_io_mgmt_send_mo.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvme_io_mgmt_send_mo" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_io_mgmt_send_mo \- I/O Management Send - Management Operation +.SH SYNOPSIS +enum nvme_io_mgmt_send_mo { +.br +.BI " NVME_IO_MGMT_SEND_RUH_UPDATE" + +}; +.SH Constants +.IP "NVME_IO_MGMT_SEND_RUH_UPDATE" 12 +Reclaim Unit Handle Update diff --git a/doc/man/nvme_io_opcode.2 b/doc/man/nvme_io_opcode.2 new file mode 100644 index 0000000..5421280 --- /dev/null +++ b/doc/man/nvme_io_opcode.2 @@ -0,0 +1,114 @@ +.TH "libnvme" 9 "enum nvme_io_opcode" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_io_opcode \- Opcodes for I/O Commands +.SH SYNOPSIS +enum nvme_io_opcode { +.br +.BI " nvme_cmd_flush" +, +.br +.br +.BI " nvme_cmd_write" +, +.br +.br +.BI " nvme_cmd_read" +, +.br +.br +.BI " nvme_cmd_write_uncor" +, +.br +.br +.BI " nvme_cmd_compare" +, +.br +.br +.BI " nvme_cmd_write_zeroes" +, +.br +.br +.BI " nvme_cmd_dsm" +, +.br +.br +.BI " nvme_cmd_verify" +, +.br +.br +.BI " nvme_cmd_resv_register" +, +.br +.br +.BI " nvme_cmd_resv_report" +, +.br +.br +.BI " nvme_cmd_resv_acquire" +, +.br +.br +.BI " nvme_cmd_io_mgmt_recv" +, +.br +.br +.BI " nvme_cmd_resv_release" +, +.br +.br +.BI " nvme_cmd_copy" +, +.br +.br +.BI " nvme_cmd_io_mgmt_send" +, +.br +.br +.BI " nvme_zns_cmd_mgmt_send" +, +.br +.br +.BI " nvme_zns_cmd_mgmt_recv" +, +.br +.br +.BI " nvme_zns_cmd_append" + +}; +.SH Constants +.IP "nvme_cmd_flush" 12 +Flush +.IP "nvme_cmd_write" 12 +Write +.IP "nvme_cmd_read" 12 +Read +.IP "nvme_cmd_write_uncor" 12 +Write Uncorrectable +.IP "nvme_cmd_compare" 12 +Compare +.IP "nvme_cmd_write_zeroes" 12 +write Zeros +.IP "nvme_cmd_dsm" 12 +Dataset Management +.IP "nvme_cmd_verify" 12 +Verify +.IP "nvme_cmd_resv_register" 12 +Reservation Register +.IP "nvme_cmd_resv_report" 12 +Reservation Report +.IP "nvme_cmd_resv_acquire" 12 +Reservation Acquire +.IP "nvme_cmd_io_mgmt_recv" 12 +I/O Management Receive +.IP "nvme_cmd_resv_release" 12 +Reservation Release +.IP "nvme_cmd_copy" 12 +Copy +.IP "nvme_cmd_io_mgmt_send" 12 +I/O Management Send +.IP "nvme_zns_cmd_mgmt_send" 12 +Zone Management Send +.IP "nvme_zns_cmd_mgmt_recv" 12 +Zone Management Receive +.IP "nvme_zns_cmd_append" 12 +Zone Append diff --git a/doc/man/nvme_io_passthru.2 b/doc/man/nvme_io_passthru.2 new file mode 100644 index 0000000..2180ab3 --- /dev/null +++ b/doc/man/nvme_io_passthru.2 @@ -0,0 +1,71 @@ +.TH "nvme_io_passthru" 9 "nvme_io_passthru" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_io_passthru \- Submit an nvme io passthrough command +.SH SYNOPSIS +.B "int" nvme_io_passthru +.BI "(int fd " "," +.BI "__u8 opcode " "," +.BI "__u8 flags " "," +.BI "__u16 rsvd " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw2 " "," +.BI "__u32 cdw3 " "," +.BI "__u32 cdw10 " "," +.BI "__u32 cdw11 " "," +.BI "__u32 cdw12 " "," +.BI "__u32 cdw13 " "," +.BI "__u32 cdw14 " "," +.BI "__u32 cdw15 " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 metadata_len " "," +.BI "void *metadata " "," +.BI "__u32 timeout_ms " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "opcode" 12 +The nvme io command to send +.IP "flags" 12 +NVMe command flags (not used) +.IP "rsvd" 12 +Reserved for future use +.IP "nsid" 12 +Namespace identifier +.IP "cdw2" 12 +Command dword 2 +.IP "cdw3" 12 +Command dword 3 +.IP "cdw10" 12 +Command dword 10 +.IP "cdw11" 12 +Command dword 11 +.IP "cdw12" 12 +Command dword 12 +.IP "cdw13" 12 +Command dword 13 +.IP "cdw14" 12 +Command dword 14 +.IP "cdw15" 12 +Command dword 15 +.IP "data_len" 12 +Length of the data transferred in this command in bytes +.IP "data" 12 +Pointer to user address of the data buffer +.IP "metadata_len" 12 +Length of metadata transferred in this command +.IP "metadata" 12 +Pointer to user address of the metadata buffer +.IP "timeout_ms" 12 +How long the kernel waits for the command to complete +.IP "result" 12 +Optional field to return the result from the CQE dword 0 +.SH "DESCRIPTION" +Parameterized form of \fBnvme_submit_io_passthru\fP. This sets up and submits +a \fIstruct nvme_passthru_cmd\fP. + +Known values for \fIopcode\fP are defined in \fIenum nvme_io_opcode\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_io_passthru64.2 b/doc/man/nvme_io_passthru64.2 new file mode 100644 index 0000000..aff02e3 --- /dev/null +++ b/doc/man/nvme_io_passthru64.2 @@ -0,0 +1,71 @@ +.TH "nvme_io_passthru64" 9 "nvme_io_passthru64" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_io_passthru64 \- Submit an nvme io passthrough command +.SH SYNOPSIS +.B "int" nvme_io_passthru64 +.BI "(int fd " "," +.BI "__u8 opcode " "," +.BI "__u8 flags " "," +.BI "__u16 rsvd " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw2 " "," +.BI "__u32 cdw3 " "," +.BI "__u32 cdw10 " "," +.BI "__u32 cdw11 " "," +.BI "__u32 cdw12 " "," +.BI "__u32 cdw13 " "," +.BI "__u32 cdw14 " "," +.BI "__u32 cdw15 " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 metadata_len " "," +.BI "void *metadata " "," +.BI "__u32 timeout_ms " "," +.BI "__u64 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "opcode" 12 +The nvme io command to send +.IP "flags" 12 +NVMe command flags (not used) +.IP "rsvd" 12 +Reserved for future use +.IP "nsid" 12 +Namespace identifier +.IP "cdw2" 12 +Command dword 2 +.IP "cdw3" 12 +Command dword 3 +.IP "cdw10" 12 +Command dword 10 +.IP "cdw11" 12 +Command dword 11 +.IP "cdw12" 12 +Command dword 12 +.IP "cdw13" 12 +Command dword 13 +.IP "cdw14" 12 +Command dword 14 +.IP "cdw15" 12 +Command dword 15 +.IP "data_len" 12 +Length of the data transferred in this command in bytes +.IP "data" 12 +Pointer to user address of the data buffer +.IP "metadata_len" 12 +Length of metadata transferred in this command +.IP "metadata" 12 +Pointer to user address of the metadata buffer +.IP "timeout_ms" 12 +How long the kernel waits for the command to complete +.IP "result" 12 +Optional field to return the result from the CQE dword 0 +.SH "DESCRIPTION" +Parameterized form of \fBnvme_submit_io_passthru64\fP. This sets up and submits +a \fIstruct nvme_passthru_cmd64\fP. + +Known values for \fIopcode\fP are defined in \fIenum nvme_io_opcode\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_is_64bit_reg.2 b/doc/man/nvme_is_64bit_reg.2 new file mode 100644 index 0000000..39701b1 --- /dev/null +++ b/doc/man/nvme_is_64bit_reg.2 @@ -0,0 +1,16 @@ +.TH "nvme_is_64bit_reg" 9 "nvme_is_64bit_reg" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_is_64bit_reg \- Checks if offset of the controller register is a know 64bit value. +.SH SYNOPSIS +.B "bool" nvme_is_64bit_reg +.BI "(__u32 offset " ");" +.SH ARGUMENTS +.IP "offset" 12 +Offset of controller register field in bytes +.SH "DESCRIPTION" +This function does not care about transport so that the offset is not going +to be checked inside of this function for the unsupported fields in a +specific transport. For example, BPMBL(Boot Partition Memory Buffer +Location) register is not supported by fabrics, but it can be checked here. +.SH "RETURN" +true if given offset is 64bit register, otherwise it returns false. diff --git a/doc/man/nvme_lba_range_type.2 b/doc/man/nvme_lba_range_type.2 new file mode 100644 index 0000000..034191b --- /dev/null +++ b/doc/man/nvme_lba_range_type.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "struct nvme_lba_range_type" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_range_type \- LBA Range Type +.SH SYNOPSIS +struct nvme_lba_range_type { +.br +.BI " struct nvme_lba_range_type_entry entry[NVME_FEAT_LBA_RANGE_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "entry" 12 +LBA range type entry. See \fIstruct\fP nvme_lba_range_type_entry diff --git a/doc/man/nvme_lba_range_type_entry.2 b/doc/man/nvme_lba_range_type_entry.2 new file mode 100644 index 0000000..5740756 --- /dev/null +++ b/doc/man/nvme_lba_range_type_entry.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_lba_range_type_entry" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_range_type_entry \- LBA Range Type - Data Structure Entry +.SH SYNOPSIS +struct nvme_lba_range_type_entry { +.br +.BI " __u8 type;" +.br +.BI " __u8 attributes;" +.br +.BI " __u8 rsvd2[14];" +.br +.BI " __u64 slba;" +.br +.BI " __u64 nlb;" +.br +.BI " __u8 guid[16];" +.br +.BI " __u8 rsvd48[16];" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +Specifies the Type of the LBA range +.IP "attributes" 12 +Specifies attributes of the LBA range +.IP "rsvd2" 12 +Reserved +.IP "slba" 12 +Starting LBA +.IP "nlb" 12 +Number of Logical Blocks +.IP "guid" 12 +Unique Identifier +.IP "rsvd48" 12 +Reserved diff --git a/doc/man/nvme_lba_rd.2 b/doc/man/nvme_lba_rd.2 new file mode 100644 index 0000000..b1e87d3 --- /dev/null +++ b/doc/man/nvme_lba_rd.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_lba_rd" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_rd \- LBA Range Descriptor +.SH SYNOPSIS +struct nvme_lba_rd { +.br +.BI " __le64 rslba;" +.br +.BI " __le32 rnlb;" +.br +.BI " __u8 rsvd12[4];" +.br +.BI " +}; +.br + +.SH Members +.IP "rslba" 12 +Range Starting LBA +.IP "rnlb" 12 +Range Number of Logical Blocks +.IP "rsvd12" 12 +Reserved diff --git a/doc/man/nvme_lba_status.2 b/doc/man/nvme_lba_status.2 new file mode 100644 index 0000000..ba502c6 --- /dev/null +++ b/doc/man/nvme_lba_status.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_lba_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_status \- LBA Status Descriptor List +.SH SYNOPSIS +struct nvme_lba_status { +.br +.BI " __le32 nlsd;" +.br +.BI " __u8 cmpc;" +.br +.BI " __u8 rsvd5[3];" +.br +.BI " struct nvme_lba_status_desc descs[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nlsd" 12 +Number of LBA Status Descriptors +.IP "cmpc" 12 +Completion Condition +.IP "rsvd5" 12 +Reserved +.IP "descs" 12 +LBA status descriptor Entry diff --git a/doc/man/nvme_lba_status_atype.2 b/doc/man/nvme_lba_status_atype.2 new file mode 100644 index 0000000..064bf4c --- /dev/null +++ b/doc/man/nvme_lba_status_atype.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "enum nvme_lba_status_atype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_lba_status_atype \- Potentially Unrecoverable LBAs +.SH SYNOPSIS +enum nvme_lba_status_atype { +.br +.BI " NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED" +, +.br +.br +.BI " NVME_LBA_STATUS_ATYPE_SCAN_TRACKED" + +}; +.SH Constants +.IP "NVME_LBA_STATUS_ATYPE_SCAN_UNTRACKED" 12 +Potentially Unrecoverable LBAs +.IP "NVME_LBA_STATUS_ATYPE_SCAN_TRACKED" 12 +Potentially Unrecoverable LBAs +associated with physical storage diff --git a/doc/man/nvme_lba_status_desc.2 b/doc/man/nvme_lba_status_desc.2 new file mode 100644 index 0000000..a7f1cec --- /dev/null +++ b/doc/man/nvme_lba_status_desc.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_lba_status_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_status_desc \- LBA Status Descriptor Entry +.SH SYNOPSIS +struct nvme_lba_status_desc { +.br +.BI " __le64 dslba;" +.br +.BI " __le32 nlb;" +.br +.BI " __u8 rsvd12;" +.br +.BI " __u8 status;" +.br +.BI " __u8 rsvd14[2];" +.br +.BI " +}; +.br + +.SH Members +.IP "dslba" 12 +Descriptor Starting LBA +.IP "nlb" 12 +Number of Logical Blocks +.IP "rsvd12" 12 +Reserved +.IP "status" 12 +Additional status about this LBA range +.IP "rsvd14" 12 +Reserved diff --git a/doc/man/nvme_lba_status_log.2 b/doc/man/nvme_lba_status_log.2 new file mode 100644 index 0000000..eb61fdf --- /dev/null +++ b/doc/man/nvme_lba_status_log.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_lba_status_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lba_status_log \- LBA Status Information Log +.SH SYNOPSIS +struct nvme_lba_status_log { +.br +.BI " __le32 lslplen;" +.br +.BI " __le32 nlslne;" +.br +.BI " __le32 estulb;" +.br +.BI " __u8 rsvd12[2];" +.br +.BI " __le16 lsgc;" +.br +.BI " struct nvme_lbas_ns_element elements[];" +.br +.BI " +}; +.br + +.SH Members +.IP "lslplen" 12 +LBA Status Log Page Length +.IP "nlslne" 12 +Number of LBA Status Log Namespace Elements +.IP "estulb" 12 +Estimate of Unrecoverable Logical Blocks +.IP "rsvd12" 12 +Reserved +.IP "lsgc" 12 +LBA Status Generation Counter +.IP "elements" 12 +LBA Status Log Namespace Element List diff --git a/doc/man/nvme_lbaf.2 b/doc/man/nvme_lbaf.2 new file mode 100644 index 0000000..9e4a98b --- /dev/null +++ b/doc/man/nvme_lbaf.2 @@ -0,0 +1,25 @@ +.TH "libnvme" 9 "struct nvme_lbaf" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lbaf \- LBA Format Data Structure +.SH SYNOPSIS +struct nvme_lbaf { +.br +.BI " __le16 ms;" +.br +.BI " __u8 ds;" +.br +.BI " __u8 rp;" +.br +.BI " +}; +.br + +.SH Members +.IP "ms" 12 +Metadata Size indicates the number of metadata bytes provided per LBA +based on the LBA Data Size indicated. +.IP "ds" 12 +LBA Data Size indicates the LBA data size supported, reported as a +power of two. +.IP "rp" 12 +Relative Performance, see \fIenum nvme_lbaf_rp\fP. diff --git a/doc/man/nvme_lbaf_rp.2 b/doc/man/nvme_lbaf_rp.2 new file mode 100644 index 0000000..5c66eac --- /dev/null +++ b/doc/man/nvme_lbaf_rp.2 @@ -0,0 +1,37 @@ +.TH "libnvme" 9 "enum nvme_lbaf_rp" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_lbaf_rp \- This field indicates the relative performance of the LBA format indicated relative to other LBA formats supported by the controller. +.SH SYNOPSIS +enum nvme_lbaf_rp { +.br +.BI " NVME_LBAF_RP_BEST" +, +.br +.br +.BI " NVME_LBAF_RP_BETTER" +, +.br +.br +.BI " NVME_LBAF_RP_GOOD" +, +.br +.br +.BI " NVME_LBAF_RP_DEGRADED" +, +.br +.br +.BI " NVME_LBAF_RP_MASK" + +}; +.SH Constants +.IP "NVME_LBAF_RP_BEST" 12 +Best performance +.IP "NVME_LBAF_RP_BETTER" 12 +Better performance +.IP "NVME_LBAF_RP_GOOD" 12 +Good performance +.IP "NVME_LBAF_RP_DEGRADED" 12 +Degraded performance +.IP "NVME_LBAF_RP_MASK" 12 +Mask to get the relative performance value from the +field diff --git a/doc/man/nvme_lbart.2 b/doc/man/nvme_lbart.2 new file mode 100644 index 0000000..55b6aa9 --- /dev/null +++ b/doc/man/nvme_lbart.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_lbart" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_lbart \- LBA Range Type - Data Structure Entry +.SH SYNOPSIS +enum nvme_lbart { +.br +.BI " NVME_LBART_TYPE_GP" +, +.br +.br +.BI " NVME_LBART_TYPE_FS" +, +.br +.br +.BI " NVME_LBART_TYPE_RAID" +, +.br +.br +.BI " NVME_LBART_TYPE_CACHE" +, +.br +.br +.BI " NVME_LBART_TYPE_SWAP" +, +.br +.br +.BI " NVME_LBART_ATTRIB_TEMP" +, +.br +.br +.BI " NVME_LBART_ATTRIB_HIDE" + +}; +.SH Constants +.IP "NVME_LBART_TYPE_GP" 12 +General Purpose +.IP "NVME_LBART_TYPE_FS" 12 +Filesystem +.IP "NVME_LBART_TYPE_RAID" 12 +RAID +.IP "NVME_LBART_TYPE_CACHE" 12 +Cache +.IP "NVME_LBART_TYPE_SWAP" 12 +Page / swap file +.IP "NVME_LBART_ATTRIB_TEMP" 12 +Temp +.IP "NVME_LBART_ATTRIB_HIDE" 12 +Hidden diff --git a/doc/man/nvme_lbas_ns_element.2 b/doc/man/nvme_lbas_ns_element.2 new file mode 100644 index 0000000..6b4a3bc --- /dev/null +++ b/doc/man/nvme_lbas_ns_element.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_lbas_ns_element" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_lbas_ns_element \- LBA Status Log Namespace Element +.SH SYNOPSIS +struct nvme_lbas_ns_element { +.br +.BI " __le32 neid;" +.br +.BI " __le32 nlrd;" +.br +.BI " __u8 ratype;" +.br +.BI " __u8 rsvd8[7];" +.br +.BI " struct nvme_lba_rd lba_rd[];" +.br +.BI " +}; +.br + +.SH Members +.IP "neid" 12 +Namespace Element Identifier +.IP "nlrd" 12 +Number of LBA Range Descriptors +.IP "ratype" 12 +Recommended Action Type. see \fIenum\fP nvme_lba_status_atype +.IP "rsvd8" 12 +Reserved +.IP "lba_rd" 12 +LBA Range Descriptor diff --git a/doc/man/nvme_lockdown.2 b/doc/man/nvme_lockdown.2 new file mode 100644 index 0000000..4b331ea --- /dev/null +++ b/doc/man/nvme_lockdown.2 @@ -0,0 +1,12 @@ +.TH "nvme_lockdown" 9 "nvme_lockdown" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_lockdown \- Issue lockdown command +.SH SYNOPSIS +.B "int" nvme_lockdown +.BI "(struct nvme_lockdown_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_lockdown_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_log_ana_lsp.2 b/doc/man/nvme_log_ana_lsp.2 new file mode 100644 index 0000000..a67274f --- /dev/null +++ b/doc/man/nvme_log_ana_lsp.2 @@ -0,0 +1,16 @@ +.TH "libnvme" 9 "enum nvme_log_ana_lsp" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_log_ana_lsp \- Asymmetric Namespace Access - Return Groups Only +.SH SYNOPSIS +enum nvme_log_ana_lsp { +.br +.BI " NVME_LOG_ANA_LSP_RGO_NAMESPACES" +, +.br +.br +.BI " NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY" + +}; +.SH Constants +.IP "NVME_LOG_ANA_LSP_RGO_NAMESPACES" 12 +.IP "NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY" 12 diff --git a/doc/man/nvme_lookup_ctrl.2 b/doc/man/nvme_lookup_ctrl.2 new file mode 100644 index 0000000..c9942b7 --- /dev/null +++ b/doc/man/nvme_lookup_ctrl.2 @@ -0,0 +1,35 @@ +.TH "nvme_lookup_ctrl" 9 "nvme_lookup_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_lookup_ctrl \- Lookup nvme_ctrl_t object +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_lookup_ctrl +.BI "(nvme_subsystem_t s " "," +.BI "const char *transport " "," +.BI "const char *traddr " "," +.BI "const char *host_traddr " "," +.BI "const char *host_iface " "," +.BI "const char *trsvcid " "," +.BI "nvme_ctrl_t p " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "transport" 12 +Transport name +.IP "traddr" 12 +Transport address +.IP "host_traddr" 12 +Host transport address +.IP "host_iface" 12 +Host interface name +.IP "trsvcid" 12 +Transport service identifier +.IP "p" 12 +Previous controller instance +.SH "DESCRIPTION" +Lookup a controller in \fIs\fP based on \fItransport\fP, \fItraddr\fP, +\fIhost_traddr\fP, \fIhost_iface\fP, and \fItrsvcid\fP. \fItransport\fP must be specified, +other fields may be required depending on the transport. A new +object is created if none is found. If \fIp\fP is specified the lookup +will start at \fIp\fP instead of the first controller. +.SH "RETURN" +Controller instance diff --git a/doc/man/nvme_lookup_host.2 b/doc/man/nvme_lookup_host.2 new file mode 100644 index 0000000..74f9abe --- /dev/null +++ b/doc/man/nvme_lookup_host.2 @@ -0,0 +1,20 @@ +.TH "nvme_lookup_host" 9 "nvme_lookup_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_lookup_host \- Lookup nvme_host_t object +.SH SYNOPSIS +.B "nvme_host_t" nvme_lookup_host +.BI "(nvme_root_t r " "," +.BI "const char *hostnqn " "," +.BI "const char *hostid " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.IP "hostnqn" 12 +Host NQN +.IP "hostid" 12 +Host ID +.SH "DESCRIPTION" +Lookup a nvme_host_t object based on \fIhostnqn\fP and \fIhostid\fP +or create one if not found. +.SH "RETURN" +\fInvme_host_t\fP object diff --git a/doc/man/nvme_lookup_subsystem.2 b/doc/man/nvme_lookup_subsystem.2 new file mode 100644 index 0000000..0e780eb --- /dev/null +++ b/doc/man/nvme_lookup_subsystem.2 @@ -0,0 +1,20 @@ +.TH "nvme_lookup_subsystem" 9 "nvme_lookup_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_lookup_subsystem \- Lookup nvme_subsystem_t object +.SH SYNOPSIS +.B "nvme_subsystem_t" nvme_lookup_subsystem +.BI "(struct nvme_host *h " "," +.BI "const char *name " "," +.BI "const char *subsysnqn " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.IP "name" 12 +Name of the subsystem (may be NULL) +.IP "subsysnqn" 12 +Subsystem NQN +.SH "DESCRIPTION" +Lookup a \fInvme_subsystem_t\fP object in \fIh\fP base on \fIname\fP (if present) +and \fIsubsysnqn\fP or create one if not found. +.SH "RETURN" +nvme_subsystem_t object diff --git a/doc/man/nvme_media_unit_config_desc.2 b/doc/man/nvme_media_unit_config_desc.2 new file mode 100644 index 0000000..02c7725 --- /dev/null +++ b/doc/man/nvme_media_unit_config_desc.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_media_unit_config_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_media_unit_config_desc \- Media Unit Configuration Descriptor +.SH SYNOPSIS +struct nvme_media_unit_config_desc { +.br +.BI " __le16 muid;" +.br +.BI " __u8 rsvd2[4];" +.br +.BI " __le16 mudl;" +.br +.BI " +}; +.br + +.SH Members +.IP "muid" 12 +Media Unit Identifier +.IP "rsvd2" 12 +Reserved +.IP "mudl" 12 +Media Unit Descriptor Length diff --git a/doc/man/nvme_media_unit_stat_desc.2 b/doc/man/nvme_media_unit_stat_desc.2 new file mode 100644 index 0000000..079dba6 --- /dev/null +++ b/doc/man/nvme_media_unit_stat_desc.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_media_unit_stat_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_media_unit_stat_desc \- Media Unit Status Descriptor +.SH SYNOPSIS +struct nvme_media_unit_stat_desc { +.br +.BI " __le16 muid;" +.br +.BI " __le16 domainid;" +.br +.BI " __le16 endgid;" +.br +.BI " __le16 nvmsetid;" +.br +.BI " __le16 cap_adj_fctr;" +.br +.BI " __u8 avl_spare;" +.br +.BI " __u8 percent_used;" +.br +.BI " __u8 mucs;" +.br +.BI " __u8 cio;" +.br +.BI " +}; +.br + +.SH Members +.IP "muid" 12 +Media Unit Identifier +.IP "domainid" 12 +Domain Identifier +.IP "endgid" 12 +Endurance Group Identifier +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "cap_adj_fctr" 12 +Capacity Adjustment Factor +.IP "avl_spare" 12 +Available Spare +.IP "percent_used" 12 +Percentage Used +.IP "mucs" 12 +Number of Channels attached to media units +.IP "cio" 12 +Channel Identifiers Offset diff --git a/doc/man/nvme_media_unit_stat_log.2 b/doc/man/nvme_media_unit_stat_log.2 new file mode 100644 index 0000000..4b0318e --- /dev/null +++ b/doc/man/nvme_media_unit_stat_log.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_media_unit_stat_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_media_unit_stat_log \- Media Unit Status +.SH SYNOPSIS +struct nvme_media_unit_stat_log { +.br +.BI " __le16 nmu;" +.br +.BI " __le16 cchans;" +.br +.BI " __le16 sel_config;" +.br +.BI " __u8 rsvd6[10];" +.br +.BI " struct nvme_media_unit_stat_desc mus_desc[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nmu" 12 +Number unit status descriptor +.IP "cchans" 12 +Number of Channels +.IP "sel_config" 12 +Selected Configuration +.IP "rsvd6" 12 +Reserved +.IP "mus_desc" 12 +Media unit statistic descriptors diff --git a/doc/man/nvme_metadata_element_desc.2 b/doc/man/nvme_metadata_element_desc.2 new file mode 100644 index 0000000..56e552f --- /dev/null +++ b/doc/man/nvme_metadata_element_desc.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_metadata_element_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_metadata_element_desc \- Metadata Element Descriptor +.SH SYNOPSIS +struct nvme_metadata_element_desc { +.br +.BI " __u8 type;" +.br +.BI " __u8 rev;" +.br +.BI " __u16 len;" +.br +.BI " __u8 val[0];" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +Element Type (ET) +.IP "rev" 12 +Element Revision (ER) +.IP "len" 12 +Element Length (ELEN) +.IP "val" 12 +Element Value (EVAL), UTF-8 string diff --git a/doc/man/nvme_mi_admin_admin_passthru.2 b/doc/man/nvme_mi_admin_admin_passthru.2 new file mode 100644 index 0000000..9ba91d8 --- /dev/null +++ b/doc/man/nvme_mi_admin_admin_passthru.2 @@ -0,0 +1,74 @@ +.TH "nvme_mi_admin_admin_passthru" 9 "nvme_mi_admin_admin_passthru" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_admin_passthru \- Submit an nvme admin passthrough command +.SH SYNOPSIS +.B "int" nvme_mi_admin_admin_passthru +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u8 opcode " "," +.BI "__u8 flags " "," +.BI "__u16 rsvd " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw2 " "," +.BI "__u32 cdw3 " "," +.BI "__u32 cdw10 " "," +.BI "__u32 cdw11 " "," +.BI "__u32 cdw12 " "," +.BI "__u32 cdw13 " "," +.BI "__u32 cdw14 " "," +.BI "__u32 cdw15 " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 metadata_len " "," +.BI "void *metadata " "," +.BI "__u32 timeout_ms " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "opcode" 12 +The nvme admin command to send +.IP "flags" 12 +NVMe command flags (not used) +.IP "rsvd" 12 +Reserved for future use +.IP "nsid" 12 +Namespace identifier +.IP "cdw2" 12 +Command dword 2 +.IP "cdw3" 12 +Command dword 3 +.IP "cdw10" 12 +Command dword 10 +.IP "cdw11" 12 +Command dword 11 +.IP "cdw12" 12 +Command dword 12 +.IP "cdw13" 12 +Command dword 13 +.IP "cdw14" 12 +Command dword 14 +.IP "cdw15" 12 +Command dword 15 +.IP "data_len" 12 +Length of the data transferred in this command in bytes +.IP "data" 12 +Pointer to user address of the data buffer +.IP "metadata_len" 12 +Length of metadata transferred in this command(not used) +.IP "metadata" 12 +Pointer to user address of the metadata buffer(not used) +.IP "timeout_ms" 12 +How long to wait for the command to complete +.IP "result" 12 +Optional field to return the result from the CQE dword 0 +.SH "DESCRIPTION" +Send a customized NVMe Admin command request message and get the corresponding +response message. + +This interface supports no data, host to controller and controller to +host but it doesn't support bidirectional data transfer. +Also this interface only supports data transfer size range [0, 4096] (bytes) +so the & data_len parameter must be less than 4097. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_format_nvm.2 b/doc/man/nvme_mi_admin_format_nvm.2 new file mode 100644 index 0000000..6340aec --- /dev/null +++ b/doc/man/nvme_mi_admin_format_nvm.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_format_nvm" 9 "nvme_mi_admin_format_nvm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_format_nvm \- Format NVMe namespace +.SH SYNOPSIS +.B "int" nvme_mi_admin_format_nvm +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_format_nvm_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "args" 12 +Format NVM command arguments +.SH "DESCRIPTION" +Perform a low-level format to set the LBA data & metadata size. May destroy +data & metadata on the specified namespaces +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_fw_commit.2 b/doc/man/nvme_mi_admin_fw_commit.2 new file mode 100644 index 0000000..a8c69bd --- /dev/null +++ b/doc/man/nvme_mi_admin_fw_commit.2 @@ -0,0 +1,16 @@ +.TH "nvme_mi_admin_fw_commit" 9 "nvme_mi_admin_fw_commit" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_fw_commit \- Commit firmware using the specified action +.SH SYNOPSIS +.B "int" nvme_mi_admin_fw_commit +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_fw_commit_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send firmware data to +.IP "args" 12 +\fIstruct nvme_fw_download_args\fP argument structure +.SH "DESCRIPTION" +The Firmware Commit command modifies the firmware image or Boot Partitions. +.SH "RETURN" +0 on success, non-zero on failure diff --git a/doc/man/nvme_mi_admin_fw_download.2 b/doc/man/nvme_mi_admin_fw_download.2 new file mode 100644 index 0000000..c3fab1d --- /dev/null +++ b/doc/man/nvme_mi_admin_fw_download.2 @@ -0,0 +1,27 @@ +.TH "nvme_mi_admin_fw_download" 9 "nvme_mi_admin_fw_download" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_fw_download \- Download part or all of a firmware image to the controller +.SH SYNOPSIS +.B "int" nvme_mi_admin_fw_download +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_fw_download_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send firmware data to +.IP "args" 12 +\fIstruct nvme_fw_download_args\fP argument structure +.SH "DESCRIPTION" +The Firmware Image Download command downloads all or a portion of an image +for a future update to the controller. The Firmware Image Download command +downloads a new image (in whole or in part) to the controller. + +The image may be constructed of multiple pieces that are individually +downloaded with separate Firmware Image Download commands. Each Firmware +Image Download command includes a Dword Offset and Number of Dwords that +specify a dword range. + +The new firmware image is not activated as part of the Firmware Image +Download command. Use the \fBnvme_mi_admin_fw_commit\fP to activate a newly +downloaded image. +.SH "RETURN" +0 on success, non-zero on failure diff --git a/doc/man/nvme_mi_admin_get_features_data.2 b/doc/man/nvme_mi_admin_get_features_data.2 new file mode 100644 index 0000000..07ecbf4 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_features_data.2 @@ -0,0 +1,30 @@ +.TH "nvme_mi_admin_get_features_data" 9 "nvme_mi_admin_get_features_data" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_features_data \- Helper function for &nvme_mi_admin_get_features() +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_features_data +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_features_id fid " "," +.BI "__u32 nsid " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "fid" 12 +Feature identifier +.IP "nsid" 12 +Namespace ID, if applicable for \fIfid\fP +.IP "data_len" 12 +Length of feature data, if applicable for \fIfid\fP, in bytes +.IP "data" 12 +User address of feature data, if applicable +.IP "result" 12 +The command completion result from CQE dword0 +.SH "DESCRIPTION" +Helper for optionally features that optionally return data, using the +SEL_CURRENT selector value. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log.2 b/doc/man/nvme_mi_admin_get_log.2 new file mode 100644 index 0000000..3d63864 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_get_log" 9 "nvme_mi_admin_get_log" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log \- Retrieve log page data from controller +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_get_log_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "args" 12 +Get Log Page command arguments +.SH "DESCRIPTION" +Performs a Get Log Page Admin command as specified by \fIargs\fP. Response data +is stored in \fIargs->data\fP, which should be a buffer of \fIargs->data_len\fP bytes. +Resulting data length is stored in \fIargs->data_len\fP on successful +command completion. + +This request may be implemented as multiple log page commands, in order +to fit within MI message-size limits. + +See: \fIstruct nvme_get_log_args\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_ana.2 b/doc/man/nvme_mi_admin_get_log_ana.2 new file mode 100644 index 0000000..e0e1eec --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_ana.2 @@ -0,0 +1,33 @@ +.TH "nvme_mi_admin_get_log_ana" 9 "nvme_mi_admin_get_log_ana" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_ana \- Retrieve Asymmetric Namespace Access log page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_ana +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_log_ana_lsp lsp " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "lsp" 12 +Log specific, see \fIenum nvme_get_log_ana_lsp\fP +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the ana log +.SH "DESCRIPTION" +This log consists of a header describing the log and descriptors containing +the asymmetric namespace access information for ANA Groups that contain +namespaces that are attached to the controller processing the command. + +See \fIstruct nvme_ana_rsp_hdr\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_ana_groups.2 b/doc/man/nvme_mi_admin_get_log_ana_groups.2 new file mode 100644 index 0000000..b9cf9ba --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_ana_groups.2 @@ -0,0 +1,23 @@ +.TH "nvme_mi_admin_get_log_ana_groups" 9 "nvme_mi_admin_get_log_ana_groups" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_ana_groups \- Retrieve Asymmetric Namespace Access groups only log page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_ana_groups +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u32 len " "," +.BI "struct nvme_ana_group_desc *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the ana group log +.SH "DESCRIPTION" +See \fIstruct nvme_ana_group_desc\fP for the definition of the returned structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_boot_partition.2 b/doc/man/nvme_mi_admin_get_log_boot_partition.2 new file mode 100644 index 0000000..adf9d7a --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_boot_partition.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_get_log_boot_partition" 9 "nvme_mi_admin_get_log_boot_partition" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_boot_partition \- Retrieve Boot Partition +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_boot_partition +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u8 lsp " "," +.BI "__u32 len " "," +.BI "struct nvme_boot_partition *part " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "lsp" 12 +The log specified field of LID +.IP "len" 12 +The allocated size, minimum +struct nvme_boot_partition +.IP "part" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_changed_ns_list.2 b/doc/man/nvme_mi_admin_get_log_changed_ns_list.2 new file mode 100644 index 0000000..22f8301 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_changed_ns_list.2 @@ -0,0 +1,22 @@ +.TH "nvme_mi_admin_get_log_changed_ns_list" 9 "nvme_mi_admin_get_log_changed_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_changed_ns_list \- Retrieve namespace changed list +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_changed_ns_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_ns_list *ns_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "ns_log" 12 +User address to store the log page +.SH "DESCRIPTION" +This log page describes namespaces attached to this controller that have +changed since the last time the namespace was identified, been added, or +deleted. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_cmd_effects.2 b/doc/man/nvme_mi_admin_get_log_cmd_effects.2 new file mode 100644 index 0000000..cb30a55 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_cmd_effects.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_get_log_cmd_effects" 9 "nvme_mi_admin_get_log_cmd_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_cmd_effects \- Retrieve nvme command effects log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_cmd_effects +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_csi csi " "," +.BI "struct nvme_cmd_effects_log *effects_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "csi" 12 +Command Set Identifier +.IP "effects_log" 12 +User address to store the effects log +.SH "DESCRIPTION" +This log page describes the commands that the controller supports and the +effects of those commands on the state of the NVM subsystem. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_create_telemetry_host.2 b/doc/man/nvme_mi_admin_get_log_create_telemetry_host.2 new file mode 100644 index 0000000..cdf6cb6 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_create_telemetry_host.2 @@ -0,0 +1,15 @@ +.TH "nvme_mi_admin_get_log_create_telemetry_host" 9 "nvme_mi_admin_get_log_create_telemetry_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_create_telemetry_host \- Create host telemetry log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_create_telemetry_host +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_telemetry_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "log" 12 +Userspace address of the log payload +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_device_self_test.2 b/doc/man/nvme_mi_admin_get_log_device_self_test.2 new file mode 100644 index 0000000..76606fa --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_device_self_test.2 @@ -0,0 +1,19 @@ +.TH "nvme_mi_admin_get_log_device_self_test" 9 "nvme_mi_admin_get_log_device_self_test" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_device_self_test \- Retrieve the device self test log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_device_self_test +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_self_test_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "log" 12 +Userspace address of the log payload +.SH "DESCRIPTION" +The log page indicates the status of an in progress self test and the +percent complete of that operation, and the results of the previous 20 +self-test operations. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_discovery.2 b/doc/man/nvme_mi_admin_get_log_discovery.2 new file mode 100644 index 0000000..c65ed47 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_discovery.2 @@ -0,0 +1,27 @@ +.TH "nvme_mi_admin_get_log_discovery" 9 "nvme_mi_admin_get_log_discovery" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_discovery \- Retrieve Discovery log page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_discovery +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset of this log to retrieve +.IP "len" 12 +The allocated size for this portion of the log +.IP "log" 12 +User address to store the discovery log +.SH "DESCRIPTION" +Supported only by fabrics discovery controllers, returning discovery +records. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_endurance_group.2 b/doc/man/nvme_mi_admin_get_log_endurance_group.2 new file mode 100644 index 0000000..55917ac --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_endurance_group.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_get_log_endurance_group" 9 "nvme_mi_admin_get_log_endurance_group" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_endurance_group \- Get Endurance Group log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_endurance_group +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 endgid " "," +.BI "struct nvme_endurance_group_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "endgid" 12 +Starting group identifier to return in the list +.IP "log" 12 +User address to store the endurance log +.SH "DESCRIPTION" +This log page indicates if an Endurance Group Event has occurred for a +particular Endurance Group. If an Endurance Group Event has occurred, the +details of the particular event are included in the Endurance Group +Information log page for that Endurance Group. An asynchronous event is +generated when an entry for an Endurance Group is newly added to this log +page. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_endurance_grp_evt.2 b/doc/man/nvme_mi_admin_get_log_endurance_grp_evt.2 new file mode 100644 index 0000000..14aa007 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_endurance_grp_evt.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_get_log_endurance_grp_evt" 9 "nvme_mi_admin_get_log_endurance_grp_evt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_endurance_grp_evt \- Retrieve Rotational Media Information +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_endurance_grp_evt +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_error.2 b/doc/man/nvme_mi_admin_get_log_error.2 new file mode 100644 index 0000000..5bb2983 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_error.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_get_log_error" 9 "nvme_mi_admin_get_log_error" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_error \- Retrieve nvme error log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_error +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "unsigned int nr_entries " "," +.BI "bool rae " "," +.BI "struct nvme_error_log_page *err_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "nr_entries" 12 +Number of error log entries allocated +.IP "rae" 12 +Retain asynchronous events +.IP "err_log" 12 +Array of error logs of size 'entries' +.SH "DESCRIPTION" +This log page describes extended error information for a command that +completed with error, or may report an error that is not specific to a +particular command. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_fid_supported_effects.2 b/doc/man/nvme_mi_admin_get_log_fid_supported_effects.2 new file mode 100644 index 0000000..d090aed --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_fid_supported_effects.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_fid_supported_effects" 9 "nvme_mi_admin_get_log_fid_supported_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_fid_supported_effects \- Retrieve Feature Identifiers Supported and Effects +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_fid_supported_effects +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_fid_supported_effects_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +FID Supported and Effects data structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_fw_slot.2 b/doc/man/nvme_mi_admin_get_log_fw_slot.2 new file mode 100644 index 0000000..098d7dc --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_fw_slot.2 @@ -0,0 +1,22 @@ +.TH "nvme_mi_admin_get_log_fw_slot" 9 "nvme_mi_admin_get_log_fw_slot" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_fw_slot \- Retrieves the controller firmware log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_fw_slot +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_firmware_slot *fw_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "fw_log" 12 +User address to store the log page +.SH "DESCRIPTION" +This log page describes the firmware revision stored in each firmware slot +supported. The firmware revision is indicated as an ASCII string. The log +page also indicates the active slot number. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_lba_status.2 b/doc/man/nvme_mi_admin_get_log_lba_status.2 new file mode 100644 index 0000000..a140e27 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_lba_status.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_get_log_lba_status" 9 "nvme_mi_admin_get_log_lba_status" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_lba_status \- Retrieve LBA Status +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_lba_status +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset to the start of the log page +.IP "len" 12 +The allocated length of the log page +.IP "log" 12 +User address to store the log page +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_media_unit_stat.2 b/doc/man/nvme_mi_admin_get_log_media_unit_stat.2 new file mode 100644 index 0000000..a2516b8 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_media_unit_stat.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_media_unit_stat" 9 "nvme_mi_admin_get_log_media_unit_stat" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_media_unit_stat \- Retrieve Media Unit Status +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_media_unit_stat +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 domid " "," +.BI "struct nvme_media_unit_stat_log *mus " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "domid" 12 +Domain Identifier selection, if supported +.IP "mus" 12 +User address to store the Media Unit statistics log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_mi_cmd_supported_effects.2 b/doc/man/nvme_mi_admin_get_log_mi_cmd_supported_effects.2 new file mode 100644 index 0000000..0412b25 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_mi_cmd_supported_effects.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_mi_cmd_supported_effects" 9 "nvme_mi_admin_get_log_mi_cmd_supported_effects" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_mi_cmd_supported_effects \- displays the MI Commands Supported by the controller +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_mi_cmd_supported_effects +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_mi_cmd_supported_effects_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +MI Command Supported and Effects data structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_persistent_event.2 b/doc/man/nvme_mi_admin_get_log_persistent_event.2 new file mode 100644 index 0000000..39a43a3 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_persistent_event.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_get_log_persistent_event" 9 "nvme_mi_admin_get_log_persistent_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_persistent_event \- Retrieve Persistent Event Log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_persistent_event +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_pevent_log_action action " "," +.BI "__u32 size " "," +.BI "void *pevent_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "action" 12 +Action the controller should take during processing this command +.IP "size" 12 +Size of \fIpevent_log\fP +.IP "pevent_log" 12 +User address to store the persistent event log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_predictable_lat_event.2 b/doc/man/nvme_mi_admin_get_log_predictable_lat_event.2 new file mode 100644 index 0000000..e4272b1 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_predictable_lat_event.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_get_log_predictable_lat_event" 9 "nvme_mi_admin_get_log_predictable_lat_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_predictable_lat_event \- Retrieve Predictable Latency Event Aggregate Log Page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_predictable_lat_event +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u32 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset into the predictable latency event +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_predictable_lat_nvmset.2 b/doc/man/nvme_mi_admin_get_log_predictable_lat_nvmset.2 new file mode 100644 index 0000000..b827805 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_predictable_lat_nvmset.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_predictable_lat_nvmset" 9 "nvme_mi_admin_get_log_predictable_lat_nvmset" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_predictable_lat_nvmset \- Predictable Latency Per NVM Set +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_predictable_lat_nvmset +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 nvmsetid " "," +.BI "struct nvme_nvmset_predictable_lat_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "nvmsetid" 12 +NVM set id +.IP "log" 12 +User address to store the predictable latency log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_reservation.2 b/doc/man/nvme_mi_admin_get_log_reservation.2 new file mode 100644 index 0000000..7f27ac4 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_reservation.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_reservation" 9 "nvme_mi_admin_get_log_reservation" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_reservation \- Retrieve Reservation Notification +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_reservation +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_resv_notification_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the reservation log +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_sanitize.2 b/doc/man/nvme_mi_admin_get_log_sanitize.2 new file mode 100644 index 0000000..2eb8ca1 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_sanitize.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_get_log_sanitize" 9 "nvme_mi_admin_get_log_sanitize" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_sanitize \- Retrieve Sanitize Status +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_sanitize +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_sanitize_log_page *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the sanitize log +.SH "DESCRIPTION" +The Sanitize Status log page reports sanitize operation time estimates and +information about the most recent sanitize operation. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_simple.2 b/doc/man/nvme_mi_admin_get_log_simple.2 new file mode 100644 index 0000000..1277095 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_simple.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_get_log_simple" 9 "nvme_mi_admin_get_log_simple" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_simple \- Helper for Get Log Page functions with no NSID or RAE requirements +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_simple +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_cmd_get_log_lid lid " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "lid" 12 +Log identifier +.IP "len" 12 +length of log buffer +.IP "log" 12 +pointer for resulting log data +.SH "DESCRIPTION" +Performs a Get Log Page Admin command for a specific log ID \fIlid\fP, using +NVME_NSID_ALL for the namespace identifier, and rae set to false. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_smart.2 b/doc/man/nvme_mi_admin_get_log_smart.2 new file mode 100644 index 0000000..742bf24 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_smart.2 @@ -0,0 +1,28 @@ +.TH "nvme_mi_admin_get_log_smart" 9 "nvme_mi_admin_get_log_smart" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_smart \- Retrieve nvme smart log +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_smart +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "bool rae " "," +.BI "struct nvme_smart_log *smart_log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "nsid" 12 +Optional namespace identifier +.IP "rae" 12 +Retain asynchronous events +.IP "smart_log" 12 +User address to store the smart log +.SH "DESCRIPTION" +This log page provides SMART and general health information. The information +provided is over the life of the controller and is retained across power +cycles. To request the controller log page, the namespace identifier +specified is FFFFFFFFh. The controller may also support requesting the log +page on a per namespace basis, as indicated by bit 0 of the LPA field in the +Identify Controller data structure. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_support_cap_config_list.2 b/doc/man/nvme_mi_admin_get_log_support_cap_config_list.2 new file mode 100644 index 0000000..b4d1df5 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_support_cap_config_list.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_support_cap_config_list" 9 "nvme_mi_admin_get_log_support_cap_config_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_support_cap_config_list \- Retrieve Supported Capacity Configuration List +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_support_cap_config_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 domid " "," +.BI "struct nvme_supported_cap_config_list_log *cap " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "domid" 12 +Domain Identifier selection, if supported +.IP "cap" 12 +User address to store supported capabilities config list +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_supported_log_pages.2 b/doc/man/nvme_mi_admin_get_log_supported_log_pages.2 new file mode 100644 index 0000000..7958459 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_supported_log_pages.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_get_log_supported_log_pages" 9 "nvme_mi_admin_get_log_supported_log_pages" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_supported_log_pages \- Retrieve nmve supported log pages +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_supported_log_pages +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "struct nvme_supported_log_pages *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +Array of LID supported and Effects data structures +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_telemetry_ctrl.2 b/doc/man/nvme_mi_admin_get_log_telemetry_ctrl.2 new file mode 100644 index 0000000..623c5fb --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_telemetry_ctrl.2 @@ -0,0 +1,27 @@ +.TH "nvme_mi_admin_get_log_telemetry_ctrl" 9 "nvme_mi_admin_get_log_telemetry_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_telemetry_ctrl \- Get Telemetry Controller-Initiated log page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_telemetry_ctrl +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain asynchronous events +.IP "offset" 12 +Offset into the telemetry data +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "DESCRIPTION" +Retrieves the Telemetry Controller-Initiated log page at the requested offset +using the previously existing capture. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_telemetry_host.2 b/doc/man/nvme_mi_admin_get_log_telemetry_host.2 new file mode 100644 index 0000000..9a96a4b --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_telemetry_host.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_get_log_telemetry_host" 9 "nvme_mi_admin_get_log_telemetry_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_telemetry_host \- Get Telemetry Host-Initiated log page +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_telemetry_host +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u64 offset " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "offset" 12 +Offset into the telemetry data +.IP "len" 12 +Length of provided user buffer to hold the log data in bytes +.IP "log" 12 +User address for log page data +.SH "DESCRIPTION" +Retrieves the Telemetry Host-Initiated log page at the requested offset +using the previously existing capture. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_log_zns_changed_zones.2 b/doc/man/nvme_mi_admin_get_log_zns_changed_zones.2 new file mode 100644 index 0000000..b2e3614 --- /dev/null +++ b/doc/man/nvme_mi_admin_get_log_zns_changed_zones.2 @@ -0,0 +1,23 @@ +.TH "nvme_mi_admin_get_log_zns_changed_zones" 9 "nvme_mi_admin_get_log_zns_changed_zones" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_log_zns_changed_zones \- Retrieve list of zones that have changed +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_log_zns_changed_zones +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "bool rae " "," +.BI "struct nvme_zns_changed_zone_log *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "nsid" 12 +Namespace ID +.IP "rae" 12 +Retain asynchronous events +.IP "log" 12 +User address to store the changed zone log +.SH "DESCRIPTION" +The list of zones that have changed state due to an exceptional event. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_get_nsid_log.2 b/doc/man/nvme_mi_admin_get_nsid_log.2 new file mode 100644 index 0000000..8126e5f --- /dev/null +++ b/doc/man/nvme_mi_admin_get_nsid_log.2 @@ -0,0 +1,32 @@ +.TH "nvme_mi_admin_get_nsid_log" 9 "nvme_mi_admin_get_nsid_log" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_get_nsid_log \- Helper for Get Log Page functions +.SH SYNOPSIS +.B "int" nvme_mi_admin_get_nsid_log +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "bool rae " "," +.BI "enum nvme_cmd_get_log_lid lid " "," +.BI "__u32 nsid " "," +.BI "__u32 len " "," +.BI "void *log " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to query +.IP "rae" 12 +Retain Asynchronous Events +.IP "lid" 12 +Log identifier +.IP "nsid" 12 +Namespace ID +.IP "len" 12 +length of log buffer +.IP "log" 12 +pointer for resulting log data +.SH "DESCRIPTION" +Performs a Get Log Page Admin command for a specific log ID \fIlid\fP and +namespace ID \fInsid\fP. Log data is expected to be \fIlen\fP bytes, and is stored +in \fIlog\fP on success. The \fIrae\fP flag is passed as-is to the Get Log Page +command, and is specific to the Log Page requested. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify.2 b/doc/man/nvme_mi_admin_identify.2 new file mode 100644 index 0000000..c741daa --- /dev/null +++ b/doc/man/nvme_mi_admin_identify.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_identify" 9 "nvme_mi_admin_identify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify \- Perform an Admin identify command. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_identify_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "args" 12 +Identify command arguments +.SH "DESCRIPTION" +Perform an Identify command, using the Identify command parameters in \fIargs\fP. +Stores the identify data in ->data, and (if set) the result from cdw0 +into args->result. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP. + +See: \fIstruct nvme_identify_args\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_active_ns_list.2 b/doc/man/nvme_mi_admin_identify_active_ns_list.2 new file mode 100644 index 0000000..4a374ac --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_active_ns_list.2 @@ -0,0 +1,28 @@ +.TH "nvme_mi_admin_identify_active_ns_list" 9 "nvme_mi_admin_identify_active_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_active_ns_list \- Perform an Admin identify for an active namespace list +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_active_ns_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_list *list " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +Namespace ID to specify list start +.IP "list" 12 +List data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the active namespace list starting with +IDs greater than or equal to \fInsid\fP. Specify \fINVME_NSID_NONE\fP for the start +of the list. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIlist\fP will be +be fully populated on success. + +See: \fIstruct nvme_ns_list\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_allocated_ns.2 b/doc/man/nvme_mi_admin_identify_allocated_ns.2 new file mode 100644 index 0000000..4fd9023 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_allocated_ns.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_identify_allocated_ns" 9 "nvme_mi_admin_identify_allocated_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_allocated_ns \- Perform an Admin identify command for an allocated namespace +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_allocated_ns +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_ns *ns " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +namespace ID +.IP "ns" 12 +Namespace identification to populate +.SH "DESCRIPTION" +Perform an Identify (namespace) command, setting the namespace id data +in \fIns\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_allocated_ns_list.2 b/doc/man/nvme_mi_admin_identify_allocated_ns_list.2 new file mode 100644 index 0000000..fd42cb2 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_allocated_ns_list.2 @@ -0,0 +1,28 @@ +.TH "nvme_mi_admin_identify_allocated_ns_list" 9 "nvme_mi_admin_identify_allocated_ns_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_allocated_ns_list \- Perform an Admin identify for an allocated namespace list +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_allocated_ns_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_list *list " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +Namespace ID to specify list start +.IP "list" 12 +List data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the allocated namespace list starting with +IDs greater than or equal to \fInsid\fP. Specify \fINVME_NSID_NONE\fP for the start +of the list. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIlist\fP will be +be fully populated on success. + +See: \fIstruct nvme_ns_list\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_cns_nsid.2 b/doc/man/nvme_mi_admin_identify_cns_nsid.2 new file mode 100644 index 0000000..49c9c2b --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_cns_nsid.2 @@ -0,0 +1,30 @@ +.TH "nvme_mi_admin_identify_cns_nsid" 9 "nvme_mi_admin_identify_cns_nsid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_cns_nsid \- Perform an Admin identify command using specific CNS/NSID parameters. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_cns_nsid +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "enum nvme_identify_cns cns " "," +.BI "__u32 nsid " "," +.BI "void *data " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "cns" 12 +Controller or Namespace Structure, specifying identified object +.IP "nsid" 12 +namespace ID +.IP "data" 12 +buffer for identify data response +.SH "DESCRIPTION" +Perform an Identify command, using the CNS specifier \fIcns\fP, and the +namespace ID \fInsid\fP if required by the CNS type. + +Stores the identify data in \fIdata\fP, which is expected to be a buffer of +\fINVME_IDENTIFY_DATA_SIZE\fP bytes. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_ctrl.2 b/doc/man/nvme_mi_admin_identify_ctrl.2 new file mode 100644 index 0000000..a268d0b --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_ctrl.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_admin_identify_ctrl" 9 "nvme_mi_admin_identify_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_ctrl \- Perform an Admin identify for a controller +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_ctrl +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_id_ctrl *id " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "id" 12 +Controller identify data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the controller specified by \fIctrl\fP, +writing identify data to \fIid\fP. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIid\fP will be +fully populated on success. + +See: \fIstruct nvme_id_ctrl\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_ctrl_list.2 b/doc/man/nvme_mi_admin_identify_ctrl_list.2 new file mode 100644 index 0000000..c407f3b --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_ctrl_list.2 @@ -0,0 +1,27 @@ +.TH "nvme_mi_admin_identify_ctrl_list" 9 "nvme_mi_admin_identify_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_ctrl_list \- Perform an Admin identify for a controller list. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_ctrl_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 cntid " "," +.BI "struct nvme_ctrl_list *list " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "cntid" 12 +Controller ID to specify list start +.IP "list" 12 +List data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the controller list starting with +IDs greater than or equal to \fIcntid\fP. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIid\fP will be +fully populated on success. + +See: \fIstruct nvme_ctrl_list\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_ns.2 b/doc/man/nvme_mi_admin_identify_ns.2 new file mode 100644 index 0000000..5333f89 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_ns.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_identify_ns" 9 "nvme_mi_admin_identify_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_ns \- Perform an Admin identify command for a namespace +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_ns +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_id_ns *ns " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +namespace ID +.IP "ns" 12 +Namespace identification to populate +.SH "DESCRIPTION" +Perform an Identify (namespace) command, setting the namespace id data +in \fIns\fP. The namespace is expected to active and allocated. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_ns_descs.2 b/doc/man/nvme_mi_admin_identify_ns_descs.2 new file mode 100644 index 0000000..919f008 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_ns_descs.2 @@ -0,0 +1,21 @@ +.TH "nvme_mi_admin_identify_ns_descs" 9 "nvme_mi_admin_identify_ns_descs" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_ns_descs \- Perform an Admin identify Namespace Identification Descriptor list command for a namespace +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_ns_descs +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ns_id_desc *descs " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +Namespace ID +.IP "descs" 12 +Namespace Identification Descriptor list to populate +.SH "DESCRIPTION" +Perform an Identify namespace identification description list command, +setting the namespace identification description list in \fIdescs\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_nsid_ctrl_list.2 b/doc/man/nvme_mi_admin_identify_nsid_ctrl_list.2 new file mode 100644 index 0000000..981f7a6 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_nsid_ctrl_list.2 @@ -0,0 +1,30 @@ +.TH "nvme_mi_admin_identify_nsid_ctrl_list" 9 "nvme_mi_admin_identify_nsid_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_nsid_ctrl_list \- Perform an Admin identify for a controller list with specific namespace ID +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_nsid_ctrl_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "__u16 cntid " "," +.BI "struct nvme_ctrl_list *list " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +Namespace identifier +.IP "cntid" 12 +Controller ID to specify list start +.IP "list" 12 +List data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the controller list for \fInsid\fP, starting +with IDs greater than or equal to \fIcntid\fP. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIid\fP will be +fully populated on success. + +See: \fIstruct nvme_ctrl_list\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_partial.2 b/doc/man/nvme_mi_admin_identify_partial.2 new file mode 100644 index 0000000..027c4f6 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_partial.2 @@ -0,0 +1,37 @@ +.TH "nvme_mi_admin_identify_partial" 9 "nvme_mi_admin_identify_partial" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_partial \- Perform an Admin identify command, and retrieve partial response data. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_partial +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_identify_args *args " "," +.BI "off_t offset " "," +.BI "size_t size " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "args" 12 +Identify command arguments +.IP "offset" 12 +offset of identify data to retrieve from response +.IP "size" 12 +size of identify data to return +.SH "DESCRIPTION" +Perform an Identify command, using the Identify command parameters in \fIargs\fP. +The \fIoffset\fP and \fIsize\fP arguments allow the caller to retrieve part of +the identify response. See NVMe-MI section 6.2 for the semantics (and some +handy diagrams) of the offset & size parameters. + +Will return an error if the length of the response data (from the controller) +did not match \fIsize\fP. + +Unless you're performing a vendor-unique identify command, You'll probably +want to use one of the identify helpers (nvme_mi_admin_identify, +nvme_mi_admin_identify_cns_nsid, or nvme_mi_admin_identify_<type>) instead +of this. If the type of your identify command is standardized but not +yet supported by libnvme-mi, please contact the maintainers. + +See: \fIstruct nvme_identify_args\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_identify_primary_ctrl.2 b/doc/man/nvme_mi_admin_identify_primary_ctrl.2 new file mode 100644 index 0000000..13eec74 --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_primary_ctrl.2 @@ -0,0 +1,26 @@ +.TH "nvme_mi_admin_identify_primary_ctrl" 9 "nvme_mi_admin_identify_primary_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_primary_ctrl \- Perform an Admin identify for primary controller capabilities data structure. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_primary_ctrl +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u16 cntid " "," +.BI "struct nvme_primary_ctrl_cap *cap " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "cntid" 12 +Controller ID to specify +.IP "cap" 12 +Primary Controller Capabilities data structure to populate +.SH "DESCRIPTION" +Perform an Identify command to get the Primary Controller Capabilities data +for the controller specified by \fIcntid\fP + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIcap\fP will be +be fully populated on success. + +See: \fIstruct nvme_primary_ctrl_cap\fP +.SH "RETURN" +0 on success, non-zero on failure diff --git a/doc/man/nvme_mi_admin_identify_secondary_ctrl_list.2 b/doc/man/nvme_mi_admin_identify_secondary_ctrl_list.2 new file mode 100644 index 0000000..2339d4d --- /dev/null +++ b/doc/man/nvme_mi_admin_identify_secondary_ctrl_list.2 @@ -0,0 +1,30 @@ +.TH "nvme_mi_admin_identify_secondary_ctrl_list" 9 "nvme_mi_admin_identify_secondary_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_identify_secondary_ctrl_list \- Perform an Admin identify for a secondary controller list. +.SH SYNOPSIS +.B "int" nvme_mi_admin_identify_secondary_ctrl_list +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "__u16 cntid " "," +.BI "struct nvme_secondary_ctrl_list *list " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to process identify command +.IP "nsid" 12 +Namespace ID to specify list start +.IP "cntid" 12 +Controller ID to specify list start +.IP "list" 12 +List data to populate +.SH "DESCRIPTION" +Perform an Identify command, for the secondary controllers associated with +the current primary controller. Only entries with IDs greater than or +equal to \fIcntid\fP are returned. + +Will return an error if the length of the response data (from the +controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP, so \fIlist\fP will be +be fully populated on success. + +See: \fIstruct nvme_secondary_ctrl_list\fP +.SH "RETURN" +0 on success, non-zero on failure diff --git a/doc/man/nvme_mi_admin_ns_attach.2 b/doc/man/nvme_mi_admin_ns_attach.2 new file mode 100644 index 0000000..94d7c8e --- /dev/null +++ b/doc/man/nvme_mi_admin_ns_attach.2 @@ -0,0 +1,15 @@ +.TH "nvme_mi_admin_ns_attach" 9 "nvme_mi_admin_ns_attach" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_ns_attach \- Attach or detach namespace to controller(s) +.SH SYNOPSIS +.B "int" nvme_mi_admin_ns_attach +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_ns_attach_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "args" 12 +Namespace Attach command arguments +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_ns_attach_ctrls.2 b/doc/man/nvme_mi_admin_ns_attach_ctrls.2 new file mode 100644 index 0000000..ebb64a6 --- /dev/null +++ b/doc/man/nvme_mi_admin_ns_attach_ctrls.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_ns_attach_ctrls" 9 "nvme_mi_admin_ns_attach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_ns_attach_ctrls \- Attach namespace to controllers +.SH SYNOPSIS +.B "int" nvme_mi_admin_ns_attach_ctrls +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ctrl_list *ctrlist " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "nsid" 12 +Namespace ID to attach +.IP "ctrlist" 12 +Controller list to modify attachment state of nsid +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_ns_detach_ctrls.2 b/doc/man/nvme_mi_admin_ns_detach_ctrls.2 new file mode 100644 index 0000000..799c39a --- /dev/null +++ b/doc/man/nvme_mi_admin_ns_detach_ctrls.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_admin_ns_detach_ctrls" 9 "nvme_mi_admin_ns_detach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_ns_detach_ctrls \- Detach namespace from controllers +.SH SYNOPSIS +.B "int" nvme_mi_admin_ns_detach_ctrls +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ctrl_list *ctrlist " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "nsid" 12 +Namespace ID to detach +.IP "ctrlist" 12 +Controller list to modify attachment state of nsid +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_req_hdr.2 b/doc/man/nvme_mi_admin_req_hdr.2 new file mode 100644 index 0000000..33b22de --- /dev/null +++ b/doc/man/nvme_mi_admin_req_hdr.2 @@ -0,0 +1,72 @@ +.TH "libnvme" 9 "struct nvme_mi_admin_req_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_admin_req_hdr \- Admin command request header. +.SH SYNOPSIS +struct nvme_mi_admin_req_hdr { +.br +.BI " struct nvme_mi_msg_hdr hdr;" +.br +.BI " __u8 opcode;" +.br +.BI " __u8 flags;" +.br +.BI " __le16 ctrl_id;" +.br +.BI " __le32 cdw1, cdw2, cdw3, cdw4, cdw5;" +.br +.BI " __le32 doff;" +.br +.BI " __le32 dlen;" +.br +.BI " __le32 rsvd0, rsvd1;" +.br +.BI " __le32 cdw10, cdw11, cdw12, cdw13, cdw14, cdw15;" +.br +.BI " +}; +.br + +.SH Members +.IP "hdr" 12 +Generic MI message header +.IP "opcode" 12 +Admin command opcode (using enum nvme_admin_opcode) +.IP "flags" 12 +Command Flags, indicating dlen and doff validity; Only defined in +NVMe-MI version 1.1, no fields defined in 1.2 (where the dlen/doff +are always considered valid). +.IP "ctrl_id" 12 +Controller ID target of command +.IP "cdw1" 12 +Submission Queue Entry doubleword 1 +.IP "cdw2" 12 +Submission Queue Entry doubleword 2 +.IP "cdw3" 12 +Submission Queue Entry doubleword 3 +.IP "cdw4" 12 +Submission Queue Entry doubleword 4 +.IP "cdw5" 12 +Submission Queue Entry doubleword 5 +.IP "doff" 12 +Offset of data to return from command +.IP "dlen" 12 +Length of sent/returned data +.IP "rsvd0" 12 +Reserved +.IP "rsvd1" 12 +Reserved +.IP "cdw10" 12 +Submission Queue Entry doubleword 10 +.IP "cdw11" 12 +Submission Queue Entry doubleword 11 +.IP "cdw12" 12 +Submission Queue Entry doubleword 12 +.IP "cdw13" 12 +Submission Queue Entry doubleword 13 +.IP "cdw14" 12 +Submission Queue Entry doubleword 14 +.IP "cdw15" 12 +Submission Queue Entry doubleword 15 +.SH "Description" +Wire format for Admin command message headers, defined in section 6 of +NVMe-MI. diff --git a/doc/man/nvme_mi_admin_resp_hdr.2 b/doc/man/nvme_mi_admin_resp_hdr.2 new file mode 100644 index 0000000..1818c60 --- /dev/null +++ b/doc/man/nvme_mi_admin_resp_hdr.2 @@ -0,0 +1,34 @@ +.TH "libnvme" 9 "struct nvme_mi_admin_resp_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_admin_resp_hdr \- Admin command response header. +.SH SYNOPSIS +struct nvme_mi_admin_resp_hdr { +.br +.BI " struct nvme_mi_msg_hdr hdr;" +.br +.BI " __u8 status;" +.br +.BI " __u8 rsvd0[3];" +.br +.BI " __le32 cdw0, cdw1, cdw3;" +.br +.BI " +}; +.br + +.SH Members +.IP "hdr" 12 +Generic MI message header +.IP "status" 12 +Generic response code, non-zero on failure +.IP "rsvd0" 12 +Reserved +.IP "cdw0" 12 +Completion Queue Entry doubleword 0 +.IP "cdw1" 12 +Completion Queue Entry doubleword 1 +.IP "cdw3" 12 +Completion Queue Entry doubleword 3 +.SH "Description" +This is the generic response format with the three doublewords of completion +queue data, plus optional response data. diff --git a/doc/man/nvme_mi_admin_sanitize_nvm.2 b/doc/man/nvme_mi_admin_sanitize_nvm.2 new file mode 100644 index 0000000..c27abd2 --- /dev/null +++ b/doc/man/nvme_mi_admin_sanitize_nvm.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_sanitize_nvm" 9 "nvme_mi_admin_sanitize_nvm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_sanitize_nvm \- Start a subsystem Sanitize operation +.SH SYNOPSIS +.B "int" nvme_mi_admin_sanitize_nvm +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_sanitize_nvm_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "args" 12 +Sanitize command arguments +.SH "DESCRIPTION" +A sanitize operation alters all user data in the NVM subsystem such that +recovery of any previous user data from any cache, the non-volatile media, +or any Controller Memory Buffer is not possible. + +The Sanitize command starts a sanitize operation or to recover from a +previously failed sanitize operation. The sanitize operation types that may +be supported are Block Erase, Crypto Erase, and Overwrite. All sanitize +operations are processed in the background, i.e., completion of the sanitize +command does not indicate completion of the sanitize operation. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_security_recv.2 b/doc/man/nvme_mi_admin_security_recv.2 new file mode 100644 index 0000000..b101ab0 --- /dev/null +++ b/doc/man/nvme_mi_admin_security_recv.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_security_recv" 9 "nvme_mi_admin_security_recv" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_security_recv \- Perform a Security Receive command on a controller. +.SH SYNOPSIS +.B "int" nvme_mi_admin_security_recv +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_security_receive_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "args" 12 +Security Receive command arguments +.SH "DESCRIPTION" +Performs a Security Receive Admin command as specified by \fIargs\fP. Response +data is stored in \fIargs->data\fP, which should be a buffer of \fIargs->data_len\fP +bytes. Resulting data length is stored in \fIargs->data_len\fP on successful +command completion. + +Security Receive data length should not be greater than 4096 bytes to +comply with specification limits. + +See: \fIstruct nvme_get_log_args\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_security_send.2 b/doc/man/nvme_mi_admin_security_send.2 new file mode 100644 index 0000000..12c34b3 --- /dev/null +++ b/doc/man/nvme_mi_admin_security_send.2 @@ -0,0 +1,25 @@ +.TH "nvme_mi_admin_security_send" 9 "nvme_mi_admin_security_send" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_security_send \- Perform a Security Send command on a controller. +.SH SYNOPSIS +.B "int" nvme_mi_admin_security_send +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_security_send_args *args " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +Controller to send command to +.IP "args" 12 +Security Send command arguments +.SH "DESCRIPTION" +Performs a Security Send Admin command as specified by \fIargs\fP. Response data +is stored in \fIargs->data\fP, which should be a buffer of \fIargs->data_len\fP bytes. +Resulting data length is stored in \fIargs->data_len\fP on successful +command completion. + +Security Send data length should not be greater than 4096 bytes to +comply with specification limits. + +See: \fIstruct nvme_get_log_args\fP +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_mi_admin_xfer.2 b/doc/man/nvme_mi_admin_xfer.2 new file mode 100644 index 0000000..9685540 --- /dev/null +++ b/doc/man/nvme_mi_admin_xfer.2 @@ -0,0 +1,42 @@ +.TH "nvme_mi_admin_xfer" 9 "nvme_mi_admin_xfer" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_admin_xfer \- Raw admin transfer interface. +.SH SYNOPSIS +.B "int" nvme_mi_admin_xfer +.BI "(nvme_mi_ctrl_t ctrl " "," +.BI "struct nvme_mi_admin_req_hdr *admin_req " "," +.BI "size_t req_data_size " "," +.BI "struct nvme_mi_admin_resp_hdr *admin_resp " "," +.BI "off_t resp_data_offset " "," +.BI "size_t *resp_data_size " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +controller to send the admin command to +.IP "admin_req" 12 +request data +.IP "req_data_size" 12 +size of request data payload +.IP "admin_resp" 12 +buffer for response data +.IP "resp_data_offset" 12 +offset into request data to retrieve from controller +.IP "resp_data_size" 12 +size of response data buffer, updated to received size +.SH "DESCRIPTION" +Performs an arbitrary NVMe Admin command, using the provided request data, +in \fIadmin_req\fP. The size of the request data *payload* is specified in +\fIreq_data_size\fP - this does not include the standard header length (so a +header-only request would have a size of 0). + +On success, response data is stored in \fIadmin_resp\fP, which has an optional +appended payload buffer of \fIresp_data_size\fP bytes. The actual payload +transferred will be stored in \fIresp_data_size\fP. These sizes do not include +the Admin request header, so 0 represents no payload. + +As with all Admin commands, we can request partial data from the Admin +Response payload, offset by \fIresp_data_offset\fP. + +See: \fIstruct nvme_mi_admin_req_hdr\fP and \fIstruct nvme_mi_admin_resp_hdr\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_ccs.2 b/doc/man/nvme_mi_ccs.2 new file mode 100644 index 0000000..9f1d05c --- /dev/null +++ b/doc/man/nvme_mi_ccs.2 @@ -0,0 +1,78 @@ +.TH "libnvme" 9 "enum nvme_mi_ccs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_ccs \- Get State Control Primitive Success Response Fields - Control Primitive Specific Response +.SH SYNOPSIS +enum nvme_mi_ccs { +.br +.BI " NVME_MI_CCS_RDY" +, +.br +.br +.BI " NVME_MI_CCS_CFS" +, +.br +.br +.BI " NVME_MI_CCS_SHST" +, +.br +.br +.BI " NVME_MI_CCS_NSSRO" +, +.br +.br +.BI " NVME_MI_CCS_CECO" +, +.br +.br +.BI " NVME_MI_CCS_NAC" +, +.br +.br +.BI " NVME_MI_CCS_FA" +, +.br +.br +.BI " NVME_MI_CCS_CSTS" +, +.br +.br +.BI " NVME_MI_CCS_CTEMP" +, +.br +.br +.BI " NVME_MI_CCS_PDLU" +, +.br +.br +.BI " NVME_MI_CCS_SPARE" +, +.br +.br +.BI " NVME_MI_CCS_CCWARN" + +}; +.SH Constants +.IP "NVME_MI_CCS_RDY" 12 +Ready +.IP "NVME_MI_CCS_CFS" 12 +Controller Fatal Status +.IP "NVME_MI_CCS_SHST" 12 +Shutdown Status +.IP "NVME_MI_CCS_NSSRO" 12 +NVM Subsystem Reset Occurred +.IP "NVME_MI_CCS_CECO" 12 +Controller Enable Change Occurred +.IP "NVME_MI_CCS_NAC" 12 +Namespace Attribute Changed +.IP "NVME_MI_CCS_FA" 12 +Firmware Activated +.IP "NVME_MI_CCS_CSTS" 12 +Controller Status Change +.IP "NVME_MI_CCS_CTEMP" 12 +Composite Temperature Change +.IP "NVME_MI_CCS_PDLU" 12 +Percentage Used +.IP "NVME_MI_CCS_SPARE" 12 +Available Spare +.IP "NVME_MI_CCS_CCWARN" 12 +Critical Warning diff --git a/doc/man/nvme_mi_close.2 b/doc/man/nvme_mi_close.2 new file mode 100644 index 0000000..20fc032 --- /dev/null +++ b/doc/man/nvme_mi_close.2 @@ -0,0 +1,9 @@ +.TH "nvme_mi_close" 9 "nvme_mi_close" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_close \- Close an endpoint connection and release resources, including controller objects. +.SH SYNOPSIS +.B "void" nvme_mi_close +.BI "(nvme_mi_ep_t ep " ");" +.SH ARGUMENTS +.IP "ep" 12 +Endpoint object to close diff --git a/doc/man/nvme_mi_close_ctrl.2 b/doc/man/nvme_mi_close_ctrl.2 new file mode 100644 index 0000000..4423444 --- /dev/null +++ b/doc/man/nvme_mi_close_ctrl.2 @@ -0,0 +1,9 @@ +.TH "nvme_mi_close_ctrl" 9 "nvme_mi_close_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_close_ctrl \- free a controller +.SH SYNOPSIS +.B "void" nvme_mi_close_ctrl +.BI "(nvme_mi_ctrl_t ctrl " ");" +.SH ARGUMENTS +.IP "ctrl" 12 +controller to free diff --git a/doc/man/nvme_mi_cmd_supported_effects.2 b/doc/man/nvme_mi_cmd_supported_effects.2 new file mode 100644 index 0000000..aa56713 --- /dev/null +++ b/doc/man/nvme_mi_cmd_supported_effects.2 @@ -0,0 +1,84 @@ +.TH "libnvme" 9 "enum nvme_mi_cmd_supported_effects" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_cmd_supported_effects \- MI Command Supported and Effects Data Structure +.SH SYNOPSIS +enum nvme_mi_cmd_supported_effects { +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_UDCC" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_NCC" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_NIC" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_CCC" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_SHIFT" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_MASK" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NS" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_CTRL" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NVM_SET" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_ENDGRP" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_DOMAIN" +, +.br +.br +.BI " NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NSS" + +}; +.SH Constants +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_CSUPP" 12 +Command Supported +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_UDCC" 12 +User Data Content Change +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_NCC" 12 +Namespace Capability Change +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_NIC" 12 +Namespace Inventory Change +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_CCC" 12 +Controller Capability Change +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_SHIFT" 12 +20 bit shift +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_MASK" 12 +12 bit mask - 0xfff +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NS" 12 +Namespace Scope +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_CTRL" 12 +Controller Scope +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NVM_SET" 12 +NVM Set Scope +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_ENDGRP" 12 +Endurance Group Scope +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_DOMAIN" 12 +Domain Scope +.IP "NVME_MI_CMD_SUPPORTED_EFFECTS_SCOPE_NSS" 12 +NVM Subsystem Scope diff --git a/doc/man/nvme_mi_cmd_supported_effects_log.2 b/doc/man/nvme_mi_cmd_supported_effects_log.2 new file mode 100644 index 0000000..802a223 --- /dev/null +++ b/doc/man/nvme_mi_cmd_supported_effects_log.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_mi_cmd_supported_effects_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_cmd_supported_effects_log \- NVMe-MI Commands Supported and Effects Log +.SH SYNOPSIS +struct nvme_mi_cmd_supported_effects_log { +.br +.BI " __le32 mi_cmd_support[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_MAX];" +.br +.BI " __le32 reserved1[NVME_LOG_MI_CMD_SUPPORTED_EFFECTS_RESERVED];" +.br +.BI " +}; +.br + +.SH Members +.IP "mi_cmd_support" 12 +NVMe-MI Commands Supported +.IP "reserved1" 12 +Reserved diff --git a/doc/man/nvme_mi_config_id.2 b/doc/man/nvme_mi_config_id.2 new file mode 100644 index 0000000..b479b9f --- /dev/null +++ b/doc/man/nvme_mi_config_id.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "enum nvme_mi_config_id" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_config_id \- NVMe-MI Configuration identifier. +.SH SYNOPSIS +enum nvme_mi_config_id { +.br +.BI " NVME_MI_CONFIG_SMBUS_FREQ" +, +.br +.br +.BI " NVME_MI_CONFIG_HEALTH_STATUS_CHANGE" +, +.br +.br +.BI " NVME_MI_CONFIG_MCTP_MTU" + +}; +.SH Constants +.IP "NVME_MI_CONFIG_SMBUS_FREQ" 12 +Current SMBus/I2C frequency +.IP "NVME_MI_CONFIG_HEALTH_STATUS_CHANGE" 12 +Health Status change - used to clear +health status bits in CCS bits of +status poll. Only for Set ops. +.IP "NVME_MI_CONFIG_MCTP_MTU" 12 +MCTP maximum transmission unit size of port +specified in dw 0 +.SH "Description" +Configuration parameters for the MI Get/Set Configuration commands. + +See &\fBnvme_mi_mi_config_get\fP and &\fBnvme_mi_config_set\fP. diff --git a/doc/man/nvme_mi_config_smbus_freq.2 b/doc/man/nvme_mi_config_smbus_freq.2 new file mode 100644 index 0000000..e377a8f --- /dev/null +++ b/doc/man/nvme_mi_config_smbus_freq.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "enum nvme_mi_config_smbus_freq" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_config_smbus_freq \- SMBus/I2C frequency values +.SH SYNOPSIS +enum nvme_mi_config_smbus_freq { +.br +.BI " NVME_MI_CONFIG_SMBUS_FREQ_100kHz" +, +.br +.br +.BI " NVME_MI_CONFIG_SMBUS_FREQ_400kHz" +, +.br +.br +.BI " NVME_MI_CONFIG_SMBUS_FREQ_1MHz" + +}; +.SH Constants +.IP "NVME_MI_CONFIG_SMBUS_FREQ_100kHz" 12 +100kHz +.IP "NVME_MI_CONFIG_SMBUS_FREQ_400kHz" 12 +400kHz +.IP "NVME_MI_CONFIG_SMBUS_FREQ_1MHz" 12 +1MHz +.SH "Description" +Values used in the SMBus Frequency device configuration. See +&\fBnvme_mi_mi_config_get_smbus_freq\fP and &\fBnvme_mi_mi_config_set_smbus_freq\fP. diff --git a/doc/man/nvme_mi_create_root.2 b/doc/man/nvme_mi_create_root.2 new file mode 100644 index 0000000..19de502 --- /dev/null +++ b/doc/man/nvme_mi_create_root.2 @@ -0,0 +1,20 @@ +.TH "nvme_mi_create_root" 9 "nvme_mi_create_root" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_create_root \- Create top-level MI (root) handle. +.SH SYNOPSIS +.B "nvme_root_t" nvme_mi_create_root +.BI "(FILE *fp " "," +.BI "int log_level " ");" +.SH ARGUMENTS +.IP "fp" 12 +File descriptor for logging messages +.IP "log_level" 12 +Logging level to use +.SH "DESCRIPTION" +Create the top-level (library) handle for creating subsequent endpoint +objects. Similar to \fBnvme_create_root\fP, but we provide this to allow linking +without the core libnvme. + +See \fInvme_create_root\fP. +.SH "RETURN" +new root object, or NULL on failure. diff --git a/doc/man/nvme_mi_csts.2 b/doc/man/nvme_mi_csts.2 new file mode 100644 index 0000000..29307d8 --- /dev/null +++ b/doc/man/nvme_mi_csts.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_mi_csts" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_csts \- Controller Health Data Structure (CHDS) - Controller Status (CSTS) +.SH SYNOPSIS +enum nvme_mi_csts { +.br +.BI " NVME_MI_CSTS_RDY" +, +.br +.br +.BI " NVME_MI_CSTS_CFS" +, +.br +.br +.BI " NVME_MI_CSTS_SHST" +, +.br +.br +.BI " NVME_MI_CSTS_NSSRO" +, +.br +.br +.BI " NVME_MI_CSTS_CECO" +, +.br +.br +.BI " NVME_MI_CSTS_NAC" +, +.br +.br +.BI " NVME_MI_CSTS_FA" + +}; +.SH Constants +.IP "NVME_MI_CSTS_RDY" 12 +Ready +.IP "NVME_MI_CSTS_CFS" 12 +Controller Fatal Status +.IP "NVME_MI_CSTS_SHST" 12 +Shutdown Status +.IP "NVME_MI_CSTS_NSSRO" 12 +NVM Subsystem Reset Occurred +.IP "NVME_MI_CSTS_CECO" 12 +Controller Enable Change Occurred +.IP "NVME_MI_CSTS_NAC" 12 +Namespace Attribute Changed +.IP "NVME_MI_CSTS_FA" 12 +Firmware Activated diff --git a/doc/man/nvme_mi_ctrl_health_status.2 b/doc/man/nvme_mi_ctrl_health_status.2 new file mode 100644 index 0000000..263dac2 --- /dev/null +++ b/doc/man/nvme_mi_ctrl_health_status.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_mi_ctrl_health_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_ctrl_health_status \- Controller Health Data Structure (CHDS) +.SH SYNOPSIS +struct nvme_mi_ctrl_health_status { +.br +.BI " __le16 ctlid;" +.br +.BI " __le16 csts;" +.br +.BI " __le16 ctemp;" +.br +.BI " __u8 pdlu;" +.br +.BI " __u8 spare;" +.br +.BI " __u8 cwarn;" +.br +.BI " __u8 rsvd9[7];" +.br +.BI " +}; +.br + +.SH Members +.IP "ctlid" 12 +Controller Identifier +.IP "csts" 12 +Controller Status +.IP "ctemp" 12 +Composite Temperature +.IP "pdlu" 12 +Percentage Used +.IP "spare" 12 +Available Spare +.IP "cwarn" 12 +Critical Warning +.IP "rsvd9" 12 +Reserved diff --git a/doc/man/nvme_mi_cwarn.2 b/doc/man/nvme_mi_cwarn.2 new file mode 100644 index 0000000..db713cf --- /dev/null +++ b/doc/man/nvme_mi_cwarn.2 @@ -0,0 +1,36 @@ +.TH "libnvme" 9 "enum nvme_mi_cwarn" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_cwarn \- Controller Health Data Structure (CHDS) - Critical Warning (CWARN) +.SH SYNOPSIS +enum nvme_mi_cwarn { +.br +.BI " NVME_MI_CWARN_ST" +, +.br +.br +.BI " NVME_MI_CWARN_TAUT" +, +.br +.br +.BI " NVME_MI_CWARN_RD" +, +.br +.br +.BI " NVME_MI_CWARN_RO" +, +.br +.br +.BI " NVME_MI_CWARN_VMBF" + +}; +.SH Constants +.IP "NVME_MI_CWARN_ST" 12 +Spare Threshold +.IP "NVME_MI_CWARN_TAUT" 12 +Temperature Above or Under Threshold +.IP "NVME_MI_CWARN_RD" 12 +Reliability Degraded +.IP "NVME_MI_CWARN_RO" 12 +Read Only +.IP "NVME_MI_CWARN_VMBF" 12 +Volatile Memory Backup Failed diff --git a/doc/man/nvme_mi_dtyp.2 b/doc/man/nvme_mi_dtyp.2 new file mode 100644 index 0000000..55018c0 --- /dev/null +++ b/doc/man/nvme_mi_dtyp.2 @@ -0,0 +1,45 @@ +.TH "libnvme" 9 "enum nvme_mi_dtyp" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_dtyp \- Data Structure Type field. +.SH SYNOPSIS +enum nvme_mi_dtyp { +.br +.BI " nvme_mi_dtyp_subsys_info" +, +.br +.br +.BI " nvme_mi_dtyp_port_info" +, +.br +.br +.BI " nvme_mi_dtyp_ctrl_list" +, +.br +.br +.BI " nvme_mi_dtyp_ctrl_info" +, +.br +.br +.BI " nvme_mi_dtyp_opt_cmd_support" +, +.br +.br +.BI " nvme_mi_dtyp_meb_support" + +}; +.SH Constants +.IP "nvme_mi_dtyp_subsys_info" 12 +NVM Subsystem Information +.IP "nvme_mi_dtyp_port_info" 12 +Port information +.IP "nvme_mi_dtyp_ctrl_list" 12 +Controller List +.IP "nvme_mi_dtyp_ctrl_info" 12 +Controller Information +.IP "nvme_mi_dtyp_opt_cmd_support" 12 +Optionally Supported Command List +.IP "nvme_mi_dtyp_meb_support" 12 +Management Endpoint Buffer Command Support List +.SH "Description" +Data Structure Type field for Read NVMe-MI Data Structure command, used to +indicate the particular structure to query from the endpoint. diff --git a/doc/man/nvme_mi_elem.2 b/doc/man/nvme_mi_elem.2 new file mode 100644 index 0000000..0b29b0f --- /dev/null +++ b/doc/man/nvme_mi_elem.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_mi_elem" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_elem \- Element Descriptor Types +.SH SYNOPSIS +enum nvme_mi_elem { +.br +.BI " NVME_MI_ELEM_EED" +, +.br +.br +.BI " NVME_MI_ELEM_USCE" +, +.br +.br +.BI " NVME_MI_ELEM_ECED" +, +.br +.br +.BI " NVME_MI_ELEM_LED" +, +.br +.br +.BI " NVME_MI_ELEM_SMBMED" +, +.br +.br +.BI " NVME_MI_ELEM_PCIESED" +, +.br +.br +.BI " NVME_MI_ELEM_NVMED" + +}; +.SH Constants +.IP "NVME_MI_ELEM_EED" 12 +Extended Element Descriptor +.IP "NVME_MI_ELEM_USCE" 12 +Upstream Connector Element Descriptor +.IP "NVME_MI_ELEM_ECED" 12 +Expansion Connector Element Descriptor +.IP "NVME_MI_ELEM_LED" 12 +Label Element Descriptor +.IP "NVME_MI_ELEM_SMBMED" 12 +SMBus/I2C Mux Element Descriptor +.IP "NVME_MI_ELEM_PCIESED" 12 +PCIe Switch Element Descriptor +.IP "NVME_MI_ELEM_NVMED" 12 +NVM Subsystem Element Descriptor diff --git a/doc/man/nvme_mi_free_root.2 b/doc/man/nvme_mi_free_root.2 new file mode 100644 index 0000000..cd7c38b --- /dev/null +++ b/doc/man/nvme_mi_free_root.2 @@ -0,0 +1,9 @@ +.TH "nvme_mi_free_root" 9 "nvme_mi_free_root" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_free_root \- Free root object. +.SH SYNOPSIS +.B "void" nvme_mi_free_root +.BI "(nvme_root_t root " ");" +.SH ARGUMENTS +.IP "root" 12 +root to free diff --git a/doc/man/nvme_mi_init_ctrl.2 b/doc/man/nvme_mi_init_ctrl.2 new file mode 100644 index 0000000..be37340 --- /dev/null +++ b/doc/man/nvme_mi_init_ctrl.2 @@ -0,0 +1,20 @@ +.TH "nvme_mi_init_ctrl" 9 "nvme_mi_init_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_init_ctrl \- initialise a NVMe controller. +.SH SYNOPSIS +.B "nvme_mi_ctrl_t" nvme_mi_init_ctrl +.BI "(nvme_mi_ep_t ep " "," +.BI "__u16 ctrl_id " ");" +.SH ARGUMENTS +.IP "ep" 12 +Endpoint to create under +.IP "ctrl_id" 12 +ID of controller to initialize. +.SH "DESCRIPTION" +Create a connection to a controller behind the endpoint specified in \fIep\fP. +Controller IDs may be queried from the endpoint through +\fInvme_mi_mi_read_mi_data_ctrl_list\fP. + +See \fInvme_mi_close_ctrl\fP +.SH "RETURN" +New controller object, or NULL on failure. diff --git a/doc/man/nvme_mi_message_type.2 b/doc/man/nvme_mi_message_type.2 new file mode 100644 index 0000000..c54e4bc --- /dev/null +++ b/doc/man/nvme_mi_message_type.2 @@ -0,0 +1,33 @@ +.TH "libnvme" 9 "enum nvme_mi_message_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_message_type \- NVMe-MI message type field. +.SH SYNOPSIS +enum nvme_mi_message_type { +.br +.BI " NVME_MI_MT_CONTROL" +, +.br +.br +.BI " NVME_MI_MT_MI" +, +.br +.br +.BI " NVME_MI_MT_ADMIN" +, +.br +.br +.BI " NVME_MI_MT_PCIE" + +}; +.SH Constants +.IP "NVME_MI_MT_CONTROL" 12 +NVME-MI Control Primitive +.IP "NVME_MI_MT_MI" 12 +NVMe-MI command +.IP "NVME_MI_MT_ADMIN" 12 +NVMe Admin command +.IP "NVME_MI_MT_PCIE" 12 +PCIe command +.SH "Description" +Used as byte 1 of both request and response messages (NMIMT bits of NMP +byte). Not to be confused with the MCTP message type in byte 0. diff --git a/doc/man/nvme_mi_mi_opcode.2 b/doc/man/nvme_mi_mi_opcode.2 new file mode 100644 index 0000000..e5a8437 --- /dev/null +++ b/doc/man/nvme_mi_mi_opcode.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_mi_mi_opcode" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_mi_opcode \- Operation code for supported NVMe-MI commands. +.SH SYNOPSIS +enum nvme_mi_mi_opcode { +.br +.BI " nvme_mi_mi_opcode_mi_data_read" +, +.br +.br +.BI " nvme_mi_mi_opcode_subsys_health_status_poll" +, +.br +.br +.BI " nvme_mi_mi_opcode_configuration_set" +, +.br +.br +.BI " nvme_mi_mi_opcode_configuration_get" + +}; +.SH Constants +.IP "nvme_mi_mi_opcode_mi_data_read" 12 +Read NVMe-MI Data Structure +.IP "nvme_mi_mi_opcode_subsys_health_status_poll" 12 +Subsystem Health Status Poll +.IP "nvme_mi_mi_opcode_configuration_set" 12 +MI Configuration Set +.IP "nvme_mi_mi_opcode_configuration_get" 12 +MI Configuration Get diff --git a/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 b/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 new file mode 100644 index 0000000..5264357 --- /dev/null +++ b/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 @@ -0,0 +1,23 @@ +.TH "nvme_mi_mi_read_mi_data_ctrl" 9 "nvme_mi_mi_read_mi_data_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_mi_read_mi_data_ctrl \- Perform a Read MI Data Structure command, retrieving controller information +.SH SYNOPSIS +.B "int" nvme_mi_mi_read_mi_data_ctrl +.BI "(nvme_mi_ep_t ep " "," +.BI "__u16 ctrl_id " "," +.BI "struct nvme_mi_read_ctrl_info *ctrl " ");" +.SH ARGUMENTS +.IP "ep" 12 +endpoint for MI communication +.IP "ctrl_id" 12 +ID of controller to query +.IP "ctrl" 12 +controller data to populate +.SH "DESCRIPTION" +Retrieves the Controller Information Data Structure for the attached +controller with ID \fIctrlid\fP. + +See \fIstruct nvme_mi_read_ctrl_info\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2 b/doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2 new file mode 100644 index 0000000..594d8f6 --- /dev/null +++ b/doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2 @@ -0,0 +1,23 @@ +.TH "nvme_mi_mi_read_mi_data_ctrl_list" 9 "nvme_mi_mi_read_mi_data_ctrl_list" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_mi_read_mi_data_ctrl_list \- Perform a Read MI Data Structure command, retrieving the list of attached controllers. +.SH SYNOPSIS +.B "int" nvme_mi_mi_read_mi_data_ctrl_list +.BI "(nvme_mi_ep_t ep " "," +.BI "__u8 start_ctrlid " "," +.BI "struct nvme_ctrl_list *list " ");" +.SH ARGUMENTS +.IP "ep" 12 +endpoint for MI communication +.IP "start_ctrlid" 12 +starting controller ID +.IP "list" 12 +controller list to populate +.SH "DESCRIPTION" +Retrieves the list of attached controllers, with IDs greater than or +equal to \fIstart_ctrlid\fP. + +See \fIstruct nvme_ctrl_list\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_mi_read_mi_data_port.2 b/doc/man/nvme_mi_mi_read_mi_data_port.2 new file mode 100644 index 0000000..f3aeaf3 --- /dev/null +++ b/doc/man/nvme_mi_mi_read_mi_data_port.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_mi_read_mi_data_port" 9 "nvme_mi_mi_read_mi_data_port" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_mi_read_mi_data_port \- Perform a Read MI Data Structure command, retrieving port data. +.SH SYNOPSIS +.B "int" nvme_mi_mi_read_mi_data_port +.BI "(nvme_mi_ep_t ep " "," +.BI "__u8 portid " "," +.BI "struct nvme_mi_read_port_info *p " ");" +.SH ARGUMENTS +.IP "ep" 12 +endpoint for MI communication +.IP "portid" 12 +id of port data to retrieve +.IP "p" 12 +port information to populate +.SH "DESCRIPTION" +Retrieves the Port information, for the specified port ID. The subsystem +data (from \fInvme_mi_mi_read_mi_data_subsys\fP) nmp field contains the allowed +range of port IDs. + +See \fIstruct nvme_mi_read_port_info\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_mi_read_mi_data_subsys.2 b/doc/man/nvme_mi_mi_read_mi_data_subsys.2 new file mode 100644 index 0000000..a4a5191 --- /dev/null +++ b/doc/man/nvme_mi_mi_read_mi_data_subsys.2 @@ -0,0 +1,18 @@ +.TH "nvme_mi_mi_read_mi_data_subsys" 9 "nvme_mi_mi_read_mi_data_subsys" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_mi_read_mi_data_subsys \- Perform a Read MI Data Structure command, retrieving subsystem data. +.SH SYNOPSIS +.B "int" nvme_mi_mi_read_mi_data_subsys +.BI "(nvme_mi_ep_t ep " "," +.BI "struct nvme_mi_read_nvm_ss_info *s " ");" +.SH ARGUMENTS +.IP "ep" 12 +endpoint for MI communication +.IP "s" 12 +subsystem information to populate +.SH "DESCRIPTION" +Retrieves the Subsystem information - number of external ports and +NVMe version information. See \fIstruct nvme_mi_read_nvm_ss_info\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_mi_req_hdr.2 b/doc/man/nvme_mi_mi_req_hdr.2 new file mode 100644 index 0000000..a7c0d49 --- /dev/null +++ b/doc/man/nvme_mi_mi_req_hdr.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_mi_mi_req_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_mi_req_hdr \- MI request message header. +.SH SYNOPSIS +struct nvme_mi_mi_req_hdr { +.br +.BI " struct nvme_mi_msg_hdr hdr;" +.br +.BI " __u8 opcode;" +.br +.BI " __u8 rsvd0[3];" +.br +.BI " __le32 cdw0, cdw1;" +.br +.BI " +}; +.br + +.SH Members +.IP "hdr" 12 +generic MI message header +.IP "opcode" 12 +opcode (OPC) for the specific MI command +.IP "rsvd0" 12 +reserved bytes +.IP "cdw0" 12 +Management Request Doubleword 0 - command specific usage +.IP "cdw1" 12 +Management Request Doubleword 1 - command specific usage +.SH "Description" +Wire format for MI request message headers, defined in section 5 of NVMe-MI. diff --git a/doc/man/nvme_mi_mi_resp_hdr.2 b/doc/man/nvme_mi_mi_resp_hdr.2 new file mode 100644 index 0000000..37e78e5 --- /dev/null +++ b/doc/man/nvme_mi_mi_resp_hdr.2 @@ -0,0 +1,25 @@ +.TH "libnvme" 9 "struct nvme_mi_mi_resp_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_mi_resp_hdr \- MI response message header. +.SH SYNOPSIS +struct nvme_mi_mi_resp_hdr { +.br +.BI " struct nvme_mi_msg_hdr hdr;" +.br +.BI " __u8 status;" +.br +.BI " __u8 nmresp[3];" +.br +.BI " +}; +.br + +.SH Members +.IP "hdr" 12 +generic MI message header +.IP "status" 12 +generic response status from command; non-zero on failure. +.IP "nmresp" 12 +NVMe Management Response: command-type-specific response data +.SH "Description" +Wire format for MI response message header, defined in section 5 of NVMe-MI. diff --git a/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 b/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 new file mode 100644 index 0000000..1b9b2c4 --- /dev/null +++ b/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 @@ -0,0 +1,24 @@ +.TH "nvme_mi_mi_subsystem_health_status_poll" 9 "nvme_mi_mi_subsystem_health_status_poll" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_mi_subsystem_health_status_poll \- Read the Subsystem Health Data Structure from the NVM subsystem +.SH SYNOPSIS +.B "int" nvme_mi_mi_subsystem_health_status_poll +.BI "(nvme_mi_ep_t ep " "," +.BI "bool clear " "," +.BI "struct nvme_mi_nvm_ss_health_status *nshds " ");" +.SH ARGUMENTS +.IP "ep" 12 +endpoint for MI communication +.IP "clear" 12 +flag to clear the Composite Controller Status state +.IP "nshds" 12 +subsystem health status data to populate +.SH "DESCRIPTION" +Retrieves the Subsystem Health Data Structure into \fInshds\fP. If \fIclear\fP is +set, requests that the Composite Controller Status bits are cleared after +the read. See NVMe-MI section 5.6 for details on the CCS bits. + +See \fIstruct nvme_mi_nvm_ss_health_status\fP. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise.. diff --git a/doc/man/nvme_mi_msg_hdr.2 b/doc/man/nvme_mi_msg_hdr.2 new file mode 100644 index 0000000..29e9bd6 --- /dev/null +++ b/doc/man/nvme_mi_msg_hdr.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "struct nvme_mi_msg_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_msg_hdr \- General MI message header. +.SH SYNOPSIS +struct nvme_mi_msg_hdr { +.br +.BI " __u8 type;" +.br +.BI " __u8 nmp;" +.br +.BI " __u8 meb;" +.br +.BI " __u8 rsvd0;" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +MCTP message type, will always be NVME_MI_MSGTYPE_NVME +.IP "nmp" 12 +NVMe-MI message parameters (including MI message type) +.IP "meb" 12 +Management Endpoint Buffer flag; unused for libnvme-mi implementation +.IP "rsvd0" 12 +currently reserved +.SH "Description" +Wire format shared by both request and response messages, per NVMe-MI +section 3.1. This is used for all message types, MI and Admin. diff --git a/doc/man/nvme_mi_msg_resp.2 b/doc/man/nvme_mi_msg_resp.2 new file mode 100644 index 0000000..64aad38 --- /dev/null +++ b/doc/man/nvme_mi_msg_resp.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "struct nvme_mi_msg_resp" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_msg_resp \- Generic response type. +.SH SYNOPSIS +struct nvme_mi_msg_resp { +.br +.BI " struct nvme_mi_msg_hdr hdr;" +.br +.BI " __u8 status;" +.br +.BI " __u8 rsvd0[3];" +.br +.BI " +}; +.br + +.SH Members +.IP "hdr" 12 +the general request/response message header +.IP "status" 12 +response status value (see \fIenum nvme_mi_resp_status\fP) +.IP "rsvd0" 12 +reserved data, may be defined by specific response +.SH "Description" +Every response will start with one of these; command-specific responses +will define parts of the reserved data, and may add further fields. diff --git a/doc/man/nvme_mi_nvm_ss_health_status.2 b/doc/man/nvme_mi_nvm_ss_health_status.2 new file mode 100644 index 0000000..1525edd --- /dev/null +++ b/doc/man/nvme_mi_nvm_ss_health_status.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_mi_nvm_ss_health_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_nvm_ss_health_status \- Subsystem Management Data Structure +.SH SYNOPSIS +struct nvme_mi_nvm_ss_health_status { +.br +.BI " __u8 nss;" +.br +.BI " __u8 sw;" +.br +.BI " __u8 ctemp;" +.br +.BI " __u8 pdlu;" +.br +.BI " __le16 ccs;" +.br +.BI " __u8 rsvd8[2];" +.br +.BI " +}; +.br + +.SH Members +.IP "nss" 12 +NVM Subsystem Status +.IP "sw" 12 +Smart Warnings +.IP "ctemp" 12 +Composite Temperature +.IP "pdlu" 12 +Percentage Drive Life Used +.IP "ccs" 12 +Composite Controller Status +.IP "rsvd8" 12 +Reserved diff --git a/doc/man/nvme_mi_open_mctp.2 b/doc/man/nvme_mi_open_mctp.2 new file mode 100644 index 0000000..11cf4ef --- /dev/null +++ b/doc/man/nvme_mi_open_mctp.2 @@ -0,0 +1,22 @@ +.TH "nvme_mi_open_mctp" 9 "nvme_mi_open_mctp" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_open_mctp \- Create an endpoint using a MCTP connection. +.SH SYNOPSIS +.B "nvme_mi_ep_t" nvme_mi_open_mctp +.BI "(nvme_root_t root " "," +.BI "unsigned int netid " "," +.BI "uint8_t eid " ");" +.SH ARGUMENTS +.IP "root" 12 +root object to create under +.IP "netid" 12 +MCTP network ID on this system +.IP "eid" 12 +MCTP endpoint ID +.SH "DESCRIPTION" +Transport-specific endpoint initialization for MI-connected endpoints. Once +an endpoint is created, the rest of the API is transport-independent. + +See \fInvme_mi_close\fP +.SH "RETURN" +New endpoint object for \fInetid\fP & \fIeid\fP, or NULL on failure. diff --git a/doc/man/nvme_mi_osc.2 b/doc/man/nvme_mi_osc.2 new file mode 100644 index 0000000..5841d25 --- /dev/null +++ b/doc/man/nvme_mi_osc.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_mi_osc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_osc \- Optionally Supported Command Data Structure +.SH SYNOPSIS +struct nvme_mi_osc { +.br +.BI " __u8 type;" +.br +.BI " __u8 opc;" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +Command Type +.IP "opc" 12 +Opcode diff --git a/doc/man/nvme_mi_port_pcie.2 b/doc/man/nvme_mi_port_pcie.2 new file mode 100644 index 0000000..0eaa2f2 --- /dev/null +++ b/doc/man/nvme_mi_port_pcie.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_mi_port_pcie" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_port_pcie \- PCIe Port Specific Data +.SH SYNOPSIS +struct nvme_mi_port_pcie { +.br +.BI " __u8 mps;" +.br +.BI " __u8 sls;" +.br +.BI " __u8 cls;" +.br +.BI " __u8 mlw;" +.br +.BI " __u8 nlw;" +.br +.BI " __u8 pn;" +.br +.BI " __u8 rsvd14[18];" +.br +.BI " +}; +.br + +.SH Members +.IP "mps" 12 +PCIe Maximum Payload Size +.IP "sls" 12 +PCIe Supported Link Speeds Vector +.IP "cls" 12 +PCIe Current Link Speed +.IP "mlw" 12 +PCIe Maximum Link Width +.IP "nlw" 12 +PCIe Negotiated Link Width +.IP "pn" 12 +PCIe Port Number +.IP "rsvd14" 12 +Reserved diff --git a/doc/man/nvme_mi_port_smb.2 b/doc/man/nvme_mi_port_smb.2 new file mode 100644 index 0000000..efda36a --- /dev/null +++ b/doc/man/nvme_mi_port_smb.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_mi_port_smb" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_port_smb \- SMBus Port Specific Data +.SH SYNOPSIS +struct nvme_mi_port_smb { +.br +.BI " __u8 vpd_addr;" +.br +.BI " __u8 mvpd_freq;" +.br +.BI " __u8 mme_addr;" +.br +.BI " __u8 mme_freq;" +.br +.BI " __u8 nvmebm;" +.br +.BI " __u8 rsvd13[19];" +.br +.BI " +}; +.br + +.SH Members +.IP "vpd_addr" 12 +Current VPD SMBus/I2C Address +.IP "mvpd_freq" 12 +Maximum VPD Access SMBus/I2C Frequency +.IP "mme_addr" 12 +Current Management Endpoint SMBus/I2C Address +.IP "mme_freq" 12 +Maximum Management Endpoint SMBus/I2C Frequency +.IP "nvmebm" 12 +NVMe Basic Management +.IP "rsvd13" 12 +Reserved diff --git a/doc/man/nvme_mi_read_ctrl_info.2 b/doc/man/nvme_mi_read_ctrl_info.2 new file mode 100644 index 0000000..8b78aab --- /dev/null +++ b/doc/man/nvme_mi_read_ctrl_info.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_mi_read_ctrl_info" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_read_ctrl_info \- Controller Information Data Structure +.SH SYNOPSIS +struct nvme_mi_read_ctrl_info { +.br +.BI " __u8 portid;" +.br +.BI " __u8 rsvd1[4];" +.br +.BI " __u8 prii;" +.br +.BI " __le16 pri;" +.br +.BI " __le16 vid;" +.br +.BI " __le16 did;" +.br +.BI " __le16 ssvid;" +.br +.BI " __le16 ssid;" +.br +.BI " __u8 rsvd16[16];" +.br +.BI " +}; +.br + +.SH Members +.IP "portid" 12 +Port Identifier +.IP "rsvd1" 12 +Reserved +.IP "prii" 12 +PCIe Routing ID Information +.IP "pri" 12 +PCIe Routing ID +.IP "vid" 12 +PCI Vendor ID +.IP "did" 12 +PCI Device ID +.IP "ssvid" 12 +PCI Subsystem Vendor ID +.IP "ssid" 12 +PCI Subsystem Device ID +.IP "rsvd16" 12 +Reserved diff --git a/doc/man/nvme_mi_read_nvm_ss_info.2 b/doc/man/nvme_mi_read_nvm_ss_info.2 new file mode 100644 index 0000000..3fb30ad --- /dev/null +++ b/doc/man/nvme_mi_read_nvm_ss_info.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_mi_read_nvm_ss_info" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_read_nvm_ss_info \- NVM Subsystem Information Data Structure +.SH SYNOPSIS +struct nvme_mi_read_nvm_ss_info { +.br +.BI " __u8 nump;" +.br +.BI " __u8 mjr;" +.br +.BI " __u8 mnr;" +.br +.BI " __u8 rsvd3[29];" +.br +.BI " +}; +.br + +.SH Members +.IP "nump" 12 +Number of Ports +.IP "mjr" 12 +NVMe-MI Major Version Number +.IP "mnr" 12 +NVMe-MI Minor Version Number +.IP "rsvd3" 12 +Reserved diff --git a/doc/man/nvme_mi_read_port_info.2 b/doc/man/nvme_mi_read_port_info.2 new file mode 100644 index 0000000..8931639 --- /dev/null +++ b/doc/man/nvme_mi_read_port_info.2 @@ -0,0 +1,41 @@ +.TH "libnvme" 9 "struct nvme_mi_read_port_info" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_read_port_info \- Port Information Data Structure +.SH SYNOPSIS +struct nvme_mi_read_port_info { +.br +.BI " __u8 portt;" +.br +.BI " __u8 rsvd1;" +.br +.BI " __le16 mmctptus;" +.br +.BI " __le32 meb;" +.br +.BI " union {" +.br +.BI " struct nvme_mi_port_pcie pcie;" +.br +.BI " struct nvme_mi_port_smb smb;" +.br +.BI " };" +.br +.BI " +}; +.br + +.SH Members +.IP "portt" 12 +Port Type +.IP "rsvd1" 12 +Reserved +.IP "mmctptus" 12 +Maximum MCTP Transmission Unit Size +.IP "meb" 12 +Management Endpoint Buffer Size +.IP "{unnamed_union}" 12 +anonymous +.IP "pcie" 12 +PCIe Port Specific Data +.IP "smb" 12 +SMBus Port Specific Data diff --git a/doc/man/nvme_mi_read_sc_list.2 b/doc/man/nvme_mi_read_sc_list.2 new file mode 100644 index 0000000..2ff5a87 --- /dev/null +++ b/doc/man/nvme_mi_read_sc_list.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "struct nvme_mi_read_sc_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_read_sc_list \- Management Endpoint Buffer Supported Command List Data Structure +.SH SYNOPSIS +struct nvme_mi_read_sc_list { +.br +.BI " __le16 numcmd;" +.br +.BI " struct nvme_mi_osc cmds[];" +.br +.BI " +}; +.br + +.SH Members +.IP "numcmd" 12 +Number of Commands +.IP "cmds" 12 +MEB supported Command Data Structure. +See \fIstruct\fP nvme_mi_osc diff --git a/doc/man/nvme_mi_resp_status.2 b/doc/man/nvme_mi_resp_status.2 new file mode 100644 index 0000000..aceae13 --- /dev/null +++ b/doc/man/nvme_mi_resp_status.2 @@ -0,0 +1,120 @@ +.TH "libnvme" 9 "enum nvme_mi_resp_status" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_mi_resp_status \- values for the response status field +.SH SYNOPSIS +enum nvme_mi_resp_status { +.br +.BI " NVME_MI_RESP_SUCCESS" +, +.br +.br +.BI " NVME_MI_RESP_MPR" +, +.br +.br +.BI " NVME_MI_RESP_INTERNAL_ERR" +, +.br +.br +.BI " NVME_MI_RESP_INVALID_OPCODE" +, +.br +.br +.BI " NVME_MI_RESP_INVALID_PARAM" +, +.br +.br +.BI " NVME_MI_RESP_INVALID_CMD_SIZE" +, +.br +.br +.BI " NVME_MI_RESP_INVALID_INPUT_SIZE" +, +.br +.br +.BI " NVME_MI_RESP_ACCESS_DENIED" +, +.br +.br +.BI " NVME_MI_RESP_VPD_UPDATES_EXCEEDED" +, +.br +.br +.BI " NVME_MI_RESP_PCIE_INACCESSIBLE" +, +.br +.br +.BI " NVME_MI_RESP_MEB_SANITIZED" +, +.br +.br +.BI " NVME_MI_RESP_ENC_SERV_FAILURE" +, +.br +.br +.BI " NVME_MI_RESP_ENC_SERV_XFER_FAILURE" +, +.br +.br +.BI " NVME_MI_RESP_ENC_FAILURE" +, +.br +.br +.BI " NVME_MI_RESP_ENC_XFER_REFUSED" +, +.br +.br +.BI " NVME_MI_RESP_ENC_FUNC_UNSUP" +, +.br +.br +.BI " NVME_MI_RESP_ENC_SERV_UNAVAIL" +, +.br +.br +.BI " NVME_MI_RESP_ENC_DEGRADED" +, +.br +.br +.BI " NVME_MI_RESP_SANITIZE_IN_PROGRESS" + +}; +.SH Constants +.IP "NVME_MI_RESP_SUCCESS" 12 +success +.IP "NVME_MI_RESP_MPR" 12 +More Processing Required +.IP "NVME_MI_RESP_INTERNAL_ERR" 12 +Internal Error +.IP "NVME_MI_RESP_INVALID_OPCODE" 12 +Invalid command opcode +.IP "NVME_MI_RESP_INVALID_PARAM" 12 +Invalid command parameter +.IP "NVME_MI_RESP_INVALID_CMD_SIZE" 12 +Invalid command size +.IP "NVME_MI_RESP_INVALID_INPUT_SIZE" 12 +Invalid command input data size +.IP "NVME_MI_RESP_ACCESS_DENIED" 12 +Access Denied +.IP "NVME_MI_RESP_VPD_UPDATES_EXCEEDED" 12 +More VPD updates than allowed +.IP "NVME_MI_RESP_PCIE_INACCESSIBLE" 12 +PCIe functionality currently unavailable +.IP "NVME_MI_RESP_MEB_SANITIZED" 12 +MEB has been cleared due to sanitize +.IP "NVME_MI_RESP_ENC_SERV_FAILURE" 12 +Enclosure services process failed +.IP "NVME_MI_RESP_ENC_SERV_XFER_FAILURE" 12 +Transfer with enclosure services failed +.IP "NVME_MI_RESP_ENC_FAILURE" 12 +Unreoverable enclosure failure +.IP "NVME_MI_RESP_ENC_XFER_REFUSED" 12 +Enclosure services transfer refused +.IP "NVME_MI_RESP_ENC_FUNC_UNSUP" 12 +Unsupported enclosure services function +.IP "NVME_MI_RESP_ENC_SERV_UNAVAIL" 12 +Enclosure services unavailable +.IP "NVME_MI_RESP_ENC_DEGRADED" 12 +Noncritical failure detected by enc. services +.IP "NVME_MI_RESP_SANITIZE_IN_PROGRESS" 12 +Command prohibited during sanitize diff --git a/doc/man/nvme_mi_set_probe_enabled.2 b/doc/man/nvme_mi_set_probe_enabled.2 new file mode 100644 index 0000000..6b11db3 --- /dev/null +++ b/doc/man/nvme_mi_set_probe_enabled.2 @@ -0,0 +1,16 @@ +.TH "nvme_mi_set_probe_enabled" 9 "nvme_mi_set_probe_enabled" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_set_probe_enabled \- enable/disable the probe for new endpoints +.SH SYNOPSIS +.B "void" nvme_mi_set_probe_enabled +.BI "(nvme_root_t root " "," +.BI "bool enabled " ");" +.SH ARGUMENTS +.IP "root" 12 +\fInvme_root_t\fP object +.IP "enabled" 12 +whether to probe new endpoints +.SH "DESCRIPTION" +Controls whether newly-created endpoints are probed for quirks on creation. +Defaults to enabled, which results in some initial messaging with the +endpoint to determine model-specific details. diff --git a/doc/man/nvme_mi_status_to_string.2 b/doc/man/nvme_mi_status_to_string.2 new file mode 100644 index 0000000..ba26ae5 --- /dev/null +++ b/doc/man/nvme_mi_status_to_string.2 @@ -0,0 +1,17 @@ +.TH "nvme_mi_status_to_string" 9 "nvme_mi_status_to_string" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_mi_status_to_string \- return a string representation of the MI status. +.SH SYNOPSIS +.B "const char *" nvme_mi_status_to_string +.BI "(int status " ");" +.SH ARGUMENTS +.IP "status" 12 +MI response status +.SH "DESCRIPTION" +Gives a string description of \fIstatus\fP, as per section 4.1.2 of the NVMe-MI +spec. The status value should be of type NVME_STATUS_MI, and extracted +from the return value using \fBnvme_status_get_value\fP. + +Returned string is const, and should not be \fBfree\fPed. +.SH "RETURN" +A string representing the status value diff --git a/doc/man/nvme_mi_vpd_hdr.2 b/doc/man/nvme_mi_vpd_hdr.2 new file mode 100644 index 0000000..63f0e1d --- /dev/null +++ b/doc/man/nvme_mi_vpd_hdr.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_hdr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_hdr \- Vital Product Data Common Header +.SH SYNOPSIS +struct nvme_mi_vpd_hdr { +.br +.BI " __u8 ipmiver;" +.br +.BI " __u8 iuaoff;" +.br +.BI " __u8 ciaoff;" +.br +.BI " __u8 biaoff;" +.br +.BI " __u8 piaoff;" +.br +.BI " __u8 mrioff;" +.br +.BI " __u8 rsvd6;" +.br +.BI " __u8 chchk;" +.br +.BI " __u8 vpd[];" +.br +.BI " +}; +.br + +.SH Members +.IP "ipmiver" 12 +IPMI Format Version Number +.IP "iuaoff" 12 +Internal Use Area Starting Offset +.IP "ciaoff" 12 +Chassis Info Area Starting Offset +.IP "biaoff" 12 +Board Info Area Starting Offset +.IP "piaoff" 12 +Product Info Area Starting Offset +.IP "mrioff" 12 +MultiRecord Info Area Starting Offset +.IP "rsvd6" 12 +Reserved +.IP "chchk" 12 +Common Header Checksum +.IP "vpd" 12 +Vital Product Data diff --git a/doc/man/nvme_mi_vpd_mr_common.2 b/doc/man/nvme_mi_vpd_mr_common.2 new file mode 100644 index 0000000..a0ca4a9 --- /dev/null +++ b/doc/man/nvme_mi_vpd_mr_common.2 @@ -0,0 +1,49 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_mr_common" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_mr_common \- NVMe MultiRecord Area +.SH SYNOPSIS +struct nvme_mi_vpd_mr_common { +.br +.BI " __u8 type;" +.br +.BI " __u8 rf;" +.br +.BI " __u8 rlen;" +.br +.BI " __u8 rchksum;" +.br +.BI " __u8 hchksum;" +.br +.BI " union {" +.br +.BI " struct nvme_mi_vpd_mra nmra;" +.br +.BI " struct nvme_mi_vpd_ppmra ppmra;" +.br +.BI " struct nvme_mi_vpd_tra tmra;" +.br +.BI " };" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +NVMe Record Type ID +.IP "rf" 12 +Record Format +.IP "rlen" 12 +Record Length +.IP "rchksum" 12 +Record Checksum +.IP "hchksum" 12 +Header Checksum +.IP "{unnamed_union}" 12 +anonymous +.IP "nmra" 12 +NVMe MultiRecord Area +.IP "ppmra" 12 +NVMe PCIe Port MultiRecord Area +.IP "tmra" 12 +Topology MultiRecord Area diff --git a/doc/man/nvme_mi_vpd_mra.2 b/doc/man/nvme_mi_vpd_mra.2 new file mode 100644 index 0000000..6d08710 --- /dev/null +++ b/doc/man/nvme_mi_vpd_mra.2 @@ -0,0 +1,75 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_mra" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_mra \- NVMe MultiRecord Area +.SH SYNOPSIS +struct nvme_mi_vpd_mra { +.br +.BI " __u8 nmravn;" +.br +.BI " __u8 ff;" +.br +.BI " __u8 rsvd7[6];" +.br +.BI " __u8 i18vpwr;" +.br +.BI " __u8 m18vpwr;" +.br +.BI " __u8 i33vpwr;" +.br +.BI " __u8 m33vpwr;" +.br +.BI " __u8 rsvd17;" +.br +.BI " __u8 m33vapsr;" +.br +.BI " __u8 i5vapsr;" +.br +.BI " __u8 m5vapsr;" +.br +.BI " __u8 i12vapsr;" +.br +.BI " __u8 m12vapsr;" +.br +.BI " __u8 mtl;" +.br +.BI " __u8 tnvmcap[16];" +.br +.BI " __u8 rsvd37[27];" +.br +.BI " +}; +.br + +.SH Members +.IP "nmravn" 12 +NVMe MultiRecord Area Version Number +.IP "ff" 12 +Form Factor +.IP "rsvd7" 12 +Reserved +.IP "i18vpwr" 12 +Initial 1.8 V Power Supply Requirements +.IP "m18vpwr" 12 +Maximum 1.8 V Power Supply Requirements +.IP "i33vpwr" 12 +Initial 3.3 V Power Supply Requirements +.IP "m33vpwr" 12 +Maximum 3.3 V Power Supply Requirements +.IP "rsvd17" 12 +Reserved +.IP "m33vapsr" 12 +Maximum 3.3 Vi aux Power Supply Requirements +.IP "i5vapsr" 12 +Initial 5 V Power Supply Requirements +.IP "m5vapsr" 12 +Maximum 5 V Power Supply Requirements +.IP "i12vapsr" 12 +Initial 12 V Power Supply Requirements +.IP "m12vapsr" 12 +Maximum 12 V Power Supply Requirements +.IP "mtl" 12 +Maximum Thermal Load +.IP "tnvmcap" 12 +Total NVM Capacity +.IP "rsvd37" 12 +Reserved diff --git a/doc/man/nvme_mi_vpd_ppmra.2 b/doc/man/nvme_mi_vpd_ppmra.2 new file mode 100644 index 0000000..9a2cb9a --- /dev/null +++ b/doc/man/nvme_mi_vpd_ppmra.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_ppmra" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_ppmra \- NVMe PCIe Port MultiRecord Area +.SH SYNOPSIS +struct nvme_mi_vpd_ppmra { +.br +.BI " __u8 nppmravn;" +.br +.BI " __u8 pn;" +.br +.BI " __u8 ppi;" +.br +.BI " __u8 ls;" +.br +.BI " __u8 mlw;" +.br +.BI " __u8 mctp;" +.br +.BI " __u8 refccap;" +.br +.BI " __u8 pi;" +.br +.BI " __u8 rsvd13[3];" +.br +.BI " +}; +.br + +.SH Members +.IP "nppmravn" 12 +NVMe PCIe Port MultiRecord Area Version Number +.IP "pn" 12 +PCIe Port Number +.IP "ppi" 12 +Port Information +.IP "ls" 12 +PCIe Link Speed +.IP "mlw" 12 +PCIe Maximum Link Width +.IP "mctp" 12 +MCTP Support +.IP "refccap" 12 +Ref Clk Capability +.IP "pi" 12 +Port Identifier +.IP "rsvd13" 12 +Reserved diff --git a/doc/man/nvme_mi_vpd_telem.2 b/doc/man/nvme_mi_vpd_telem.2 new file mode 100644 index 0000000..6e2c6f3 --- /dev/null +++ b/doc/man/nvme_mi_vpd_telem.2 @@ -0,0 +1,28 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_telem" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_telem \- Vital Product Data Element Descriptor +.SH SYNOPSIS +struct nvme_mi_vpd_telem { +.br +.BI " __u8 type;" +.br +.BI " __u8 rev;" +.br +.BI " __u8 len;" +.br +.BI " __u8 data[0];" +.br +.BI " +}; +.br + +.SH Members +.IP "type" 12 +Type of the Element Descriptor +.IP "rev" 12 +Revision of the Element Descriptor +.IP "len" 12 +Number of bytes in the Element Descriptor +.IP "data" 12 +Type-specific information associated with +the Element Descriptor diff --git a/doc/man/nvme_mi_vpd_tra.2 b/doc/man/nvme_mi_vpd_tra.2 new file mode 100644 index 0000000..eddac5e --- /dev/null +++ b/doc/man/nvme_mi_vpd_tra.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_mi_vpd_tra" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_mi_vpd_tra \- Vital Product Data Topology MultiRecord +.SH SYNOPSIS +struct nvme_mi_vpd_tra { +.br +.BI " __u8 vn;" +.br +.BI " __u8 rsvd6;" +.br +.BI " __u8 ec;" +.br +.BI " struct nvme_mi_vpd_telem elems[0];" +.br +.BI " +}; +.br + +.SH Members +.IP "vn" 12 +Version Number +.IP "rsvd6" 12 +Reserved +.IP "ec" 12 +Element Count +.IP "elems" 12 +Element Descriptor diff --git a/doc/man/nvme_namespace_attach_ctrls.2 b/doc/man/nvme_namespace_attach_ctrls.2 new file mode 100644 index 0000000..83800d9 --- /dev/null +++ b/doc/man/nvme_namespace_attach_ctrls.2 @@ -0,0 +1,21 @@ +.TH "nvme_namespace_attach_ctrls" 9 "nvme_namespace_attach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_attach_ctrls \- Attach namespace to controller(s) +.SH SYNOPSIS +.B "int" nvme_namespace_attach_ctrls +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 num_ctrls " "," +.BI "__u16 *ctrlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID to attach +.IP "num_ctrls" 12 +Number of controllers in ctrlist +.IP "ctrlist" 12 +List of controller IDs to perform the attach action +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_namespace_detach_ctrls.2 b/doc/man/nvme_namespace_detach_ctrls.2 new file mode 100644 index 0000000..693dab8 --- /dev/null +++ b/doc/man/nvme_namespace_detach_ctrls.2 @@ -0,0 +1,21 @@ +.TH "nvme_namespace_detach_ctrls" 9 "nvme_namespace_detach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_detach_ctrls \- Detach namespace from controller(s) +.SH SYNOPSIS +.B "int" nvme_namespace_detach_ctrls +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 num_ctrls " "," +.BI "__u16 *ctrlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID to detach +.IP "num_ctrls" 12 +Number of controllers in ctrlist +.IP "ctrlist" 12 +List of controller IDs to perform the detach action +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_namespace_filter.2 b/doc/man/nvme_namespace_filter.2 new file mode 100644 index 0000000..d812134 --- /dev/null +++ b/doc/man/nvme_namespace_filter.2 @@ -0,0 +1,11 @@ +.TH "nvme_namespace_filter" 9 "nvme_namespace_filter" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_filter \- Filter for namespaces +.SH SYNOPSIS +.B "int" nvme_namespace_filter +.BI "(const struct dirent *d " ");" +.SH ARGUMENTS +.IP "d" 12 +dirent to check +.SH "RETURN" +1 if \fId\fP matches, 0 otherwise diff --git a/doc/man/nvme_namespace_first_path.2 b/doc/man/nvme_namespace_first_path.2 new file mode 100644 index 0000000..5cbc1a3 --- /dev/null +++ b/doc/man/nvme_namespace_first_path.2 @@ -0,0 +1,11 @@ +.TH "nvme_namespace_first_path" 9 "nvme_namespace_first_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_first_path \- Start path iterator +.SH SYNOPSIS +.B "nvme_path_t" nvme_namespace_first_path +.BI "(nvme_ns_t ns " ");" +.SH ARGUMENTS +.IP "ns" 12 +Namespace instance +.SH "RETURN" +First \fInvme_path_t\fP object of an \fIns\fP iterator diff --git a/doc/man/nvme_namespace_for_each_path.2 b/doc/man/nvme_namespace_for_each_path.2 new file mode 100644 index 0000000..1631576 --- /dev/null +++ b/doc/man/nvme_namespace_for_each_path.2 @@ -0,0 +1,12 @@ +.TH "nvme_namespace_for_each_path" 9 "nvme_namespace_for_each_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_for_each_path \- Traverse paths +.SH SYNOPSIS +.B "nvme_namespace_for_each_path +.BI "(n " "," +.BI "p " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "p" 12 +\fInvme_path_t\fP object diff --git a/doc/man/nvme_namespace_for_each_path_safe.2 b/doc/man/nvme_namespace_for_each_path_safe.2 new file mode 100644 index 0000000..5e580c1 --- /dev/null +++ b/doc/man/nvme_namespace_for_each_path_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_namespace_for_each_path_safe" 9 "nvme_namespace_for_each_path_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_for_each_path_safe \- Traverse paths +.SH SYNOPSIS +.B "nvme_namespace_for_each_path_safe +.BI "(n " "," +.BI "p " "," +.BI "_p " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "p" 12 +\fInvme_path_t\fP object +.IP "_p" 12 +A \fInvme_path_t_node\fP to use as temporary storage diff --git a/doc/man/nvme_namespace_next_path.2 b/doc/man/nvme_namespace_next_path.2 new file mode 100644 index 0000000..1e6453f --- /dev/null +++ b/doc/man/nvme_namespace_next_path.2 @@ -0,0 +1,14 @@ +.TH "nvme_namespace_next_path" 9 "nvme_namespace_next_path" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_namespace_next_path \- Next path iterator +.SH SYNOPSIS +.B "nvme_path_t" nvme_namespace_next_path +.BI "(nvme_ns_t ns " "," +.BI "nvme_path_t p " ");" +.SH ARGUMENTS +.IP "ns" 12 +Namespace instance +.IP "p" 12 +Previous \fInvme_path_t\fP object of an \fIns\fP iterator +.SH "RETURN" +Next \fInvme_path_t\fP object of an \fIns\fP iterator diff --git a/doc/man/nvme_nd_ns_fpi.2 b/doc/man/nvme_nd_ns_fpi.2 new file mode 100644 index 0000000..9f59b2f --- /dev/null +++ b/doc/man/nvme_nd_ns_fpi.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "enum nvme_nd_ns_fpi" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_nd_ns_fpi \- If a format operation is in progress, this field indicates the percentage of the namespace that remains to be formatted. +.SH SYNOPSIS +enum nvme_nd_ns_fpi { +.br +.BI " NVME_NS_FPI_REMAINING" +, +.br +.br +.BI " NVME_NS_FPI_SUPPORTED" + +}; +.SH Constants +.IP "NVME_NS_FPI_REMAINING" 12 +Mask to get the format percent remaining value +.IP "NVME_NS_FPI_SUPPORTED" 12 +If set, indicates that the namespace supports the +Format Progress Indicator defined for the field. diff --git a/doc/man/nvme_next_host.2 b/doc/man/nvme_next_host.2 new file mode 100644 index 0000000..a6023c9 --- /dev/null +++ b/doc/man/nvme_next_host.2 @@ -0,0 +1,14 @@ +.TH "nvme_next_host" 9 "nvme_next_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_next_host \- Next host iterator +.SH SYNOPSIS +.B "nvme_host_t" nvme_next_host +.BI "(nvme_root_t r " "," +.BI "nvme_host_t h " ");" +.SH ARGUMENTS +.IP "r" 12 +\fInvme_root_t\fP object +.IP "h" 12 +Previous \fInvme_host_t\fP iterator +.SH "RETURN" +Next \fInvme_host_t\fP object in an iterator diff --git a/doc/man/nvme_next_subsystem.2 b/doc/man/nvme_next_subsystem.2 new file mode 100644 index 0000000..4e0ba64 --- /dev/null +++ b/doc/man/nvme_next_subsystem.2 @@ -0,0 +1,14 @@ +.TH "nvme_next_subsystem" 9 "nvme_next_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_next_subsystem \- Next subsystem iterator +.SH SYNOPSIS +.B "nvme_subsystem_t" nvme_next_subsystem +.BI "(nvme_host_t h " "," +.BI "nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "h" 12 +\fInvme_host_t\fP object +.IP "s" 12 +Previous \fInvme_subsystem_t\fP iterator +.SH "RETURN" +next \fInvme_subsystem_t\fP object in an iterator diff --git a/doc/man/nvme_ns_attach.2 b/doc/man/nvme_ns_attach.2 new file mode 100644 index 0000000..e506dad --- /dev/null +++ b/doc/man/nvme_ns_attach.2 @@ -0,0 +1,12 @@ +.TH "nvme_ns_attach" 9 "nvme_ns_attach" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_attach \- Attach or detach namespace to controller(s) +.SH SYNOPSIS +.B "int" nvme_ns_attach +.BI "(struct nvme_ns_attach_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_ns_attach_args\fP Argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_attach_ctrls.2 b/doc/man/nvme_ns_attach_ctrls.2 new file mode 100644 index 0000000..99f02dc --- /dev/null +++ b/doc/man/nvme_ns_attach_ctrls.2 @@ -0,0 +1,18 @@ +.TH "nvme_ns_attach_ctrls" 9 "nvme_ns_attach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_attach_ctrls \- Attach namespace to controllers +.SH SYNOPSIS +.B "int" nvme_ns_attach_ctrls +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ctrl_list *ctrlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID to attach +.IP "ctrlist" 12 +Controller list to modify attachment state of nsid +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_attach_sel.2 b/doc/man/nvme_ns_attach_sel.2 new file mode 100644 index 0000000..3cad00e --- /dev/null +++ b/doc/man/nvme_ns_attach_sel.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_ns_attach_sel" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ns_attach_sel \- Namespace Attachment - Select +.SH SYNOPSIS +enum nvme_ns_attach_sel { +.br +.BI " NVME_NS_ATTACH_SEL_CTRL_ATTACH" +, +.br +.br +.BI " NVME_NS_ATTACH_SEL_CTRL_DEATTACH" + +}; +.SH Constants +.IP "NVME_NS_ATTACH_SEL_CTRL_ATTACH" 12 +Namespace attach selection +.IP "NVME_NS_ATTACH_SEL_CTRL_DEATTACH" 12 +Namespace detach selection diff --git a/doc/man/nvme_ns_compare.2 b/doc/man/nvme_ns_compare.2 new file mode 100644 index 0000000..b1ae3c3 --- /dev/null +++ b/doc/man/nvme_ns_compare.2 @@ -0,0 +1,20 @@ +.TH "nvme_ns_compare" 9 "nvme_ns_compare" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_compare \- Compare data on a namespace +.SH SYNOPSIS +.B "int" nvme_ns_compare +.BI "(nvme_ns_t n " "," +.BI "void *buf " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "buf" 12 +Buffer with data to be compared +.IP "offset" 12 +LBA offset of \fIn\fP +.IP "count" 12 +Number of sectors in \fIbuf\fP +.SH "RETURN" +Number of sectors compared diff --git a/doc/man/nvme_ns_detach_ctrls.2 b/doc/man/nvme_ns_detach_ctrls.2 new file mode 100644 index 0000000..a0869ad --- /dev/null +++ b/doc/man/nvme_ns_detach_ctrls.2 @@ -0,0 +1,18 @@ +.TH "nvme_ns_detach_ctrls" 9 "nvme_ns_detach_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_detach_ctrls \- Detach namespace from controllers +.SH SYNOPSIS +.B "int" nvme_ns_detach_ctrls +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_ctrl_list *ctrlist " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID to detach +.IP "ctrlist" 12 +Controller list to modify attachment state of nsid +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_flush.2 b/doc/man/nvme_ns_flush.2 new file mode 100644 index 0000000..04acee3 --- /dev/null +++ b/doc/man/nvme_ns_flush.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_flush" 9 "nvme_ns_flush" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_flush \- Flush data to a namespace +.SH SYNOPSIS +.B "int" nvme_ns_flush +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +0 on success, -1 on error. diff --git a/doc/man/nvme_ns_get_csi.2 b/doc/man/nvme_ns_get_csi.2 new file mode 100644 index 0000000..a94fe51 --- /dev/null +++ b/doc/man/nvme_ns_get_csi.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_csi" 9 "nvme_ns_get_csi" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_csi \- Command set identifier of a namespace +.SH SYNOPSIS +.B "enum nvme_csi" nvme_ns_get_csi +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +The namespace's command set identifier in use diff --git a/doc/man/nvme_ns_get_ctrl.2 b/doc/man/nvme_ns_get_ctrl.2 new file mode 100644 index 0000000..666e2f8 --- /dev/null +++ b/doc/man/nvme_ns_get_ctrl.2 @@ -0,0 +1,13 @@ +.TH "nvme_ns_get_ctrl" 9 "nvme_ns_get_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_ctrl \- &nvme_ctrl_t of a namespace +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_ns_get_ctrl +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "DESCRIPTION" +nvme_ctrl_t object may be NULL for a multipathed namespace +.SH "RETURN" +nvme_ctrl_t object of \fIn\fP if present diff --git a/doc/man/nvme_ns_get_eui64.2 b/doc/man/nvme_ns_get_eui64.2 new file mode 100644 index 0000000..6f53422 --- /dev/null +++ b/doc/man/nvme_ns_get_eui64.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_eui64" 9 "nvme_ns_get_eui64" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_eui64 \- 64-bit eui of a namespace +.SH SYNOPSIS +.B "const uint8_t *" nvme_ns_get_eui64 +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +A pointer to the 64-bit eui diff --git a/doc/man/nvme_ns_get_fd.2 b/doc/man/nvme_ns_get_fd.2 new file mode 100644 index 0000000..0ff82d5 --- /dev/null +++ b/doc/man/nvme_ns_get_fd.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_fd" 9 "nvme_ns_get_fd" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_fd \- Get associated file descriptor +.SH SYNOPSIS +.B "int" nvme_ns_get_fd +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +File descriptor associated with \fIn\fP or -1 diff --git a/doc/man/nvme_ns_get_firmware.2 b/doc/man/nvme_ns_get_firmware.2 new file mode 100644 index 0000000..d4a9c68 --- /dev/null +++ b/doc/man/nvme_ns_get_firmware.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_firmware" 9 "nvme_ns_get_firmware" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_firmware \- Firmware string of a namespace +.SH SYNOPSIS +.B "const char *" nvme_ns_get_firmware +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +Firmware string of \fIn\fP diff --git a/doc/man/nvme_ns_get_generic_name.2 b/doc/man/nvme_ns_get_generic_name.2 new file mode 100644 index 0000000..8dcd9fb --- /dev/null +++ b/doc/man/nvme_ns_get_generic_name.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_generic_name" 9 "nvme_ns_get_generic_name" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_generic_name \- Returns name of generic namespace chardev. +.SH SYNOPSIS +.B "const char *" nvme_ns_get_generic_name +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +Name of generic namespace chardev diff --git a/doc/man/nvme_ns_get_lba_count.2 b/doc/man/nvme_ns_get_lba_count.2 new file mode 100644 index 0000000..f614362 --- /dev/null +++ b/doc/man/nvme_ns_get_lba_count.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_lba_count" 9 "nvme_ns_get_lba_count" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_lba_count \- LBA count of a namespace +.SH SYNOPSIS +.B "uint64_t" nvme_ns_get_lba_count +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +LBA count of \fIn\fP diff --git a/doc/man/nvme_ns_get_lba_size.2 b/doc/man/nvme_ns_get_lba_size.2 new file mode 100644 index 0000000..bd57491 --- /dev/null +++ b/doc/man/nvme_ns_get_lba_size.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_lba_size" 9 "nvme_ns_get_lba_size" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_lba_size \- LBA size of a namespace +.SH SYNOPSIS +.B "int" nvme_ns_get_lba_size +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +LBA size of \fIn\fP diff --git a/doc/man/nvme_ns_get_lba_util.2 b/doc/man/nvme_ns_get_lba_util.2 new file mode 100644 index 0000000..fc82c51 --- /dev/null +++ b/doc/man/nvme_ns_get_lba_util.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_lba_util" 9 "nvme_ns_get_lba_util" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_lba_util \- LBA utilization of a namespace +.SH SYNOPSIS +.B "uint64_t" nvme_ns_get_lba_util +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +LBA utilization of \fIn\fP diff --git a/doc/man/nvme_ns_get_meta_size.2 b/doc/man/nvme_ns_get_meta_size.2 new file mode 100644 index 0000000..75e1d1c --- /dev/null +++ b/doc/man/nvme_ns_get_meta_size.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_meta_size" 9 "nvme_ns_get_meta_size" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_meta_size \- Metadata size of a namespace +.SH SYNOPSIS +.B "int" nvme_ns_get_meta_size +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +Metadata size of \fIn\fP diff --git a/doc/man/nvme_ns_get_model.2 b/doc/man/nvme_ns_get_model.2 new file mode 100644 index 0000000..dd4f3de --- /dev/null +++ b/doc/man/nvme_ns_get_model.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_model" 9 "nvme_ns_get_model" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_model \- Model of a namespace +.SH SYNOPSIS +.B "const char *" nvme_ns_get_model +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +Model string of \fIn\fP diff --git a/doc/man/nvme_ns_get_name.2 b/doc/man/nvme_ns_get_name.2 new file mode 100644 index 0000000..6fce252 --- /dev/null +++ b/doc/man/nvme_ns_get_name.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_name" 9 "nvme_ns_get_name" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_name \- sysfs name of a namespace +.SH SYNOPSIS +.B "const char *" nvme_ns_get_name +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +sysfs name of \fIn\fP diff --git a/doc/man/nvme_ns_get_nguid.2 b/doc/man/nvme_ns_get_nguid.2 new file mode 100644 index 0000000..43c8cbd --- /dev/null +++ b/doc/man/nvme_ns_get_nguid.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_nguid" 9 "nvme_ns_get_nguid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_nguid \- 128-bit nguid of a namespace +.SH SYNOPSIS +.B "const uint8_t *" nvme_ns_get_nguid +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +A pointer to the 128-bit nguid diff --git a/doc/man/nvme_ns_get_nsid.2 b/doc/man/nvme_ns_get_nsid.2 new file mode 100644 index 0000000..4cd6c6a --- /dev/null +++ b/doc/man/nvme_ns_get_nsid.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_nsid" 9 "nvme_ns_get_nsid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_nsid \- NSID of a namespace +.SH SYNOPSIS +.B "int" nvme_ns_get_nsid +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +NSID of \fIn\fP diff --git a/doc/man/nvme_ns_get_serial.2 b/doc/man/nvme_ns_get_serial.2 new file mode 100644 index 0000000..2320ff6 --- /dev/null +++ b/doc/man/nvme_ns_get_serial.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_serial" 9 "nvme_ns_get_serial" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_serial \- Serial number of a namespace +.SH SYNOPSIS +.B "const char *" nvme_ns_get_serial +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +Serial number string of \fIn\fP diff --git a/doc/man/nvme_ns_get_subsystem.2 b/doc/man/nvme_ns_get_subsystem.2 new file mode 100644 index 0000000..eb847d0 --- /dev/null +++ b/doc/man/nvme_ns_get_subsystem.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_subsystem" 9 "nvme_ns_get_subsystem" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_subsystem \- &nvme_subsystem_t of a namespace +.SH SYNOPSIS +.B "nvme_subsystem_t" nvme_ns_get_subsystem +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +nvme_subsystem_t object of \fIn\fP diff --git a/doc/man/nvme_ns_get_sysfs_dir.2 b/doc/man/nvme_ns_get_sysfs_dir.2 new file mode 100644 index 0000000..55d0387 --- /dev/null +++ b/doc/man/nvme_ns_get_sysfs_dir.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_sysfs_dir" 9 "nvme_ns_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_sysfs_dir \- sysfs directory of a namespace +.SH SYNOPSIS +.B "const char *" nvme_ns_get_sysfs_dir +.BI "(nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.SH "RETURN" +sysfs directory name of \fIn\fP diff --git a/doc/man/nvme_ns_get_uuid.2 b/doc/man/nvme_ns_get_uuid.2 new file mode 100644 index 0000000..f9ea1db --- /dev/null +++ b/doc/man/nvme_ns_get_uuid.2 @@ -0,0 +1,14 @@ +.TH "nvme_ns_get_uuid" 9 "nvme_ns_get_uuid" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_get_uuid \- UUID of a namespace +.SH SYNOPSIS +.B "void" nvme_ns_get_uuid +.BI "(nvme_ns_t n " "," +.BI "unsigned char out[NVME_UUID_LEN] " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "out" 12 +buffer for the UUID +.SH "DESCRIPTION" +Copies the namespace's uuid into \fIout\fP diff --git a/doc/man/nvme_ns_id_desc.2 b/doc/man/nvme_ns_id_desc.2 new file mode 100644 index 0000000..f3568fd --- /dev/null +++ b/doc/man/nvme_ns_id_desc.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "struct nvme_ns_id_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_ns_id_desc \- Namespace identifier type descriptor +.SH SYNOPSIS +struct nvme_ns_id_desc { +.br +.BI " __u8 nidt;" +.br +.BI " __u8 nidl;" +.br +.BI " __le16 rsvd;" +.br +.BI " __u8 nid[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nidt" 12 +Namespace Identifier Type, see \fIenum nvme_ns_id_desc_nidt\fP +.IP "nidl" 12 +Namespace Identifier Length contains the length in bytes of the +\fIstruct nvme_id_ns\fP.nid. +.IP "rsvd" 12 +Reserved +.IP "nid" 12 +Namespace Identifier contains a value that is globally unique and +assigned to the namespace when the namespace is created. The length +is defined in \fIstruct nvme_id_ns\fP.nidl. diff --git a/doc/man/nvme_ns_id_desc_nidt.2 b/doc/man/nvme_ns_id_desc_nidt.2 new file mode 100644 index 0000000..dfef8a2 --- /dev/null +++ b/doc/man/nvme_ns_id_desc_nidt.2 @@ -0,0 +1,33 @@ +.TH "libnvme" 9 "enum nvme_ns_id_desc_nidt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ns_id_desc_nidt \- Known namespace identifier types +.SH SYNOPSIS +enum nvme_ns_id_desc_nidt { +.br +.BI " NVME_NIDT_EUI64" +, +.br +.br +.BI " NVME_NIDT_NGUID" +, +.br +.br +.BI " NVME_NIDT_UUID" +, +.br +.br +.BI " NVME_NIDT_CSI" + +}; +.SH Constants +.IP "NVME_NIDT_EUI64" 12 +IEEE Extended Unique Identifier, the NID field contains a +copy of the EUI64 field in the struct nvme_id_ns.eui64. +.IP "NVME_NIDT_NGUID" 12 +Namespace Globally Unique Identifier, the NID field +contains a copy of the NGUID field in struct nvme_id_ns.nguid. +.IP "NVME_NIDT_UUID" 12 +The NID field contains a 128-bit Universally Unique +Identifier (UUID) as specified in RFC 4122. +.IP "NVME_NIDT_CSI" 12 +The NID field contains the command set identifier. diff --git a/doc/man/nvme_ns_identify.2 b/doc/man/nvme_ns_identify.2 new file mode 100644 index 0000000..ec345b1 --- /dev/null +++ b/doc/man/nvme_ns_identify.2 @@ -0,0 +1,17 @@ +.TH "nvme_ns_identify" 9 "nvme_ns_identify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_identify \- Issue an 'identify namespace' command +.SH SYNOPSIS +.B "int" nvme_ns_identify +.BI "(nvme_ns_t n " "," +.BI "struct nvme_id_ns *ns " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "ns" 12 +\fInvme_id_ns\fP buffer +.SH "DESCRIPTION" +Writes the data returned by the 'identify namespace' command +into \fIns\fP. +.SH "RETURN" +0 on success, -1 on error. diff --git a/doc/man/nvme_ns_identify_descs.2 b/doc/man/nvme_ns_identify_descs.2 new file mode 100644 index 0000000..cd266ed --- /dev/null +++ b/doc/man/nvme_ns_identify_descs.2 @@ -0,0 +1,17 @@ +.TH "nvme_ns_identify_descs" 9 "nvme_ns_identify_descs" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_identify_descs \- Issue an 'identify descriptors' command +.SH SYNOPSIS +.B "int" nvme_ns_identify_descs +.BI "(nvme_ns_t n " "," +.BI "struct nvme_ns_id_desc *descs " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "descs" 12 +List of identify descriptors +.SH "DESCRIPTION" +Writes the data returned by the 'identify descriptors' command +into \fIdescs\fP. +.SH "RETURN" +0 on success, -1 on error. diff --git a/doc/man/nvme_ns_list.2 b/doc/man/nvme_ns_list.2 new file mode 100644 index 0000000..ad01208 --- /dev/null +++ b/doc/man/nvme_ns_list.2 @@ -0,0 +1,15 @@ +.TH "libnvme" 9 "struct nvme_ns_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_ns_list \- Namespace List +.SH SYNOPSIS +struct nvme_ns_list { +.br +.BI " __le32 ns[NVME_ID_NS_LIST_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "ns" 12 +Namespace Identifier diff --git a/doc/man/nvme_ns_metadata_type.2 b/doc/man/nvme_ns_metadata_type.2 new file mode 100644 index 0000000..b427ffb --- /dev/null +++ b/doc/man/nvme_ns_metadata_type.2 @@ -0,0 +1,34 @@ +.TH "libnvme" 9 "enum nvme_ns_metadata_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ns_metadata_type \- Namespace Metadata Element Types +.SH SYNOPSIS +enum nvme_ns_metadata_type { +.br +.BI " NVME_NS_METADATA_OS_NS_NAME" +, +.br +.br +.BI " NVME_NS_METADATA_PRE_BOOT_NS_NAME" +, +.br +.br +.BI " NVME_NS_METADATA_OS_NS_QUAL_1" +, +.br +.br +.BI " NVME_NS_METADATA_OS_NS_QUAL_2" + +}; +.SH Constants +.IP "NVME_NS_METADATA_OS_NS_NAME" 12 +Name of the namespace in the +operating system +.IP "NVME_NS_METADATA_PRE_BOOT_NS_NAME" 12 +Name of the namespace in the pre-boot +environment. +.IP "NVME_NS_METADATA_OS_NS_QUAL_1" 12 +First qualifier of the Operating System +Namespace Name. +.IP "NVME_NS_METADATA_OS_NS_QUAL_2" 12 +Second qualifier of the Operating System +Namespace Name. diff --git a/doc/man/nvme_ns_mgmt.2 b/doc/man/nvme_ns_mgmt.2 new file mode 100644 index 0000000..e835501 --- /dev/null +++ b/doc/man/nvme_ns_mgmt.2 @@ -0,0 +1,12 @@ +.TH "nvme_ns_mgmt" 9 "nvme_ns_mgmt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_mgmt \- Issue a Namespace management command +.SH SYNOPSIS +.B "int" nvme_ns_mgmt +.BI "(struct nvme_ns_mgmt_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_ns_mgmt_args\fP Argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_mgmt_create.2 b/doc/man/nvme_ns_mgmt_create.2 new file mode 100644 index 0000000..e1bb3df --- /dev/null +++ b/doc/man/nvme_ns_mgmt_create.2 @@ -0,0 +1,29 @@ +.TH "nvme_ns_mgmt_create" 9 "nvme_ns_mgmt_create" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_mgmt_create \- Create a non attached namespace +.SH SYNOPSIS +.B "int" nvme_ns_mgmt_create +.BI "(int fd " "," +.BI "struct nvme_id_ns *ns " "," +.BI "__u32 *nsid " "," +.BI "__u32 timeout " "," +.BI "__u8 csi " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "ns" 12 +Namespace identification that defines ns creation parameters +.IP "nsid" 12 +On success, set to the namespace id that was created +.IP "timeout" 12 +Override the default timeout to this value in milliseconds; +set to 0 to use the system default. +.IP "csi" 12 +Command Set Identifier +.SH "DESCRIPTION" +On successful creation, the namespace exists in the subsystem, but is not +attached to any controller. Use the \fBnvme_ns_attach_ctrls\fP to assign the +namespace to one or more controllers. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_mgmt_delete.2 b/doc/man/nvme_ns_mgmt_delete.2 new file mode 100644 index 0000000..3d813e6 --- /dev/null +++ b/doc/man/nvme_ns_mgmt_delete.2 @@ -0,0 +1,19 @@ +.TH "nvme_ns_mgmt_delete" 9 "nvme_ns_mgmt_delete" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_mgmt_delete \- Delete a non attached namespace +.SH SYNOPSIS +.B "int" nvme_ns_mgmt_delete +.BI "(int fd " "," +.BI "__u32 nsid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace identifier to delete +.SH "DESCRIPTION" +It is recommended that a namespace being deleted is not attached to any +controller. Use the \fBnvme_ns_detach_ctrls\fP first if the namespace is still +attached. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_mgmt_sel.2 b/doc/man/nvme_ns_mgmt_sel.2 new file mode 100644 index 0000000..055dcb2 --- /dev/null +++ b/doc/man/nvme_ns_mgmt_sel.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_ns_mgmt_sel" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ns_mgmt_sel \- Namespace Management - Select +.SH SYNOPSIS +enum nvme_ns_mgmt_sel { +.br +.BI " NVME_NS_MGMT_SEL_CREATE" +, +.br +.br +.BI " NVME_NS_MGMT_SEL_DELETE" + +}; +.SH Constants +.IP "NVME_NS_MGMT_SEL_CREATE" 12 +Namespace Create selection +.IP "NVME_NS_MGMT_SEL_DELETE" 12 +Namespace Delete selection diff --git a/doc/man/nvme_ns_read.2 b/doc/man/nvme_ns_read.2 new file mode 100644 index 0000000..af85e0a --- /dev/null +++ b/doc/man/nvme_ns_read.2 @@ -0,0 +1,20 @@ +.TH "nvme_ns_read" 9 "nvme_ns_read" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_read \- Read from a namespace +.SH SYNOPSIS +.B "int" nvme_ns_read +.BI "(nvme_ns_t n " "," +.BI "void *buf " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "buf" 12 +Buffer into which the data will be transferred +.IP "offset" 12 +LBA offset of \fIn\fP +.IP "count" 12 +Number of sectors in \fIbuf\fP +.SH "RETURN" +Number of sectors read or -1 on error. diff --git a/doc/man/nvme_ns_rescan.2 b/doc/man/nvme_ns_rescan.2 new file mode 100644 index 0000000..559de47 --- /dev/null +++ b/doc/man/nvme_ns_rescan.2 @@ -0,0 +1,13 @@ +.TH "nvme_ns_rescan" 9 "nvme_ns_rescan" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_rescan \- Initiate a controller rescan +.SH SYNOPSIS +.B "int" nvme_ns_rescan +.BI "(int fd " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.SH "DESCRIPTION" +This should only be sent to controller handles, not to namespaces. +.SH "RETURN" +0 if a rescan was initiated or -1 with errno set otherwise. diff --git a/doc/man/nvme_ns_verify.2 b/doc/man/nvme_ns_verify.2 new file mode 100644 index 0000000..3811496 --- /dev/null +++ b/doc/man/nvme_ns_verify.2 @@ -0,0 +1,17 @@ +.TH "nvme_ns_verify" 9 "nvme_ns_verify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_verify \- Verify data on a namespace +.SH SYNOPSIS +.B "int" nvme_ns_verify +.BI "(nvme_ns_t n " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "offset" 12 +LBA offset of \fIn\fP +.IP "count" 12 +Number of sectors to be verified +.SH "RETURN" +Number of sectors verified diff --git a/doc/man/nvme_ns_write.2 b/doc/man/nvme_ns_write.2 new file mode 100644 index 0000000..ddc21cd --- /dev/null +++ b/doc/man/nvme_ns_write.2 @@ -0,0 +1,20 @@ +.TH "nvme_ns_write" 9 "nvme_ns_write" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_write \- Write to a namespace +.SH SYNOPSIS +.B "int" nvme_ns_write +.BI "(nvme_ns_t n " "," +.BI "void *buf " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "buf" 12 +Buffer with data to be written +.IP "offset" 12 +LBA offset of \fIn\fP +.IP "count" 12 +Number of sectors in \fIbuf\fP +.SH "RETURN" +Number of sectors written or -1 on error diff --git a/doc/man/nvme_ns_write_protect_cfg.2 b/doc/man/nvme_ns_write_protect_cfg.2 new file mode 100644 index 0000000..eebca9c --- /dev/null +++ b/doc/man/nvme_ns_write_protect_cfg.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_ns_write_protect_cfg" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_ns_write_protect_cfg \- Write Protection - Write Protection State +.SH SYNOPSIS +enum nvme_ns_write_protect_cfg { +.br +.BI " NVME_NS_WP_CFG_NONE" +, +.br +.br +.BI " NVME_NS_WP_CFG_PROTECT" +, +.br +.br +.BI " NVME_NS_WP_CFG_PROTECT_POWER_CYCLE" +, +.br +.br +.BI " NVME_NS_WP_CFG_PROTECT_PERMANENT" + +}; +.SH Constants +.IP "NVME_NS_WP_CFG_NONE" 12 +No Write Protect +.IP "NVME_NS_WP_CFG_PROTECT" 12 +Write Protect +.IP "NVME_NS_WP_CFG_PROTECT_POWER_CYCLE" 12 +Write Protect Until Power Cycle +.IP "NVME_NS_WP_CFG_PROTECT_PERMANENT" 12 +Permanent Write Protect diff --git a/doc/man/nvme_ns_write_uncorrectable.2 b/doc/man/nvme_ns_write_uncorrectable.2 new file mode 100644 index 0000000..c3d3b80 --- /dev/null +++ b/doc/man/nvme_ns_write_uncorrectable.2 @@ -0,0 +1,17 @@ +.TH "nvme_ns_write_uncorrectable" 9 "nvme_ns_write_uncorrectable" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_write_uncorrectable \- Issus a 'write uncorrectable' command +.SH SYNOPSIS +.B "int" nvme_ns_write_uncorrectable +.BI "(nvme_ns_t n " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "offset" 12 +LBA offset in \fIn\fP +.IP "count" 12 +Number of sectors to be written +.SH "RETURN" +Number of sectors written diff --git a/doc/man/nvme_ns_write_zeros.2 b/doc/man/nvme_ns_write_zeros.2 new file mode 100644 index 0000000..adecc20 --- /dev/null +++ b/doc/man/nvme_ns_write_zeros.2 @@ -0,0 +1,17 @@ +.TH "nvme_ns_write_zeros" 9 "nvme_ns_write_zeros" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_ns_write_zeros \- Write zeros to a namespace +.SH SYNOPSIS +.B "int" nvme_ns_write_zeros +.BI "(nvme_ns_t n " "," +.BI "off_t offset " "," +.BI "size_t count " ");" +.SH ARGUMENTS +.IP "n" 12 +Namespace instance +.IP "offset" 12 +LBA offset in \fIn\fP +.IP "count" 12 +Number of sectors to be written +.SH "RETURN" +Number of sectors written diff --git a/doc/man/nvme_nss_hw_err_event.2 b/doc/man/nvme_nss_hw_err_event.2 new file mode 100644 index 0000000..1ea2151 --- /dev/null +++ b/doc/man/nvme_nss_hw_err_event.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_nss_hw_err_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_nss_hw_err_event \- NVM Subsystem Hardware Error Event +.SH SYNOPSIS +struct nvme_nss_hw_err_event { +.br +.BI " __le16 nss_hw_err_event_code;" +.br +.BI " __u8 rsvd2[2];" +.br +.BI " __u8 *add_hw_err_info;" +.br +.BI " +}; +.br + +.SH Members +.IP "nss_hw_err_event_code" 12 +NVM Subsystem Hardware Error Event Code +.IP "rsvd2" 12 +Reserved +.IP "add_hw_err_info" 12 +Additional Hardware Error Information diff --git a/doc/man/nvme_nvm_id_ns.2 b/doc/man/nvme_nvm_id_ns.2 new file mode 100644 index 0000000..4f839de --- /dev/null +++ b/doc/man/nvme_nvm_id_ns.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_nvm_id_ns" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_nvm_id_ns \- NVME Command Set I/O Command Set Specific Identify Namespace Data Structure +.SH SYNOPSIS +struct nvme_nvm_id_ns { +.br +.BI " __le64 lbstm;" +.br +.BI " __u8 pic;" +.br +.BI " __u8 rsvd9[3];" +.br +.BI " __le32 elbaf[64];" +.br +.BI " __u8 rsvd268[3828];" +.br +.BI " +}; +.br + +.SH Members +.IP "lbstm" 12 +Logical Block Storage Tag Mask +.IP "pic" 12 +Protection Information Capabilities +.IP "rsvd9" 12 +Reserved +.IP "elbaf" 12 +List of Extended LBA Format Support +.IP "rsvd268" 12 +Reserved diff --git a/doc/man/nvme_nvm_id_ns_elbaf.2 b/doc/man/nvme_nvm_id_ns_elbaf.2 new file mode 100644 index 0000000..e34c953 --- /dev/null +++ b/doc/man/nvme_nvm_id_ns_elbaf.2 @@ -0,0 +1,20 @@ +.TH "libnvme" 9 "enum nvme_nvm_id_ns_elbaf" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_nvm_id_ns_elbaf \- This field indicates the extended LBA format +.SH SYNOPSIS +enum nvme_nvm_id_ns_elbaf { +.br +.BI " NVME_NVM_ELBAF_STS_MASK" +, +.br +.br +.BI " NVME_NVM_ELBAF_PIF_MASK" + +}; +.SH Constants +.IP "NVME_NVM_ELBAF_STS_MASK" 12 +Mask to get the storage tag size used to determine +the variable-sized storage tag/reference tag fields +.IP "NVME_NVM_ELBAF_PIF_MASK" 12 +Mask to get the protection information format for +the extended LBA format. diff --git a/doc/man/nvme_nvm_identify_ctrl.2 b/doc/man/nvme_nvm_identify_ctrl.2 new file mode 100644 index 0000000..48e433f --- /dev/null +++ b/doc/man/nvme_nvm_identify_ctrl.2 @@ -0,0 +1,18 @@ +.TH "nvme_nvm_identify_ctrl" 9 "nvme_nvm_identify_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_nvm_identify_ctrl \- Identify controller data +.SH SYNOPSIS +.B "int" nvme_nvm_identify_ctrl +.BI "(int fd " "," +.BI "struct nvme_id_ctrl_nvm *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "id" 12 +User space destination address to transfer the data +.SH "DESCRIPTION" +Return an identify controller data structure to the host of +processing controller. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_nvmeset_pl_status.2 b/doc/man/nvme_nvmeset_pl_status.2 new file mode 100644 index 0000000..9ba17bf --- /dev/null +++ b/doc/man/nvme_nvmeset_pl_status.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_nvmeset_pl_status" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_nvmeset_pl_status \- Predictable Latency Per NVM Set Log - Status +.SH SYNOPSIS +enum nvme_nvmeset_pl_status { +.br +.BI " NVME_NVMSET_PL_STATUS_DISABLED" +, +.br +.br +.BI " NVME_NVMSET_PL_STATUS_DTWIN" +, +.br +.br +.BI " NVME_NVMSET_PL_STATUS_NDWIN" + +}; +.SH Constants +.IP "NVME_NVMSET_PL_STATUS_DISABLED" 12 +Not used (Predictable Latency Mode not enabled) +.IP "NVME_NVMSET_PL_STATUS_DTWIN" 12 +Deterministic Window (DTWIN) +.IP "NVME_NVMSET_PL_STATUS_NDWIN" 12 +Non-Deterministic Window (NDWIN) diff --git a/doc/man/nvme_nvmset_attr.2 b/doc/man/nvme_nvmset_attr.2 new file mode 100644 index 0000000..8dae126 --- /dev/null +++ b/doc/man/nvme_nvmset_attr.2 @@ -0,0 +1,46 @@ +.TH "libnvme" 9 "struct nvme_nvmset_attr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_nvmset_attr \- NVM Set Attributes Entry +.SH SYNOPSIS +struct nvme_nvmset_attr { +.br +.BI " __le16 nvmsetid;" +.br +.BI " __le16 endgid;" +.br +.BI " __u8 rsvd4[4];" +.br +.BI " __le32 rr4kt;" +.br +.BI " __le32 ows;" +.br +.BI " __u8 tnvmsetcap[16];" +.br +.BI " __u8 unvmsetcap[16];" +.br +.BI " __u8 rsvd48[80];" +.br +.BI " +}; +.br + +.SH Members +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "endgid" 12 +Endurance Group Identifier +.IP "rsvd4" 12 +Reserved +.IP "rr4kt" 12 +Random 4 KiB Read Typical indicates the typical +time to complete a 4 KiB random read in 100 nanosecond units +when the NVM Set is in a Predictable Latency Mode Deterministic +Window and there is 1 outstanding command per NVM Set. +.IP "ows" 12 +Optimal Write Size +.IP "tnvmsetcap" 12 +Total NVM Set Capacity +.IP "unvmsetcap" 12 +Unallocated NVM Set Capacity +.IP "rsvd48" 12 +Reserved diff --git a/doc/man/nvme_nvmset_pl_events.2 b/doc/man/nvme_nvmset_pl_events.2 new file mode 100644 index 0000000..9ebe442 --- /dev/null +++ b/doc/man/nvme_nvmset_pl_events.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "enum nvme_nvmset_pl_events" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_nvmset_pl_events \- Predictable Latency Per NVM Set Log - Event Type +.SH SYNOPSIS +enum nvme_nvmset_pl_events { +.br +.BI " NVME_NVMSET_PL_EVENT_DTWIN_READ_WARN" +, +.br +.br +.BI " NVME_NVMSET_PL_EVENT_DTWIN_WRITE_WARN" +, +.br +.br +.BI " NVME_NVMSET_PL_EVENT_DTWIN_TIME_WARN" +, +.br +.br +.BI " NVME_NVMSET_PL_EVENT_DTWIN_EXCEEDED" +, +.br +.br +.BI " NVME_NVMSET_PL_EVENT_DTWIN_EXCURSION" + +}; +.SH Constants +.IP "NVME_NVMSET_PL_EVENT_DTWIN_READ_WARN" 12 +DTWIN Reads Warning +.IP "NVME_NVMSET_PL_EVENT_DTWIN_WRITE_WARN" 12 +DTWIN Writes Warning +.IP "NVME_NVMSET_PL_EVENT_DTWIN_TIME_WARN" 12 +DTWIN Time Warning +.IP "NVME_NVMSET_PL_EVENT_DTWIN_EXCEEDED" 12 +Autonomous transition from DTWIN +to NDWIN due to typical or +maximum value exceeded +.IP "NVME_NVMSET_PL_EVENT_DTWIN_EXCURSION" 12 +Autonomous transition from DTWIN +to NDWIN due to Deterministic +Excursion diff --git a/doc/man/nvme_nvmset_predictable_lat_log.2 b/doc/man/nvme_nvmset_predictable_lat_log.2 new file mode 100644 index 0000000..afe4302 --- /dev/null +++ b/doc/man/nvme_nvmset_predictable_lat_log.2 @@ -0,0 +1,67 @@ +.TH "libnvme" 9 "struct nvme_nvmset_predictable_lat_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_nvmset_predictable_lat_log \- Predictable Latency Mode - Deterministic Threshold Configuration Data +.SH SYNOPSIS +struct nvme_nvmset_predictable_lat_log { +.br +.BI " __u8 status;" +.br +.BI " __u8 rsvd1;" +.br +.BI " __le16 event_type;" +.br +.BI " __u8 rsvd4[28];" +.br +.BI " __le64 dtwin_rt;" +.br +.BI " __le64 dtwin_wt;" +.br +.BI " __le64 dtwin_tmax;" +.br +.BI " __le64 ndwin_tmin_hi;" +.br +.BI " __le64 ndwin_tmin_lo;" +.br +.BI " __u8 rsvd72[56];" +.br +.BI " __le64 dtwin_re;" +.br +.BI " __le64 dtwin_we;" +.br +.BI " __le64 dtwin_te;" +.br +.BI " __u8 rsvd152[360];" +.br +.BI " +}; +.br + +.SH Members +.IP "status" 12 +Status +.IP "rsvd1" 12 +Reserved +.IP "event_type" 12 +Event Type +.IP "rsvd4" 12 +Reserved +.IP "dtwin_rt" 12 +DTWIN Reads Typical +.IP "dtwin_wt" 12 +DTWIN Writes Typical +.IP "dtwin_tmax" 12 +DTWIN Time Maximum +.IP "ndwin_tmin_hi" 12 +NDWIN Time Minimum High +.IP "ndwin_tmin_lo" 12 +NDWIN Time Minimum Low +.IP "rsvd72" 12 +Reserved +.IP "dtwin_re" 12 +DTWIN Reads Estimate +.IP "dtwin_we" 12 +DTWIN Writes Estimate +.IP "dtwin_te" 12 +DTWIN Time Estimate +.IP "rsvd152" 12 +Reserved diff --git a/doc/man/nvme_open.2 b/doc/man/nvme_open.2 new file mode 100644 index 0000000..d9ae3e7 --- /dev/null +++ b/doc/man/nvme_open.2 @@ -0,0 +1,15 @@ +.TH "nvme_open" 9 "nvme_open" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_open \- Open an nvme controller or namespace device +.SH SYNOPSIS +.B "int" nvme_open +.BI "(const char *name " ");" +.SH ARGUMENTS +.IP "name" 12 +The basename of the device to open +.SH "DESCRIPTION" +This will look for the handle in /dev/ and validate the name and filetype +match linux conventions. +.SH "RETURN" +A file descriptor for the device on a successful open, or -1 with +errno set otherwise. diff --git a/doc/man/nvme_passthru_cmd.2 b/doc/man/nvme_passthru_cmd.2 new file mode 100644 index 0000000..4c47164 --- /dev/null +++ b/doc/man/nvme_passthru_cmd.2 @@ -0,0 +1,83 @@ +.TH "libnvme" 9 "struct nvme_passthru_cmd" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_passthru_cmd \- nvme passthrough command structure +.SH SYNOPSIS +struct nvme_passthru_cmd { +.br +.BI " __u8 opcode;" +.br +.BI " __u8 flags;" +.br +.BI " __u16 rsvd1;" +.br +.BI " __u32 nsid;" +.br +.BI " __u32 cdw2;" +.br +.BI " __u32 cdw3;" +.br +.BI " __u64 metadata;" +.br +.BI " __u64 addr;" +.br +.BI " __u32 metadata_len;" +.br +.BI " __u32 data_len;" +.br +.BI " __u32 cdw10;" +.br +.BI " __u32 cdw11;" +.br +.BI " __u32 cdw12;" +.br +.BI " __u32 cdw13;" +.br +.BI " __u32 cdw14;" +.br +.BI " __u32 cdw15;" +.br +.BI " __u32 timeout_ms;" +.br +.BI " __u32 result;" +.br +.BI " +}; +.br + +.SH Members +.IP "opcode" 12 +Operation code, see \fIenum nvme_io_opcodes\fP and \fIenum nvme_admin_opcodes\fP +.IP "flags" 12 +Not supported: intended for command flags (eg: SGL, FUSE) +.IP "rsvd1" 12 +Reserved for future use +.IP "nsid" 12 +Namespace Identifier, or Fabrics type +.IP "cdw2" 12 +Command Dword 2 (no spec defined use) +.IP "cdw3" 12 +Command Dword 3 (no spec defined use) +.IP "metadata" 12 +User space address to metadata buffer (NULL if not used) +.IP "addr" 12 +User space address to data buffer (NULL if not used) +.IP "metadata_len" 12 +Metadata buffer transfer length +.IP "data_len" 12 +Data buffer transfer length +.IP "cdw10" 12 +Command Dword 10 (command specific) +.IP "cdw11" 12 +Command Dword 11 (command specific) +.IP "cdw12" 12 +Command Dword 12 (command specific) +.IP "cdw13" 12 +Command Dword 13 (command specific) +.IP "cdw14" 12 +Command Dword 14 (command specific) +.IP "cdw15" 12 +Command Dword 15 (command specific) +.IP "timeout_ms" 12 +If non-zero, overrides system default timeout in milliseconds +.IP "result" 12 +Set on completion to the command's CQE DWORD 0 controller response diff --git a/doc/man/nvme_passthru_cmd64.2 b/doc/man/nvme_passthru_cmd64.2 new file mode 100644 index 0000000..a4cc2f3 --- /dev/null +++ b/doc/man/nvme_passthru_cmd64.2 @@ -0,0 +1,87 @@ +.TH "libnvme" 9 "struct nvme_passthru_cmd64" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_passthru_cmd64 \- 64-bit nvme passthrough command structure +.SH SYNOPSIS +struct nvme_passthru_cmd64 { +.br +.BI " __u8 opcode;" +.br +.BI " __u8 flags;" +.br +.BI " __u16 rsvd1;" +.br +.BI " __u32 nsid;" +.br +.BI " __u32 cdw2;" +.br +.BI " __u32 cdw3;" +.br +.BI " __u64 metadata;" +.br +.BI " __u64 addr;" +.br +.BI " __u32 metadata_len;" +.br +.BI " __u32 data_len;" +.br +.BI " __u32 cdw10;" +.br +.BI " __u32 cdw11;" +.br +.BI " __u32 cdw12;" +.br +.BI " __u32 cdw13;" +.br +.BI " __u32 cdw14;" +.br +.BI " __u32 cdw15;" +.br +.BI " __u32 timeout_ms;" +.br +.BI " __u32 rsvd2;" +.br +.BI " __u64 result;" +.br +.BI " +}; +.br + +.SH Members +.IP "opcode" 12 +Operation code, see \fIenum nvme_io_opcodes\fP and \fIenum nvme_admin_opcodes\fP +.IP "flags" 12 +Not supported: intended for command flags (eg: SGL, FUSE) +.IP "rsvd1" 12 +Reserved for future use +.IP "nsid" 12 +Namespace Identifier, or Fabrics type +.IP "cdw2" 12 +Command Dword 2 (no spec defined use) +.IP "cdw3" 12 +Command Dword 3 (no spec defined use) +.IP "metadata" 12 +User space address to metadata buffer (NULL if not used) +.IP "addr" 12 +User space address to data buffer (NULL if not used) +.IP "metadata_len" 12 +Metadata buffer transfer length +.IP "data_len" 12 +Data buffer transfer length +.IP "cdw10" 12 +Command Dword 10 (command specific) +.IP "cdw11" 12 +Command Dword 11 (command specific) +.IP "cdw12" 12 +Command Dword 12 (command specific) +.IP "cdw13" 12 +Command Dword 13 (command specific) +.IP "cdw14" 12 +Command Dword 14 (command specific) +.IP "cdw15" 12 +Command Dword 15 (command specific) +.IP "timeout_ms" 12 +If non-zero, overrides system default timeout in milliseconds +.IP "rsvd2" 12 +Reserved for future use (and fills an implicit struct pad +.IP "result" 12 +Set on completion to the command's CQE DWORD 0-1 controller response diff --git a/doc/man/nvme_path_get_ana_state.2 b/doc/man/nvme_path_get_ana_state.2 new file mode 100644 index 0000000..840d533 --- /dev/null +++ b/doc/man/nvme_path_get_ana_state.2 @@ -0,0 +1,11 @@ +.TH "nvme_path_get_ana_state" 9 "nvme_path_get_ana_state" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_path_get_ana_state \- ANA state of an nvme_path_t object +.SH SYNOPSIS +.B "const char *" nvme_path_get_ana_state +.BI "(nvme_path_t p " ");" +.SH ARGUMENTS +.IP "p" 12 +\fInvme_path_t\fP object +.SH "RETURN" +ANA (Asynchronous Namespace Access) state of \fIp\fP diff --git a/doc/man/nvme_path_get_ctrl.2 b/doc/man/nvme_path_get_ctrl.2 new file mode 100644 index 0000000..759d8ba --- /dev/null +++ b/doc/man/nvme_path_get_ctrl.2 @@ -0,0 +1,11 @@ +.TH "nvme_path_get_ctrl" 9 "nvme_path_get_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_path_get_ctrl \- Parent controller of an nvme_path_t object +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_path_get_ctrl +.BI "(nvme_path_t p " ");" +.SH ARGUMENTS +.IP "p" 12 +\fInvme_path_t\fP object +.SH "RETURN" +Parent controller if present diff --git a/doc/man/nvme_path_get_name.2 b/doc/man/nvme_path_get_name.2 new file mode 100644 index 0000000..100556a --- /dev/null +++ b/doc/man/nvme_path_get_name.2 @@ -0,0 +1,11 @@ +.TH "nvme_path_get_name" 9 "nvme_path_get_name" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_path_get_name \- sysfs name of an &nvme_path_t object +.SH SYNOPSIS +.B "const char *" nvme_path_get_name +.BI "(nvme_path_t p " ");" +.SH ARGUMENTS +.IP "p" 12 +\fInvme_path_t\fP object +.SH "RETURN" +sysfs name of \fIp\fP diff --git a/doc/man/nvme_path_get_ns.2 b/doc/man/nvme_path_get_ns.2 new file mode 100644 index 0000000..515c889 --- /dev/null +++ b/doc/man/nvme_path_get_ns.2 @@ -0,0 +1,11 @@ +.TH "nvme_path_get_ns" 9 "nvme_path_get_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_path_get_ns \- Parent namespace of an nvme_path_t object +.SH SYNOPSIS +.B "nvme_ns_t" nvme_path_get_ns +.BI "(nvme_path_t p " ");" +.SH ARGUMENTS +.IP "p" 12 +\fInvme_path_t\fP object +.SH "RETURN" +Parent namespace if present diff --git a/doc/man/nvme_path_get_sysfs_dir.2 b/doc/man/nvme_path_get_sysfs_dir.2 new file mode 100644 index 0000000..621d309 --- /dev/null +++ b/doc/man/nvme_path_get_sysfs_dir.2 @@ -0,0 +1,11 @@ +.TH "nvme_path_get_sysfs_dir" 9 "nvme_path_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_path_get_sysfs_dir \- sysfs directory of an nvme_path_t object +.SH SYNOPSIS +.B "const char *" nvme_path_get_sysfs_dir +.BI "(nvme_path_t p " ");" +.SH ARGUMENTS +.IP "p" 12 +\fInvme_path_t\fP object +.SH "RETURN" +sysfs directory of \fIp\fP diff --git a/doc/man/nvme_paths_filter.2 b/doc/man/nvme_paths_filter.2 new file mode 100644 index 0000000..29514c0 --- /dev/null +++ b/doc/man/nvme_paths_filter.2 @@ -0,0 +1,11 @@ +.TH "nvme_paths_filter" 9 "nvme_paths_filter" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_paths_filter \- Filter for paths +.SH SYNOPSIS +.B "int" nvme_paths_filter +.BI "(const struct dirent *d " ");" +.SH ARGUMENTS +.IP "d" 12 +dirent to check +.SH "RETURN" +1 if \fId\fP matches, 0 otherwise diff --git a/doc/man/nvme_persistent_event_entry.2 b/doc/man/nvme_persistent_event_entry.2 new file mode 100644 index 0000000..24a25fa --- /dev/null +++ b/doc/man/nvme_persistent_event_entry.2 @@ -0,0 +1,51 @@ +.TH "libnvme" 9 "struct nvme_persistent_event_entry" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_persistent_event_entry \- Persistent Event +.SH SYNOPSIS +struct nvme_persistent_event_entry { +.br +.BI " __u8 etype;" +.br +.BI " __u8 etype_rev;" +.br +.BI " __u8 ehl;" +.br +.BI " __u8 ehai;" +.br +.BI " __le16 cntlid;" +.br +.BI " __le64 ets;" +.br +.BI " __le16 pelpid;" +.br +.BI " __u8 rsvd16[4];" +.br +.BI " __le16 vsil;" +.br +.BI " __le16 el;" +.br +.BI " +}; +.br + +.SH Members +.IP "etype" 12 +Event Type +.IP "etype_rev" 12 +Event Type Revision +.IP "ehl" 12 +Event Header Length +.IP "ehai" 12 +Event Header Additional Info +.IP "cntlid" 12 +Controller Identifier +.IP "ets" 12 +Event Timestamp +.IP "pelpid" 12 +Port Identifier +.IP "rsvd16" 12 +Reserved +.IP "vsil" 12 +Vendor Specific Information Length +.IP "el" 12 +Event Length diff --git a/doc/man/nvme_persistent_event_log.2 b/doc/man/nvme_persistent_event_log.2 new file mode 100644 index 0000000..f4dfa80 --- /dev/null +++ b/doc/man/nvme_persistent_event_log.2 @@ -0,0 +1,87 @@ +.TH "libnvme" 9 "struct nvme_persistent_event_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_persistent_event_log \- Persistent Event Log +.SH SYNOPSIS +struct nvme_persistent_event_log { +.br +.BI " __u8 lid;" +.br +.BI " __u8 rsvd1[3];" +.br +.BI " __le32 tnev;" +.br +.BI " __le64 tll;" +.br +.BI " __u8 rv;" +.br +.BI " __u8 rsvd17;" +.br +.BI " __le16 lhl;" +.br +.BI " __le64 ts;" +.br +.BI " __u8 poh[16];" +.br +.BI " __le64 pcc;" +.br +.BI " __le16 vid;" +.br +.BI " __le16 ssvid;" +.br +.BI " char sn[20];" +.br +.BI " char mn[40];" +.br +.BI " char subnqn[NVME_NQN_LENGTH];" +.br +.BI " __le16 gen_number;" +.br +.BI " __le32 rci;" +.br +.BI " __u8 rsvd378[102];" +.br +.BI " __u8 seb[32];" +.br +.BI " +}; +.br + +.SH Members +.IP "lid" 12 +Log Identifier +.IP "rsvd1" 12 +Reserved +.IP "tnev" 12 +Total Number of Events +.IP "tll" 12 +Total Log Length +.IP "rv" 12 +Log Revision +.IP "rsvd17" 12 +Reserved +.IP "lhl" 12 +Log Header Length +.IP "ts" 12 +Timestamp +.IP "poh" 12 +Power on Hours +.IP "pcc" 12 +Power Cycle Count +.IP "vid" 12 +PCI Vendor ID +.IP "ssvid" 12 +PCI Subsystem Vendor ID +.IP "sn" 12 +Serial Number +.IP "mn" 12 +Model Number +.IP "subnqn" 12 +NVM Subsystem NVMe Qualified Name +.IP "gen_number" 12 +Generation Number +.IP "rci" 12 +Reporting Context Information +.IP "rsvd378" 12 +Reserved +.IP "seb" 12 +Supported Events Bitmap diff --git a/doc/man/nvme_persistent_event_types.2 b/doc/man/nvme_persistent_event_types.2 new file mode 100644 index 0000000..e7d8de7 --- /dev/null +++ b/doc/man/nvme_persistent_event_types.2 @@ -0,0 +1,84 @@ +.TH "libnvme" 9 "enum nvme_persistent_event_types" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_persistent_event_types \- Persistent event log events +.SH SYNOPSIS +enum nvme_persistent_event_types { +.br +.BI " NVME_PEL_SMART_HEALTH_EVENT" +, +.br +.br +.BI " NVME_PEL_FW_COMMIT_EVENT" +, +.br +.br +.BI " NVME_PEL_TIMESTAMP_EVENT" +, +.br +.br +.BI " NVME_PEL_POWER_ON_RESET_EVENT" +, +.br +.br +.BI " NVME_PEL_NSS_HW_ERROR_EVENT" +, +.br +.br +.BI " NVME_PEL_CHANGE_NS_EVENT" +, +.br +.br +.BI " NVME_PEL_FORMAT_START_EVENT" +, +.br +.br +.BI " NVME_PEL_FORMAT_COMPLETION_EVENT" +, +.br +.br +.BI " NVME_PEL_SANITIZE_START_EVENT" +, +.br +.br +.BI " NVME_PEL_SANITIZE_COMPLETION_EVENT" +, +.br +.br +.BI " NVME_PEL_SET_FEATURE_EVENT" +, +.br +.br +.BI " NVME_PEL_TELEMETRY_CRT" +, +.br +.br +.BI " NVME_PEL_THERMAL_EXCURSION_EVENT" + +}; +.SH Constants +.IP "NVME_PEL_SMART_HEALTH_EVENT" 12 +SMART / Health Log Snapshot Event +.IP "NVME_PEL_FW_COMMIT_EVENT" 12 +Firmware Commit Event +.IP "NVME_PEL_TIMESTAMP_EVENT" 12 +Timestamp Change Event +.IP "NVME_PEL_POWER_ON_RESET_EVENT" 12 +Power-on or Reset Event +.IP "NVME_PEL_NSS_HW_ERROR_EVENT" 12 +NVM Subsystem Hardware Error Event +.IP "NVME_PEL_CHANGE_NS_EVENT" 12 +Change Namespace Event +.IP "NVME_PEL_FORMAT_START_EVENT" 12 +Format NVM Start Event +.IP "NVME_PEL_FORMAT_COMPLETION_EVENT" 12 +Format NVM Completion Event +.IP "NVME_PEL_SANITIZE_START_EVENT" 12 +Sanitize Start Event +.IP "NVME_PEL_SANITIZE_COMPLETION_EVENT" 12 +Sanitize Completion Event +.IP "NVME_PEL_SET_FEATURE_EVENT" 12 +Set Feature Event +.IP "NVME_PEL_TELEMETRY_CRT" 12 +Telemetry Log Create Event +.IP "NVME_PEL_THERMAL_EXCURSION_EVENT" 12 +Thermal Excursion Event diff --git a/doc/man/nvme_pevent_log_action.2 b/doc/man/nvme_pevent_log_action.2 new file mode 100644 index 0000000..fd80ffd --- /dev/null +++ b/doc/man/nvme_pevent_log_action.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_pevent_log_action" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_pevent_log_action \- Persistent Event Log - Action +.SH SYNOPSIS +enum nvme_pevent_log_action { +.br +.BI " NVME_PEVENT_LOG_READ" +, +.br +.br +.BI " NVME_PEVENT_LOG_EST_CTX_AND_READ" +, +.br +.br +.BI " NVME_PEVENT_LOG_RELEASE_CTX" + +}; +.SH Constants +.IP "NVME_PEVENT_LOG_READ" 12 +Read Log Data +.IP "NVME_PEVENT_LOG_EST_CTX_AND_READ" 12 +Establish Context and Read Log Data +.IP "NVME_PEVENT_LOG_RELEASE_CTX" 12 +Release Context diff --git a/doc/man/nvme_plm_config.2 b/doc/man/nvme_plm_config.2 new file mode 100644 index 0000000..62893ed --- /dev/null +++ b/doc/man/nvme_plm_config.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_plm_config" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_plm_config \- Predictable Latency Mode - Deterministic Threshold Configuration Data Structure +.SH SYNOPSIS +struct nvme_plm_config { +.br +.BI " __le16 ee;" +.br +.BI " __u8 rsvd2[30];" +.br +.BI " __le64 dtwinrt;" +.br +.BI " __le64 dtwinwt;" +.br +.BI " __le64 dtwintt;" +.br +.BI " __u8 rsvd56[456];" +.br +.BI " +}; +.br + +.SH Members +.IP "ee" 12 +Enable Event +.IP "rsvd2" 12 +Reserved +.IP "dtwinrt" 12 +DTWIN Reads Threshold +.IP "dtwinwt" 12 +DTWIN Writes Threshold +.IP "dtwintt" 12 +DTWIN Time Threshold +.IP "rsvd56" 12 +Reserved diff --git a/doc/man/nvme_pmr_size.2 b/doc/man/nvme_pmr_size.2 new file mode 100644 index 0000000..adf55bc --- /dev/null +++ b/doc/man/nvme_pmr_size.2 @@ -0,0 +1,11 @@ +.TH "nvme_pmr_size" 9 "nvme_pmr_size" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_pmr_size \- Calculate size of persistent memory region elasticity buffer +.SH SYNOPSIS +.B "__u64" nvme_pmr_size +.BI "(__u32 pmrebs " ");" +.SH ARGUMENTS +.IP "pmrebs" 12 +Value from controller register NVME_REG_PMREBS +.SH "RETURN" +size of controller persistent memory buffer in bytes diff --git a/doc/man/nvme_pmr_throughput.2 b/doc/man/nvme_pmr_throughput.2 new file mode 100644 index 0000000..364126a --- /dev/null +++ b/doc/man/nvme_pmr_throughput.2 @@ -0,0 +1,11 @@ +.TH "nvme_pmr_throughput" 9 "nvme_pmr_throughput" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_pmr_throughput \- Calculate throughput of persistent memory buffer +.SH SYNOPSIS +.B "__u64" nvme_pmr_throughput +.BI "(__u32 pmrswtp " ");" +.SH ARGUMENTS +.IP "pmrswtp" 12 +Value from controller register NVME_REG_PMRSWTP +.SH "RETURN" +throughput of controller persistent memory buffer in bytes/second diff --git a/doc/man/nvme_power_on_reset_info_list.2 b/doc/man/nvme_power_on_reset_info_list.2 new file mode 100644 index 0000000..327cdb3 --- /dev/null +++ b/doc/man/nvme_power_on_reset_info_list.2 @@ -0,0 +1,39 @@ +.TH "libnvme" 9 "struct nvme_power_on_reset_info_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_power_on_reset_info_list \- Controller Reset Information +.SH SYNOPSIS +struct nvme_power_on_reset_info_list { +.br +.BI " __le16 cid;" +.br +.BI " __u8 fw_act;" +.br +.BI " __u8 op_in_prog;" +.br +.BI " __u8 rsvd4[12];" +.br +.BI " __le32 ctrl_power_cycle;" +.br +.BI " __le64 power_on_ml_seconds;" +.br +.BI " __le64 ctrl_time_stamp;" +.br +.BI " +}; +.br + +.SH Members +.IP "cid" 12 +Controller ID +.IP "fw_act" 12 +Firmware Activation +.IP "op_in_prog" 12 +Operation in Progress +.IP "rsvd4" 12 +Reserved +.IP "ctrl_power_cycle" 12 +Controller Power Cycle +.IP "power_on_ml_seconds" 12 +Power on milliseconds +.IP "ctrl_time_stamp" 12 +Controller Timestamp diff --git a/doc/man/nvme_primary_ctrl_cap.2 b/doc/man/nvme_primary_ctrl_cap.2 new file mode 100644 index 0000000..8f9c593 --- /dev/null +++ b/doc/man/nvme_primary_ctrl_cap.2 @@ -0,0 +1,83 @@ +.TH "libnvme" 9 "struct nvme_primary_ctrl_cap" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_primary_ctrl_cap \- Identify - Controller Capabilities Structure +.SH SYNOPSIS +struct nvme_primary_ctrl_cap { +.br +.BI " __le16 cntlid;" +.br +.BI " __le16 portid;" +.br +.BI " __u8 crt;" +.br +.BI " __u8 rsvd5[27];" +.br +.BI " __le32 vqfrt;" +.br +.BI " __le32 vqrfa;" +.br +.BI " __le16 vqrfap;" +.br +.BI " __le16 vqprt;" +.br +.BI " __le16 vqfrsm;" +.br +.BI " __le16 vqgran;" +.br +.BI " __u8 rsvd48[16];" +.br +.BI " __le32 vifrt;" +.br +.BI " __le32 virfa;" +.br +.BI " __le16 virfap;" +.br +.BI " __le16 viprt;" +.br +.BI " __le16 vifrsm;" +.br +.BI " __le16 vigran;" +.br +.BI " __u8 rsvd80[4016];" +.br +.BI " +}; +.br + +.SH Members +.IP "cntlid" 12 +Controller Identifier +.IP "portid" 12 +Port Identifier +.IP "crt" 12 +Controller Resource Types +.IP "rsvd5" 12 +reserved +.IP "vqfrt" 12 +VQ Resources Flexible Total +.IP "vqrfa" 12 +VQ Resources Flexible Assigned +.IP "vqrfap" 12 +VQ Resources Flexible Allocated to Primary +.IP "vqprt" 12 +VQ Resources Private Total +.IP "vqfrsm" 12 +VQ Resources Flexible Secondary Maximum +.IP "vqgran" 12 +VQ Flexible Resource Preferred Granularity +.IP "rsvd48" 12 +reserved +.IP "vifrt" 12 +VI Resources Flexible Total +.IP "virfa" 12 +VI Resources Flexible Assigned +.IP "virfap" 12 +VI Resources Flexible Allocated to Primary +.IP "viprt" 12 +VI Resources Private Total +.IP "vifrsm" 12 +VI Resources Flexible Secondary Maximum +.IP "vigran" 12 +VI Flexible Resource Preferred Granularity +.IP "rsvd80" 12 +reserved diff --git a/doc/man/nvme_psd_flags.2 b/doc/man/nvme_psd_flags.2 new file mode 100644 index 0000000..e02cde6 --- /dev/null +++ b/doc/man/nvme_psd_flags.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvme_psd_flags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_psd_flags \- Possible flag values in nvme power state descriptor +.SH SYNOPSIS +enum nvme_psd_flags { +.br +.BI " NVME_PSD_FLAGS_MXPS" +, +.br +.br +.BI " NVME_PSD_FLAGS_NOPS" + +}; +.SH Constants +.IP "NVME_PSD_FLAGS_MXPS" 12 +Indicates the scale for the Maximum Power +field. If this bit is cleared, then the scale of the +Maximum Power field is in 0.01 Watts. If this bit is +set, then the scale of the Maximum Power field is in +0.0001 Watts. +.IP "NVME_PSD_FLAGS_NOPS" 12 +Indicates whether the controller processes I/O +commands in this power state. If this bit is cleared, +then the controller processes I/O commands in this +power state. If this bit is set, then the controller +does not process I/O commands in this power state. diff --git a/doc/man/nvme_psd_power_scale.2 b/doc/man/nvme_psd_power_scale.2 new file mode 100644 index 0000000..3e7c358 --- /dev/null +++ b/doc/man/nvme_psd_power_scale.2 @@ -0,0 +1,11 @@ +.TH "nvme_psd_power_scale" 9 "nvme_psd_power_scale" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_psd_power_scale \- power scale occupies the upper 3 bits +.SH SYNOPSIS +.B "unsigned int" nvme_psd_power_scale +.BI "(__u8 ps " ");" +.SH ARGUMENTS +.IP "ps" 12 +power scale value +.SH "RETURN" +power scale value diff --git a/doc/man/nvme_psd_ps.2 b/doc/man/nvme_psd_ps.2 new file mode 100644 index 0000000..ed59fcd --- /dev/null +++ b/doc/man/nvme_psd_ps.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_psd_ps" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_psd_ps \- Known values for &struct nvme_psd %ips and %aps. Use with nvme_psd_power_scale() to extract the power scale field to match this enum. +.SH SYNOPSIS +enum nvme_psd_ps { +.br +.BI " NVME_PSD_PS_NOT_REPORTED" +, +.br +.br +.BI " NVME_PSD_PS_100_MICRO_WATT" +, +.br +.br +.BI " NVME_PSD_PS_10_MILLI_WATT" + +}; +.SH Constants +.IP "NVME_PSD_PS_NOT_REPORTED" 12 +Not reported +.IP "NVME_PSD_PS_100_MICRO_WATT" 12 +0.0001 watt scale +.IP "NVME_PSD_PS_10_MILLI_WATT" 12 +0.01 watt scale diff --git a/doc/man/nvme_psd_workload.2 b/doc/man/nvme_psd_workload.2 new file mode 100644 index 0000000..bf6cead --- /dev/null +++ b/doc/man/nvme_psd_workload.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "enum nvme_psd_workload" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_psd_workload \- Specifies a workload hint in the Power Management Feature (see &struct nvme_psd.apw) to inform the NVM subsystem or indicate the conditions for the active power level. +.SH SYNOPSIS +enum nvme_psd_workload { +.br +.BI " NVME_PSD_WORKLOAD_NP" +, +.br +.br +.BI " NVME_PSD_WORKLOAD_1" +, +.br +.br +.BI " NVME_PSD_WORKLOAD_2" + +}; +.SH Constants +.IP "NVME_PSD_WORKLOAD_NP" 12 +The workload is unknown or not provided. +.IP "NVME_PSD_WORKLOAD_1" 12 +Extended Idle Period with a Burst of Random Write +consists of five minutes of idle followed by +thirty-two random write commands of size 1 MiB +submitted to a single controller while all other +controllers in the NVM subsystem are idle, and then +thirty (30) seconds of idle. +.IP "NVME_PSD_WORKLOAD_2" 12 +Heavy Sequential Writes consists of 80,000 +sequential write commands of size 128 KiB submitted to +a single controller while all other controllers in the +NVM subsystem are idle. The submission queue(s) +should be sufficiently large allowing the host to +ensure there are multiple commands pending at all +times during the workload. diff --git a/doc/man/nvme_read.2 b/doc/man/nvme_read.2 new file mode 100644 index 0000000..d7de4a9 --- /dev/null +++ b/doc/man/nvme_read.2 @@ -0,0 +1,12 @@ +.TH "nvme_read" 9 "nvme_read" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_read \- Submit an nvme user read command +.SH SYNOPSIS +.B "int" nvme_read +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_read_config.2 b/doc/man/nvme_read_config.2 new file mode 100644 index 0000000..363647f --- /dev/null +++ b/doc/man/nvme_read_config.2 @@ -0,0 +1,17 @@ +.TH "nvme_read_config" 9 "nvme_read_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_read_config \- Read NVMe JSON configuration file +.SH SYNOPSIS +.B "int" nvme_read_config +.BI "(nvme_root_t r " "," +.BI "const char *config_file " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.IP "config_file" 12 +JSON configuration file +.SH "DESCRIPTION" +Read in the contents of \fIconfig_file\fP and merge them with +the elements in \fIr\fP. +.SH "RETURN" +0 on success, -1 on failure with errno set. diff --git a/doc/man/nvme_refresh_topology.2 b/doc/man/nvme_refresh_topology.2 new file mode 100644 index 0000000..dac1ee1 --- /dev/null +++ b/doc/man/nvme_refresh_topology.2 @@ -0,0 +1,11 @@ +.TH "nvme_refresh_topology" 9 "nvme_refresh_topology" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_refresh_topology \- Refresh nvme_root_t object contents +.SH SYNOPSIS +.B "void" nvme_refresh_topology +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.SH "DESCRIPTION" +Removes all elements in \fIr\fP and rescans the existing topology. diff --git a/doc/man/nvme_register_offsets.2 b/doc/man/nvme_register_offsets.2 new file mode 100644 index 0000000..17d03b7 --- /dev/null +++ b/doc/man/nvme_register_offsets.2 @@ -0,0 +1,156 @@ +.TH "libnvme" 9 "enum nvme_register_offsets" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_register_offsets \- controller registers for all transports. This is the layout of BAR0/1 for PCIe, and properties for fabrics. +.SH SYNOPSIS +enum nvme_register_offsets { +.br +.BI " NVME_REG_CAP" +, +.br +.br +.BI " NVME_REG_VS" +, +.br +.br +.BI " NVME_REG_INTMS" +, +.br +.br +.BI " NVME_REG_INTMC" +, +.br +.br +.BI " NVME_REG_CC" +, +.br +.br +.BI " NVME_REG_CSTS" +, +.br +.br +.BI " NVME_REG_NSSR" +, +.br +.br +.BI " NVME_REG_AQA" +, +.br +.br +.BI " NVME_REG_ASQ" +, +.br +.br +.BI " NVME_REG_ACQ" +, +.br +.br +.BI " NVME_REG_CMBLOC" +, +.br +.br +.BI " NVME_REG_CMBSZ" +, +.br +.br +.BI " NVME_REG_BPINFO" +, +.br +.br +.BI " NVME_REG_BPRSEL" +, +.br +.br +.BI " NVME_REG_BPMBL" +, +.br +.br +.BI " NVME_REG_CMBMSC" +, +.br +.br +.BI " NVME_REG_CMBSTS" +, +.br +.br +.BI " NVME_REG_CRTO" +, +.br +.br +.BI " NVME_REG_PMRCAP" +, +.br +.br +.BI " NVME_REG_PMRCTL" +, +.br +.br +.BI " NVME_REG_PMRSTS" +, +.br +.br +.BI " NVME_REG_PMREBS" +, +.br +.br +.BI " NVME_REG_PMRSWTP" +, +.br +.br +.BI " NVME_REG_PMRMSCL" +, +.br +.br +.BI " NVME_REG_PMRMSCU" + +}; +.SH Constants +.IP "NVME_REG_CAP" 12 +Controller Capabilities +.IP "NVME_REG_VS" 12 +Version +.IP "NVME_REG_INTMS" 12 +Interrupt Mask Set +.IP "NVME_REG_INTMC" 12 +Interrupt Mask Clear +.IP "NVME_REG_CC" 12 +Controller Configuration +.IP "NVME_REG_CSTS" 12 +Controller Status +.IP "NVME_REG_NSSR" 12 +NVM Subsystem Reset +.IP "NVME_REG_AQA" 12 +Admin Queue Attributes +.IP "NVME_REG_ASQ" 12 +Admin SQ Base Address +.IP "NVME_REG_ACQ" 12 +Admin CQ Base Address +.IP "NVME_REG_CMBLOC" 12 +Controller Memory Buffer Location +.IP "NVME_REG_CMBSZ" 12 +Controller Memory Buffer Size +.IP "NVME_REG_BPINFO" 12 +Boot Partition Information +.IP "NVME_REG_BPRSEL" 12 +Boot Partition Read Select +.IP "NVME_REG_BPMBL" 12 +Boot Partition Memory Buffer Location +.IP "NVME_REG_CMBMSC" 12 +Controller Memory Buffer Memory Space Control +.IP "NVME_REG_CMBSTS" 12 +Controller Memory Buffer Status +.IP "NVME_REG_CRTO" 12 +Controller Ready Timeouts +.IP "NVME_REG_PMRCAP" 12 +Persistent Memory Capabilities +.IP "NVME_REG_PMRCTL" 12 +Persistent Memory Region Control +.IP "NVME_REG_PMRSTS" 12 +Persistent Memory Region Status +.IP "NVME_REG_PMREBS" 12 +Persistent Memory Region Elasticity Buffer Size +.IP "NVME_REG_PMRSWTP" 12 +Memory Region Sustained Write Throughput +.IP "NVME_REG_PMRMSCL" 12 +Persistent Memory Region Controller Memory Space Control Lower +.IP "NVME_REG_PMRMSCU" 12 +Persistent Memory Region Controller Memory Space Control Upper diff --git a/doc/man/nvme_registered_ctrl.2 b/doc/man/nvme_registered_ctrl.2 new file mode 100644 index 0000000..7d10215 --- /dev/null +++ b/doc/man/nvme_registered_ctrl.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "struct nvme_registered_ctrl" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_registered_ctrl \- Registered Controller Data Structure +.SH SYNOPSIS +struct nvme_registered_ctrl { +.br +.BI " __le16 cntlid;" +.br +.BI " __u8 rcsts;" +.br +.BI " __u8 rsvd3[5];" +.br +.BI " __le64 hostid;" +.br +.BI " __le64 rkey;" +.br +.BI " +}; +.br + +.SH Members +.IP "cntlid" 12 +Controller ID +.IP "rcsts" 12 +Reservation Status +.IP "rsvd3" 12 +Reserved +.IP "hostid" 12 +Host Identifier +.IP "rkey" 12 +Reservation Key diff --git a/doc/man/nvme_registered_ctrl_ext.2 b/doc/man/nvme_registered_ctrl_ext.2 new file mode 100644 index 0000000..370a57d --- /dev/null +++ b/doc/man/nvme_registered_ctrl_ext.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_registered_ctrl_ext" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_registered_ctrl_ext \- Registered Controller Extended Data Structure +.SH SYNOPSIS +struct nvme_registered_ctrl_ext { +.br +.BI " __le16 cntlid;" +.br +.BI " __u8 rcsts;" +.br +.BI " __u8 rsvd3[5];" +.br +.BI " __le64 rkey;" +.br +.BI " __u8 hostid[16];" +.br +.BI " __u8 rsvd32[32];" +.br +.BI " +}; +.br + +.SH Members +.IP "cntlid" 12 +Controller ID +.IP "rcsts" 12 +Reservation Status +.IP "rsvd3" 12 +Reserved +.IP "rkey" 12 +Reservation Key +.IP "hostid" 12 +Host Identifier +.IP "rsvd32" 12 +Reserved diff --git a/doc/man/nvme_rescan_ctrl.2 b/doc/man/nvme_rescan_ctrl.2 new file mode 100644 index 0000000..fd7c417 --- /dev/null +++ b/doc/man/nvme_rescan_ctrl.2 @@ -0,0 +1,9 @@ +.TH "nvme_rescan_ctrl" 9 "nvme_rescan_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_rescan_ctrl \- Rescan an existing controller +.SH SYNOPSIS +.B "void" nvme_rescan_ctrl +.BI "(nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance diff --git a/doc/man/nvme_resv_acquire.2 b/doc/man/nvme_resv_acquire.2 new file mode 100644 index 0000000..25f9f86 --- /dev/null +++ b/doc/man/nvme_resv_acquire.2 @@ -0,0 +1,16 @@ +.TH "nvme_resv_acquire" 9 "nvme_resv_acquire" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_resv_acquire \- Send an nvme reservation acquire +.SH SYNOPSIS +.B "int" nvme_resv_acquire +.BI "(struct nvme_resv_acquire_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_resv_acquire\fP argument structure +.SH "DESCRIPTION" +The Reservation Acquire command acquires a reservation on a namespace, +preempt a reservation held on a namespace, and abort a reservation held on a +namespace. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_resv_cptpl.2 b/doc/man/nvme_resv_cptpl.2 new file mode 100644 index 0000000..0b7d4f2 --- /dev/null +++ b/doc/man/nvme_resv_cptpl.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvme_resv_cptpl" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_cptpl \- Reservation Register - Change Persist Through Power Loss State +.SH SYNOPSIS +enum nvme_resv_cptpl { +.br +.BI " NVME_RESERVATION_CPTPL_NO_CHANGE" +, +.br +.br +.BI " NVME_RESERVATION_CPTPL_CLEAR" +, +.br +.br +.BI " NVME_RESERVATION_CPTPL_PERSIST" + +}; +.SH Constants +.IP "NVME_RESERVATION_CPTPL_NO_CHANGE" 12 +No change to PTPL state +.IP "NVME_RESERVATION_CPTPL_CLEAR" 12 +Reservations are released and +registrants are cleared on a power on +.IP "NVME_RESERVATION_CPTPL_PERSIST" 12 +Reservations and registrants persist +across a power loss diff --git a/doc/man/nvme_resv_notification_log.2 b/doc/man/nvme_resv_notification_log.2 new file mode 100644 index 0000000..d650b77 --- /dev/null +++ b/doc/man/nvme_resv_notification_log.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_resv_notification_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_resv_notification_log \- Reservation Notification Log +.SH SYNOPSIS +struct nvme_resv_notification_log { +.br +.BI " __le64 lpc;" +.br +.BI " __u8 rnlpt;" +.br +.BI " __u8 nalp;" +.br +.BI " __u8 rsvd9[2];" +.br +.BI " __le32 nsid;" +.br +.BI " __u8 rsvd16[48];" +.br +.BI " +}; +.br + +.SH Members +.IP "lpc" 12 +Log Page Count +.IP "rnlpt" 12 +See \fIenum nvme_resv_notify_rnlpt\fP. +.IP "nalp" 12 +Number of Available Log Pages +.IP "rsvd9" 12 +Reserved +.IP "nsid" 12 +Namespace ID +.IP "rsvd16" 12 +Reserved diff --git a/doc/man/nvme_resv_notify_rnlpt.2 b/doc/man/nvme_resv_notify_rnlpt.2 new file mode 100644 index 0000000..a12923b --- /dev/null +++ b/doc/man/nvme_resv_notify_rnlpt.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_resv_notify_rnlpt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_notify_rnlpt \- Reservation Notification Log - Reservation Notification Log Page Type +.SH SYNOPSIS +enum nvme_resv_notify_rnlpt { +.br +.BI " NVME_RESV_NOTIFY_RNLPT_EMPTY" +, +.br +.br +.BI " NVME_RESV_NOTIFY_RNLPT_REGISTRATION_PREEMPTED" +, +.br +.br +.BI " NVME_RESV_NOTIFY_RNLPT_RESERVATION_RELEASED" +, +.br +.br +.BI " NVME_RESV_NOTIFY_RNLPT_RESERVATION_PREEMPTED" + +}; +.SH Constants +.IP "NVME_RESV_NOTIFY_RNLPT_EMPTY" 12 +Empty Log Page +.IP "NVME_RESV_NOTIFY_RNLPT_REGISTRATION_PREEMPTED" 12 +Registration Preempted +.IP "NVME_RESV_NOTIFY_RNLPT_RESERVATION_RELEASED" 12 +Reservation Released +.IP "NVME_RESV_NOTIFY_RNLPT_RESERVATION_PREEMPTED" 12 +Reservation Preempted diff --git a/doc/man/nvme_resv_racqa.2 b/doc/man/nvme_resv_racqa.2 new file mode 100644 index 0000000..ba115a2 --- /dev/null +++ b/doc/man/nvme_resv_racqa.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_resv_racqa" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_racqa \- Reservation Acquire - Reservation Acquire Action +.SH SYNOPSIS +enum nvme_resv_racqa { +.br +.BI " NVME_RESERVATION_RACQA_ACQUIRE" +, +.br +.br +.BI " NVME_RESERVATION_RACQA_PREEMPT" +, +.br +.br +.BI " NVME_RESERVATION_RACQA_PREEMPT_AND_ABORT" + +}; +.SH Constants +.IP "NVME_RESERVATION_RACQA_ACQUIRE" 12 +Acquire +.IP "NVME_RESERVATION_RACQA_PREEMPT" 12 +Preempt +.IP "NVME_RESERVATION_RACQA_PREEMPT_AND_ABORT" 12 +Preempt and Abort diff --git a/doc/man/nvme_resv_register.2 b/doc/man/nvme_resv_register.2 new file mode 100644 index 0000000..944c6a1 --- /dev/null +++ b/doc/man/nvme_resv_register.2 @@ -0,0 +1,15 @@ +.TH "nvme_resv_register" 9 "nvme_resv_register" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_resv_register \- Send an nvme reservation register +.SH SYNOPSIS +.B "int" nvme_resv_register +.BI "(struct nvme_resv_register_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_resv_register_args\fP argument structure +.SH "DESCRIPTION" +The Reservation Register command registers, unregisters, or replaces a +reservation key. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_resv_release.2 b/doc/man/nvme_resv_release.2 new file mode 100644 index 0000000..0b38617 --- /dev/null +++ b/doc/man/nvme_resv_release.2 @@ -0,0 +1,12 @@ +.TH "nvme_resv_release" 9 "nvme_resv_release" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_resv_release \- Send an nvme reservation release +.SH SYNOPSIS +.B "int" nvme_resv_release +.BI "(struct nvme_resv_release_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_resv_release_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_resv_report.2 b/doc/man/nvme_resv_report.2 new file mode 100644 index 0000000..30c8535 --- /dev/null +++ b/doc/man/nvme_resv_report.2 @@ -0,0 +1,16 @@ +.TH "nvme_resv_report" 9 "nvme_resv_report" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_resv_report \- Send an nvme reservation report +.SH SYNOPSIS +.B "int" nvme_resv_report +.BI "(struct nvme_resv_report_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +struct nvme_resv_report_args argument structure +.SH "DESCRIPTION" +Returns a Reservation Status data structure to memory that describes the +registration and reservation status of a namespace. See the definition for +the returned structure, \fIstruct nvme_reservation_status\fP, for more details. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_resv_rrega.2 b/doc/man/nvme_resv_rrega.2 new file mode 100644 index 0000000..fe46dca --- /dev/null +++ b/doc/man/nvme_resv_rrega.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvme_resv_rrega" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_rrega \- Reservation Register - Reservation Register Action +.SH SYNOPSIS +enum nvme_resv_rrega { +.br +.BI " NVME_RESERVATION_RREGA_REGISTER_KEY" +, +.br +.br +.BI " NVME_RESERVATION_RREGA_UNREGISTER_KEY" +, +.br +.br +.BI " NVME_RESERVATION_RREGA_REPLACE_KEY" + +}; +.SH Constants +.IP "NVME_RESERVATION_RREGA_REGISTER_KEY" 12 +Register Reservation Key +.IP "NVME_RESERVATION_RREGA_UNREGISTER_KEY" 12 +Unregister Reservation Key +.IP "NVME_RESERVATION_RREGA_REPLACE_KEY" 12 +Replace Reservation Key diff --git a/doc/man/nvme_resv_rrela.2 b/doc/man/nvme_resv_rrela.2 new file mode 100644 index 0000000..e215461 --- /dev/null +++ b/doc/man/nvme_resv_rrela.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_resv_rrela" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_rrela \- Reservation Release - Reservation Release Action +.SH SYNOPSIS +enum nvme_resv_rrela { +.br +.BI " NVME_RESERVATION_RRELA_RELEASE" +, +.br +.br +.BI " NVME_RESERVATION_RRELA_CLEAR" + +}; +.SH Constants +.IP "NVME_RESERVATION_RRELA_RELEASE" 12 +Release +.IP "NVME_RESERVATION_RRELA_CLEAR" 12 +Clear diff --git a/doc/man/nvme_resv_rtype.2 b/doc/man/nvme_resv_rtype.2 new file mode 100644 index 0000000..3468eae --- /dev/null +++ b/doc/man/nvme_resv_rtype.2 @@ -0,0 +1,42 @@ +.TH "libnvme" 9 "enum nvme_resv_rtype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_resv_rtype \- Reservation Type Encoding +.SH SYNOPSIS +enum nvme_resv_rtype { +.br +.BI " NVME_RESERVATION_RTYPE_WE" +, +.br +.br +.BI " NVME_RESERVATION_RTYPE_EA" +, +.br +.br +.BI " NVME_RESERVATION_RTYPE_WERO" +, +.br +.br +.BI " NVME_RESERVATION_RTYPE_EARO" +, +.br +.br +.BI " NVME_RESERVATION_RTYPE_WEAR" +, +.br +.br +.BI " NVME_RESERVATION_RTYPE_EAAR" + +}; +.SH Constants +.IP "NVME_RESERVATION_RTYPE_WE" 12 +Write Exclusive Reservation +.IP "NVME_RESERVATION_RTYPE_EA" 12 +Exclusive Access Reservation +.IP "NVME_RESERVATION_RTYPE_WERO" 12 +Write Exclusive - Registrants Only Reservation +.IP "NVME_RESERVATION_RTYPE_EARO" 12 +Exclusive Access - Registrants Only Reservation +.IP "NVME_RESERVATION_RTYPE_WEAR" 12 +Write Exclusive - All Registrants Reservation +.IP "NVME_RESERVATION_RTYPE_EAAR" 12 +Exclusive Access - All Registrants Reservation diff --git a/doc/man/nvme_resv_status.2 b/doc/man/nvme_resv_status.2 new file mode 100644 index 0000000..5a1beeb --- /dev/null +++ b/doc/man/nvme_resv_status.2 @@ -0,0 +1,59 @@ +.TH "libnvme" 9 "struct nvme_resv_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_resv_status \- Reservation Status Data Structure +.SH SYNOPSIS +struct nvme_resv_status { +.br +.BI " __le32 gen;" +.br +.BI " __u8 rtype;" +.br +.BI " __u8 regctl[2];" +.br +.BI " __u8 rsvd7[2];" +.br +.BI " __u8 ptpls;" +.br +.BI " __u8 rsvd10[14];" +.br +.BI " union {" +.br +.BI " struct {" +.br +.BI " __u8 rsvd24[40];" +.br +.BI " struct nvme_registered_ctrl_ext regctl_eds[0];" +.br +.BI " };" +.br +.BI " struct nvme_registered_ctrl regctl_ds[0];" +.br +.BI " };" +.br +.BI " +}; +.br + +.SH Members +.IP "gen" 12 +Generation +.IP "rtype" 12 +Reservation Type +.IP "regctl" 12 +Number of Registered Controllers +.IP "rsvd7" 12 +Reserved +.IP "ptpls" 12 +Persist Through Power Loss State +.IP "rsvd10" 12 +Reserved +.IP "{unnamed_union}" 12 +anonymous +.IP "{unnamed_struct}" 12 +anonymous +.IP "rsvd24" 12 +Reserved +.IP "regctl_eds" 12 +Registered Controller Extended Data Structure +.IP "regctl_ds" 12 +Registered Controller Data Structure diff --git a/doc/man/nvme_sanitize_compln_event.2 b/doc/man/nvme_sanitize_compln_event.2 new file mode 100644 index 0000000..044d37e --- /dev/null +++ b/doc/man/nvme_sanitize_compln_event.2 @@ -0,0 +1,27 @@ +.TH "libnvme" 9 "struct nvme_sanitize_compln_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_sanitize_compln_event \- Sanitize Completion Event Data +.SH SYNOPSIS +struct nvme_sanitize_compln_event { +.br +.BI " __le16 sani_prog;" +.br +.BI " __le16 sani_status;" +.br +.BI " __le16 cmpln_info;" +.br +.BI " __u8 rsvd6[2];" +.br +.BI " +}; +.br + +.SH Members +.IP "sani_prog" 12 +Sanitize Progress +.IP "sani_status" 12 +Sanitize Status +.IP "cmpln_info" 12 +Completion Information +.IP "rsvd6" 12 +Reserved diff --git a/doc/man/nvme_sanitize_log_page.2 b/doc/man/nvme_sanitize_log_page.2 new file mode 100644 index 0000000..2c14b07 --- /dev/null +++ b/doc/man/nvme_sanitize_log_page.2 @@ -0,0 +1,106 @@ +.TH "libnvme" 9 "struct nvme_sanitize_log_page" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_sanitize_log_page \- Sanitize Status (Log Identifier 81h) +.SH SYNOPSIS +struct nvme_sanitize_log_page { +.br +.BI " __le16 sprog;" +.br +.BI " __le16 sstat;" +.br +.BI " __le32 scdw10;" +.br +.BI " __le32 eto;" +.br +.BI " __le32 etbe;" +.br +.BI " __le32 etce;" +.br +.BI " __le32 etond;" +.br +.BI " __le32 etbend;" +.br +.BI " __le32 etcend;" +.br +.BI " __u8 rsvd32[480];" +.br +.BI " +}; +.br + +.SH Members +.IP "sprog" 12 +Sanitize Progress (SPROG): indicates the fraction complete of the +sanitize operation. The value is a numerator of the fraction +complete that has 65,536 (10000h) as its denominator. This value +shall be set to FFFFh if the \fIsstat\fP field is not set to +NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS. +.IP "sstat" 12 +Sanitize Status (SSTAT): indicates the status associated with +the most recent sanitize operation. See \fIenum nvme_sanitize_sstat\fP. +.IP "scdw10" 12 +Sanitize Command Dword 10 Information (SCDW10): contains the value +of the Command Dword 10 field of the Sanitize command that started +the sanitize operation. +.IP "eto" 12 +Estimated Time For Overwrite: indicates the number of seconds required +to complete an Overwrite sanitize operation with 16 passes in +the background when the No-Deallocate Modifies Media After Sanitize +field is not set to 10b. A value of 0h indicates that the sanitize +operation is expected to be completed in the background when the +Sanitize command that started that operation is completed. A value +of FFFFFFFFh indicates that no time period is reported. +.IP "etbe" 12 +Estimated Time For Block Erase: indicates the number of seconds +required to complete a Block Erase sanitize operation in the +background when the No-Deallocate Modifies Media After Sanitize +field is not set to 10b. A value of 0h indicates that the sanitize +operation is expected to be completed in the background when the +Sanitize command that started that operation is completed. +A value of FFFFFFFFh indicates that no time period is reported. +.IP "etce" 12 +Estimated Time For Crypto Erase: indicates the number of seconds +required to complete a Crypto Erase sanitize operation in the +background when the No-Deallocate Modifies Media After Sanitize +field is not set to 10b. A value of 0h indicates that the sanitize +operation is expected to be completed in the background when the +Sanitize command that started that operation is completed. +A value of FFFFFFFFh indicates that no time period is reported. +.IP "etond" 12 +Estimated Time For Overwrite With No-Deallocate Media Modification: +indicates the number of seconds required to complete an Overwrite +sanitize operation and the associated additional media modification +after the Overwrite sanitize operation in the background when +the No-Deallocate After Sanitize bit was set to 1 in the Sanitize +command that requested the Overwrite sanitize operation; and +the No-Deallocate Modifies Media After Sanitize field is set to 10b. +A value of 0h indicates that the sanitize operation is expected +to be completed in the background when the Sanitize command that +started that operation is completed. A value of FFFFFFFFh indicates +that no time period is reported. +.IP "etbend" 12 +Estimated Time For Block Erase With No-Deallocate Media Modification: +indicates the number of seconds required to complete a Block Erase +sanitize operation and the associated additional media modification +after the Block Erase sanitize operation in the background when +the No-Deallocate After Sanitize bit was set to 1 in the Sanitize +command that requested the Overwrite sanitize operation; and +the No-Deallocate Modifies Media After Sanitize field is set to 10b. +A value of 0h indicates that the sanitize operation is expected +to be completed in the background when the Sanitize command that +started that operation is completed. A value of FFFFFFFFh indicates +that no time period is reported. +.IP "etcend" 12 +Estimated Time For Crypto Erase With No-Deallocate Media Modification: +indicates the number of seconds required to complete a Crypto Erase +sanitize operation and the associated additional media modification +after the Crypto Erase sanitize operation in the background when +the No-Deallocate After Sanitize bit was set to 1 in the Sanitize +command that requested the Overwrite sanitize operation; and +the No-Deallocate Modifies Media After Sanitize field is set to 10b. +A value of 0h indicates that the sanitize operation is expected +to be completed in the background when the Sanitize command that +started that operation is completed. A value of FFFFFFFFh indicates +that no time period is reported. +.IP "rsvd32" 12 +Reserved diff --git a/doc/man/nvme_sanitize_nvm.2 b/doc/man/nvme_sanitize_nvm.2 new file mode 100644 index 0000000..79ecb8b --- /dev/null +++ b/doc/man/nvme_sanitize_nvm.2 @@ -0,0 +1,22 @@ +.TH "nvme_sanitize_nvm" 9 "nvme_sanitize_nvm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_sanitize_nvm \- Start a sanitize operation +.SH SYNOPSIS +.B "int" nvme_sanitize_nvm +.BI "(struct nvme_sanitize_nvm_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_sanitize_nvm_args\fP argument structure +.SH "DESCRIPTION" +A sanitize operation alters all user data in the NVM subsystem such that +recovery of any previous user data from any cache, the non-volatile media, +or any Controller Memory Buffer is not possible. + +The Sanitize command starts a sanitize operation or to recover from a +previously failed sanitize operation. The sanitize operation types that may +be supported are Block Erase, Crypto Erase, and Overwrite. All sanitize +operations are processed in the background, i.e., completion of the sanitize +command does not indicate completion of the sanitize operation. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_sanitize_sanact.2 b/doc/man/nvme_sanitize_sanact.2 new file mode 100644 index 0000000..a571589 --- /dev/null +++ b/doc/man/nvme_sanitize_sanact.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_sanitize_sanact" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_sanitize_sanact \- Sanitize Action +.SH SYNOPSIS +enum nvme_sanitize_sanact { +.br +.BI " NVME_SANITIZE_SANACT_EXIT_FAILURE" +, +.br +.br +.BI " NVME_SANITIZE_SANACT_START_BLOCK_ERASE" +, +.br +.br +.BI " NVME_SANITIZE_SANACT_START_OVERWRITE" +, +.br +.br +.BI " NVME_SANITIZE_SANACT_START_CRYPTO_ERASE" + +}; +.SH Constants +.IP "NVME_SANITIZE_SANACT_EXIT_FAILURE" 12 +Exit Failure Mode. +.IP "NVME_SANITIZE_SANACT_START_BLOCK_ERASE" 12 +Start a Block Erase sanitize operation. +.IP "NVME_SANITIZE_SANACT_START_OVERWRITE" 12 +Start an Overwrite sanitize operation. +.IP "NVME_SANITIZE_SANACT_START_CRYPTO_ERASE" 12 +Start a Crypto Erase sanitize operation. diff --git a/doc/man/nvme_sanitize_sstat.2 b/doc/man/nvme_sanitize_sstat.2 new file mode 100644 index 0000000..35fcbef --- /dev/null +++ b/doc/man/nvme_sanitize_sstat.2 @@ -0,0 +1,105 @@ +.TH "libnvme" 9 "enum nvme_sanitize_sstat" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_sanitize_sstat \- Sanitize Status (SSTAT) +.SH SYNOPSIS +enum nvme_sanitize_sstat { +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_SHIFT" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_MASK" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_NEVER_SANITIZED" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_COMPLETE_SUCCESS" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_STATUS_ND_COMPLETE_SUCCESS" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_SHIFT" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_MASK" +, +.br +.br +.BI " NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED" + +}; +.SH Constants +.IP "NVME_SANITIZE_SSTAT_STATUS_SHIFT" 12 +Shift amount to get the status value of +the most recent sanitize operation from +the \fIstruct nvme_sanitize_log_page\fP.sstat +field. +.IP "NVME_SANITIZE_SSTAT_STATUS_MASK" 12 +Mask to get the status value of the most +recent sanitize operation. +.IP "NVME_SANITIZE_SSTAT_STATUS_NEVER_SANITIZED" 12 +The NVM subsystem has never been +sanitized. +.IP "NVME_SANITIZE_SSTAT_STATUS_COMPLETE_SUCCESS" 12 +The most recent sanitize operation +completed successfully including any +additional media modification. +.IP "NVME_SANITIZE_SSTAT_STATUS_IN_PROGESS" 12 +A sanitize operation is currently in progress. +.IP "NVME_SANITIZE_SSTAT_STATUS_COMPLETED_FAILED" 12 +The most recent sanitize operation +failed. +.IP "NVME_SANITIZE_SSTAT_STATUS_ND_COMPLETE_SUCCESS" 12 +The most recent sanitize operation +for which No-Deallocate After Sanitize was +requested has completed successfully with +deallocation of all user data. +.IP "NVME_SANITIZE_SSTAT_COMPLETED_PASSES_SHIFT" 12 +Shift amount to get the number +of completed passes if the most recent +sanitize operation was an Overwrite. This +value shall be cleared to 0h if the most +recent sanitize operation was not +an Overwrite. +.IP "NVME_SANITIZE_SSTAT_COMPLETED_PASSES_MASK" 12 +Mask to get the number of completed +passes. +.IP "NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_SHIFT" 12 +Shift amount to get the Global +Data Erased value from the +\fIstruct nvme_sanitize_log_page\fP.sstat field. +.IP "NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED_MASK" 12 +Mask to get the Global Data Erased +value. +.IP "NVME_SANITIZE_SSTAT_GLOBAL_DATA_ERASED" 12 +Global Data Erased: if set, then no +namespace user data in the NVM subsystem +has been written to and no Persistent +Memory Region in the NVM subsystem has +been enabled since being manufactured and +the NVM subsystem has never been sanitized; +or since the most recent successful sanitize +operation. diff --git a/doc/man/nvme_sanitize_start_event.2 b/doc/man/nvme_sanitize_start_event.2 new file mode 100644 index 0000000..213e0b4 --- /dev/null +++ b/doc/man/nvme_sanitize_start_event.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_sanitize_start_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_sanitize_start_event \- Sanitize Start Event Data +.SH SYNOPSIS +struct nvme_sanitize_start_event { +.br +.BI " __le32 sani_cap;" +.br +.BI " __le32 sani_cdw10;" +.br +.BI " __le32 sani_cdw11;" +.br +.BI " +}; +.br + +.SH Members +.IP "sani_cap" 12 +SANICAP +.IP "sani_cdw10" 12 +Sanitize CDW10 +.IP "sani_cdw11" 12 +Sanitize CDW11 diff --git a/doc/man/nvme_scan.2 b/doc/man/nvme_scan.2 new file mode 100644 index 0000000..a3951d6 --- /dev/null +++ b/doc/man/nvme_scan.2 @@ -0,0 +1,11 @@ +.TH "nvme_scan" 9 "nvme_scan" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan \- Scan NVMe topology +.SH SYNOPSIS +.B "nvme_root_t" nvme_scan +.BI "(const char *config_file " ");" +.SH ARGUMENTS +.IP "config_file" 12 +Configuration file +.SH "RETURN" +nvme_root_t object of found elements diff --git a/doc/man/nvme_scan_ctrl.2 b/doc/man/nvme_scan_ctrl.2 new file mode 100644 index 0000000..07bef5d --- /dev/null +++ b/doc/man/nvme_scan_ctrl.2 @@ -0,0 +1,16 @@ +.TH "nvme_scan_ctrl" 9 "nvme_scan_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_ctrl \- Scan on a controller +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_scan_ctrl +.BI "(nvme_root_t r " "," +.BI "const char *name " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.IP "name" 12 +Name of the controller +.SH "DESCRIPTION" +Scans a controller with sysfs name \fIname\fP and add it to \fIr\fP. +.SH "RETURN" +nvme_ctrl_t object diff --git a/doc/man/nvme_scan_ctrl_namespace_paths.2 b/doc/man/nvme_scan_ctrl_namespace_paths.2 new file mode 100644 index 0000000..b473d72 --- /dev/null +++ b/doc/man/nvme_scan_ctrl_namespace_paths.2 @@ -0,0 +1,14 @@ +.TH "nvme_scan_ctrl_namespace_paths" 9 "nvme_scan_ctrl_namespace_paths" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_ctrl_namespace_paths \- Scan for namespace paths in a controller +.SH SYNOPSIS +.B "int" nvme_scan_ctrl_namespace_paths +.BI "(nvme_ctrl_t c " "," +.BI "struct dirent ***paths " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to scan +.IP "paths" 12 +Pointer to array of dirents +.SH "RETURN" +number of entries in \fIpaths\fP diff --git a/doc/man/nvme_scan_ctrl_namespaces.2 b/doc/man/nvme_scan_ctrl_namespaces.2 new file mode 100644 index 0000000..fb4854d --- /dev/null +++ b/doc/man/nvme_scan_ctrl_namespaces.2 @@ -0,0 +1,14 @@ +.TH "nvme_scan_ctrl_namespaces" 9 "nvme_scan_ctrl_namespaces" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_ctrl_namespaces \- Scan for namespaces in a controller +.SH SYNOPSIS +.B "int" nvme_scan_ctrl_namespaces +.BI "(nvme_ctrl_t c " "," +.BI "struct dirent ***ns " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to scan +.IP "ns" 12 +Pointer to array of dirents +.SH "RETURN" +number of entries in \fIns\fP diff --git a/doc/man/nvme_scan_ctrls.2 b/doc/man/nvme_scan_ctrls.2 new file mode 100644 index 0000000..a306590 --- /dev/null +++ b/doc/man/nvme_scan_ctrls.2 @@ -0,0 +1,11 @@ +.TH "nvme_scan_ctrls" 9 "nvme_scan_ctrls" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_ctrls \- Scan for controllers +.SH SYNOPSIS +.B "int" nvme_scan_ctrls +.BI "(struct dirent ***ctrls " ");" +.SH ARGUMENTS +.IP "ctrls" 12 +Pointer to array of dirents +.SH "RETURN" +number of entries in \fIctrls\fP diff --git a/doc/man/nvme_scan_namespace.2 b/doc/man/nvme_scan_namespace.2 new file mode 100644 index 0000000..7fc7523 --- /dev/null +++ b/doc/man/nvme_scan_namespace.2 @@ -0,0 +1,11 @@ +.TH "nvme_scan_namespace" 9 "nvme_scan_namespace" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_namespace \- scan namespace based on sysfs name +.SH SYNOPSIS +.B "nvme_ns_t" nvme_scan_namespace +.BI "(const char *name " ");" +.SH ARGUMENTS +.IP "name" 12 +sysfs name of the namespace to scan +.SH "RETURN" +nvme_ns_t object or NULL if not found. diff --git a/doc/man/nvme_scan_subsystem_namespaces.2 b/doc/man/nvme_scan_subsystem_namespaces.2 new file mode 100644 index 0000000..1dc7ff7 --- /dev/null +++ b/doc/man/nvme_scan_subsystem_namespaces.2 @@ -0,0 +1,14 @@ +.TH "nvme_scan_subsystem_namespaces" 9 "nvme_scan_subsystem_namespaces" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_subsystem_namespaces \- Scan for namespaces in a subsystem +.SH SYNOPSIS +.B "int" nvme_scan_subsystem_namespaces +.BI "(nvme_subsystem_t s " "," +.BI "struct dirent ***ns " ");" +.SH ARGUMENTS +.IP "s" 12 +Subsystem to scan +.IP "ns" 12 +Pointer to array of dirents +.SH "RETURN" +number of entries in \fIns\fP diff --git a/doc/man/nvme_scan_subsystems.2 b/doc/man/nvme_scan_subsystems.2 new file mode 100644 index 0000000..fe7d2cc --- /dev/null +++ b/doc/man/nvme_scan_subsystems.2 @@ -0,0 +1,11 @@ +.TH "nvme_scan_subsystems" 9 "nvme_scan_subsystems" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_subsystems \- Scan for subsystems +.SH SYNOPSIS +.B "int" nvme_scan_subsystems +.BI "(struct dirent ***subsys " ");" +.SH ARGUMENTS +.IP "subsys" 12 +Pointer to array of dirents +.SH "RETURN" +number of entries in \fIsubsys\fP diff --git a/doc/man/nvme_scan_topology.2 b/doc/man/nvme_scan_topology.2 new file mode 100644 index 0000000..7c6f4e1 --- /dev/null +++ b/doc/man/nvme_scan_topology.2 @@ -0,0 +1,20 @@ +.TH "nvme_scan_topology" 9 "nvme_scan_topology" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_scan_topology \- Scan NVMe topology and apply filter +.SH SYNOPSIS +.B "int" nvme_scan_topology +.BI "(nvme_root_t r " "," +.BI "nvme_scan_filter_t f " "," +.BI "void *f_args " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.IP "f" 12 +filter to apply +.IP "f_args" 12 +user-specified argument to \fIf\fP +.SH "DESCRIPTION" +Scans the NVMe topology and filters out the resulting elements +by applying \fIf\fP. +.SH "RETURN" +Number of elements scanned diff --git a/doc/man/nvme_secondary_ctrl.2 b/doc/man/nvme_secondary_ctrl.2 new file mode 100644 index 0000000..75616e5 --- /dev/null +++ b/doc/man/nvme_secondary_ctrl.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "struct nvme_secondary_ctrl" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_secondary_ctrl \- Secondary Controller Entry +.SH SYNOPSIS +struct nvme_secondary_ctrl { +.br +.BI " __le16 scid;" +.br +.BI " __le16 pcid;" +.br +.BI " __u8 scs;" +.br +.BI " __u8 rsvd5[3];" +.br +.BI " __le16 vfn;" +.br +.BI " __le16 nvq;" +.br +.BI " __le16 nvi;" +.br +.BI " __u8 rsvd14[18];" +.br +.BI " +}; +.br + +.SH Members +.IP "scid" 12 +Secondary Controller Identifier +.IP "pcid" 12 +Primary Controller Identifier +.IP "scs" 12 +Secondary Controller State +.IP "rsvd5" 12 +Reserved +.IP "vfn" 12 +Virtual Function Number +.IP "nvq" 12 +Number of VQ Flexible Resources Assigned +.IP "nvi" 12 +Number of VI Flexible Resources Assigned +.IP "rsvd14" 12 +Reserved diff --git a/doc/man/nvme_secondary_ctrl_list.2 b/doc/man/nvme_secondary_ctrl_list.2 new file mode 100644 index 0000000..c2021f5 --- /dev/null +++ b/doc/man/nvme_secondary_ctrl_list.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_secondary_ctrl_list" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_secondary_ctrl_list \- Secondary Controller List +.SH SYNOPSIS +struct nvme_secondary_ctrl_list { +.br +.BI " __u8 num;" +.br +.BI " __u8 rsvd[31];" +.br +.BI " struct nvme_secondary_ctrl sc_entry[NVME_ID_SECONDARY_CTRL_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "num" 12 +Number of Identifiers +.IP "rsvd" 12 +Reserved +.IP "sc_entry" 12 +Secondary Controller Entry diff --git a/doc/man/nvme_security_receive.2 b/doc/man/nvme_security_receive.2 new file mode 100644 index 0000000..e2aac09 --- /dev/null +++ b/doc/man/nvme_security_receive.2 @@ -0,0 +1,12 @@ +.TH "nvme_security_receive" 9 "nvme_security_receive" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_security_receive \- Security Receive command +.SH SYNOPSIS +.B "int" nvme_security_receive +.BI "(struct nvme_security_receive_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_security_receive\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_security_send.2 b/doc/man/nvme_security_send.2 new file mode 100644 index 0000000..0ece82e --- /dev/null +++ b/doc/man/nvme_security_send.2 @@ -0,0 +1,21 @@ +.TH "nvme_security_send" 9 "nvme_security_send" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_security_send \- Security Send command +.SH SYNOPSIS +.B "int" nvme_security_send +.BI "(struct nvme_security_send_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_security_send\fP argument structure +.SH "DESCRIPTION" +The Security Send command transfers security protocol data to the +controller. The data structure transferred to the controller as part of this +command contains security protocol specific commands to be performed by the +controller. The data structure transferred may also contain data or +parameters associated with the security protocol commands. + +The security data is protocol specific and is not defined by the NVMe +specification. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_self_test_log.2 b/doc/man/nvme_self_test_log.2 new file mode 100644 index 0000000..72431c2 --- /dev/null +++ b/doc/man/nvme_self_test_log.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "struct nvme_self_test_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_self_test_log \- Device Self-test (Log Identifier 06h) +.SH SYNOPSIS +struct nvme_self_test_log { +.br +.BI " __u8 current_operation;" +.br +.BI " __u8 completion;" +.br +.BI " __u8 rsvd[2];" +.br +.BI " struct nvme_st_result result[NVME_LOG_ST_MAX_RESULTS];" +.br +.BI " +}; +.br + +.SH Members +.IP "current_operation" 12 +Current Device Self-Test Operation: indicates the status +of the current device self-test operation. If a device +self-test operation is in process (i.e., this field is set +to #NVME_ST_CURR_OP_SHORT or #NVME_ST_CURR_OP_EXTENDED), +then the controller shall not set this field to +#NVME_ST_CURR_OP_NOT_RUNNING until a new Self-test Result +Data Structure is created (i.e., if a device self-test +operation completes or is aborted, then the controller +shall create a Self-test Result Data Structure prior to +setting this field to #NVME_ST_CURR_OP_NOT_RUNNING). +See \fIenum nvme_st_curr_op\fP. +.IP "completion" 12 +Current Device Self-Test Completion: indicates the percentage +of the device self-test operation that is complete (e.g., +a value of 25 indicates that 25% of the device self-test +operation is complete and 75% remains to be tested). +If the \fIcurrent_operation\fP field is cleared to +#NVME_ST_CURR_OP_NOT_RUNNING (indicating there is no device +self-test operation in progress), then this field is ignored. +.IP "rsvd" 12 +Reserved +.IP "result" 12 +Self-test Result Data Structures, see \fIstruct nvme_st_result\fP. diff --git a/doc/man/nvme_set_feature_event.2 b/doc/man/nvme_set_feature_event.2 new file mode 100644 index 0000000..e29c550 --- /dev/null +++ b/doc/man/nvme_set_feature_event.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_set_feature_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_set_feature_event \- Set Feature Event Data +.SH SYNOPSIS +struct nvme_set_feature_event { +.br +.BI " __le32 layout;" +.br +.BI " __le32 cdw_mem[0];" +.br +.BI " +}; +.br + +.SH Members +.IP "layout" 12 +Set Feature Event Layout +.IP "cdw_mem" 12 +Command Dwords Memory buffer diff --git a/doc/man/nvme_set_features.2 b/doc/man/nvme_set_features.2 new file mode 100644 index 0000000..8e337e7 --- /dev/null +++ b/doc/man/nvme_set_features.2 @@ -0,0 +1,12 @@ +.TH "nvme_set_features" 9 "nvme_set_features" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features \- Set a feature attribute +.SH SYNOPSIS +.B "int" nvme_set_features +.BI "(struct nvme_set_features_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_set_features_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_arbitration.2 b/doc/man/nvme_set_features_arbitration.2 new file mode 100644 index 0000000..932b501 --- /dev/null +++ b/doc/man/nvme_set_features_arbitration.2 @@ -0,0 +1,30 @@ +.TH "nvme_set_features_arbitration" 9 "nvme_set_features_arbitration" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_arbitration \- Set arbitration features +.SH SYNOPSIS +.B "int" nvme_set_features_arbitration +.BI "(int fd " "," +.BI "__u8 ab " "," +.BI "__u8 lpw " "," +.BI "__u8 mpw " "," +.BI "__u8 hpw " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "ab" 12 +Arbitration Burst +.IP "lpw" 12 +Low Priority Weight +.IP "mpw" 12 +Medium Priority Weight +.IP "hpw" 12 +High Priority Weight +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_async_event.2 b/doc/man/nvme_set_features_async_event.2 new file mode 100644 index 0000000..fcf4d75 --- /dev/null +++ b/doc/man/nvme_set_features_async_event.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_async_event" 9 "nvme_set_features_async_event" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_async_event \- Set asynchronous event feature +.SH SYNOPSIS +.B "int" nvme_set_features_async_event +.BI "(int fd " "," +.BI "__u32 events " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "events" 12 +Events to enable +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_auto_pst.2 b/doc/man/nvme_set_features_auto_pst.2 new file mode 100644 index 0000000..a88d7b8 --- /dev/null +++ b/doc/man/nvme_set_features_auto_pst.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_auto_pst" 9 "nvme_set_features_auto_pst" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_auto_pst \- Set autonomous power state feature +.SH SYNOPSIS +.B "int" nvme_set_features_auto_pst +.BI "(int fd " "," +.BI "bool apste " "," +.BI "bool save " "," +.BI "struct nvme_feat_auto_pst *apst " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "apste" 12 +Autonomous Power State Transition Enable +.IP "save" 12 +Save value across power states +.IP "apst" 12 +Autonomous Power State Transition +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_data.2 b/doc/man/nvme_set_features_data.2 new file mode 100644 index 0000000..ec7e399 --- /dev/null +++ b/doc/man/nvme_set_features_data.2 @@ -0,0 +1,33 @@ +.TH "nvme_set_features_data" 9 "nvme_set_features_data" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_data \- Helper function for @nvme_set_features() +.SH SYNOPSIS +.B "int" nvme_set_features_data +.BI "(int fd " "," +.BI "__u8 fid " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw11 " "," +.BI "bool save " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "fid" 12 +Feature identifier +.IP "nsid" 12 +Namespace ID, if applicable +.IP "cdw11" 12 +Value to set the feature to +.IP "save" 12 +Save value across power states +.IP "data_len" 12 +Length of feature data, if applicable, in bytes +.IP "data" 12 +User address of feature data, if applicable +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_endurance_evt_cfg.2 b/doc/man/nvme_set_features_endurance_evt_cfg.2 new file mode 100644 index 0000000..7047b7c --- /dev/null +++ b/doc/man/nvme_set_features_endurance_evt_cfg.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_endurance_evt_cfg" 9 "nvme_set_features_endurance_evt_cfg" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_endurance_evt_cfg \- Set endurance event config feature +.SH SYNOPSIS +.B "int" nvme_set_features_endurance_evt_cfg +.BI "(int fd " "," +.BI "__u16 endgid " "," +.BI "__u8 egwarn " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "endgid" 12 +Endurance Group Identifier +.IP "egwarn" 12 +Flags to enable warning, see \fIenum nvme_eg_critical_warning_flags\fP +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_err_recovery.2 b/doc/man/nvme_set_features_err_recovery.2 new file mode 100644 index 0000000..c91df19 --- /dev/null +++ b/doc/man/nvme_set_features_err_recovery.2 @@ -0,0 +1,27 @@ +.TH "nvme_set_features_err_recovery" 9 "nvme_set_features_err_recovery" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_err_recovery \- Set error recovery feature +.SH SYNOPSIS +.B "int" nvme_set_features_err_recovery +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u16 tler " "," +.BI "bool dulbe " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "tler" 12 +Time-limited error recovery value +.IP "dulbe" 12 +Deallocated or Unwritten Logical Block Error Enable +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_hctm.2 b/doc/man/nvme_set_features_hctm.2 new file mode 100644 index 0000000..811da64 --- /dev/null +++ b/doc/man/nvme_set_features_hctm.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_hctm" 9 "nvme_set_features_hctm" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_hctm \- Set thermal management feature +.SH SYNOPSIS +.B "int" nvme_set_features_hctm +.BI "(int fd " "," +.BI "__u16 tmt2 " "," +.BI "__u16 tmt1 " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "tmt2" 12 +Thermal Management Temperature 2 +.IP "tmt1" 12 +Thermal Management Temperature 1 +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_host_behavior.2 b/doc/man/nvme_set_features_host_behavior.2 new file mode 100644 index 0000000..3869951 --- /dev/null +++ b/doc/man/nvme_set_features_host_behavior.2 @@ -0,0 +1,18 @@ +.TH "nvme_set_features_host_behavior" 9 "nvme_set_features_host_behavior" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_host_behavior \- Set host behavior feature +.SH SYNOPSIS +.B "int" nvme_set_features_host_behavior +.BI "(int fd " "," +.BI "bool save " "," +.BI "struct nvme_feat_host_behavior *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "save" 12 +Save value across power states +.IP "data" 12 +Pointer to structure nvme_feat_host_behavior +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_host_id.2 b/doc/man/nvme_set_features_host_id.2 new file mode 100644 index 0000000..971b72b --- /dev/null +++ b/doc/man/nvme_set_features_host_id.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_host_id" 9 "nvme_set_features_host_id" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_host_id \- Set enable extended host identifiers feature +.SH SYNOPSIS +.B "int" nvme_set_features_host_id +.BI "(int fd " "," +.BI "bool exhid " "," +.BI "bool save " "," +.BI "__u8 *hostid " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "exhid" 12 +Enable Extended Host Identifier +.IP "save" 12 +Save value across power states +.IP "hostid" 12 +Host ID to set +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_irq_coalesce.2 b/doc/man/nvme_set_features_irq_coalesce.2 new file mode 100644 index 0000000..3841853 --- /dev/null +++ b/doc/man/nvme_set_features_irq_coalesce.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_irq_coalesce" 9 "nvme_set_features_irq_coalesce" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_irq_coalesce \- Set IRQ coalesce feature +.SH SYNOPSIS +.B "int" nvme_set_features_irq_coalesce +.BI "(int fd " "," +.BI "__u8 thr " "," +.BI "__u8 time " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "thr" 12 +Aggregation Threshold +.IP "time" 12 +Aggregation Time +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_irq_config.2 b/doc/man/nvme_set_features_irq_config.2 new file mode 100644 index 0000000..a16f51c --- /dev/null +++ b/doc/man/nvme_set_features_irq_config.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_irq_config" 9 "nvme_set_features_irq_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_irq_config \- Set IRQ config feature +.SH SYNOPSIS +.B "int" nvme_set_features_irq_config +.BI "(int fd " "," +.BI "__u16 iv " "," +.BI "bool cd " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "iv" 12 +Interrupt Vector +.IP "cd" 12 +Coalescing Disable +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_lba_range.2 b/doc/man/nvme_set_features_lba_range.2 new file mode 100644 index 0000000..ab637ca --- /dev/null +++ b/doc/man/nvme_set_features_lba_range.2 @@ -0,0 +1,27 @@ +.TH "nvme_set_features_lba_range" 9 "nvme_set_features_lba_range" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_lba_range \- Set LBA range feature +.SH SYNOPSIS +.B "int" nvme_set_features_lba_range +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u32 nr_ranges " "," +.BI "bool save " "," +.BI "struct nvme_lba_range_type *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "nr_ranges" 12 +Number of ranges in \fIdata\fP +.IP "save" 12 +Save value across power states +.IP "data" 12 +User address of feature data +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_lba_sts_interval.2 b/doc/man/nvme_set_features_lba_sts_interval.2 new file mode 100644 index 0000000..3391c6e --- /dev/null +++ b/doc/man/nvme_set_features_lba_sts_interval.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_lba_sts_interval" 9 "nvme_set_features_lba_sts_interval" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_lba_sts_interval \- Set LBA status information feature +.SH SYNOPSIS +.B "int" nvme_set_features_lba_sts_interval +.BI "(int fd " "," +.BI "__u16 lsiri " "," +.BI "__u16 lsipi " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "lsiri" 12 +LBA Status Information Report Interval +.IP "lsipi" 12 +LBA Status Information Poll Interval +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_nopsc.2 b/doc/man/nvme_set_features_nopsc.2 new file mode 100644 index 0000000..21eddf1 --- /dev/null +++ b/doc/man/nvme_set_features_nopsc.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_nopsc" 9 "nvme_set_features_nopsc" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_nopsc \- Set non-operational power state feature +.SH SYNOPSIS +.B "int" nvme_set_features_nopsc +.BI "(int fd " "," +.BI "bool noppme " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "noppme" 12 +Non-Operational Power State Permissive Mode Enable +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_plm_config.2 b/doc/man/nvme_set_features_plm_config.2 new file mode 100644 index 0000000..dec33b5 --- /dev/null +++ b/doc/man/nvme_set_features_plm_config.2 @@ -0,0 +1,27 @@ +.TH "nvme_set_features_plm_config" 9 "nvme_set_features_plm_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_plm_config \- Set predictable latency feature +.SH SYNOPSIS +.B "int" nvme_set_features_plm_config +.BI "(int fd " "," +.BI "bool enable " "," +.BI "__u16 nvmsetid " "," +.BI "bool save " "," +.BI "struct nvme_plm_config *data " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "enable" 12 +Predictable Latency Enable +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "save" 12 +Save value across power states +.IP "data" 12 +Pointer to structure nvme_plm_config +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_plm_window.2 b/doc/man/nvme_set_features_plm_window.2 new file mode 100644 index 0000000..39a112e --- /dev/null +++ b/doc/man/nvme_set_features_plm_window.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_plm_window" 9 "nvme_set_features_plm_window" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_plm_window \- Set window select feature +.SH SYNOPSIS +.B "int" nvme_set_features_plm_window +.BI "(int fd " "," +.BI "enum nvme_feat_plm_window_select sel " "," +.BI "__u16 nvmsetid " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "sel" 12 +Window Select +.IP "nvmsetid" 12 +NVM Set Identifier +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_power_mgmt.2 b/doc/man/nvme_set_features_power_mgmt.2 new file mode 100644 index 0000000..6a67b4b --- /dev/null +++ b/doc/man/nvme_set_features_power_mgmt.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_power_mgmt" 9 "nvme_set_features_power_mgmt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_power_mgmt \- Set power management feature +.SH SYNOPSIS +.B "int" nvme_set_features_power_mgmt +.BI "(int fd " "," +.BI "__u8 ps " "," +.BI "__u8 wh " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "ps" 12 +Power State +.IP "wh" 12 +Workload Hint +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_resv_mask.2 b/doc/man/nvme_set_features_resv_mask.2 new file mode 100644 index 0000000..0cb6559 --- /dev/null +++ b/doc/man/nvme_set_features_resv_mask.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_resv_mask" 9 "nvme_set_features_resv_mask" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_resv_mask \- Set reservation notification mask feature +.SH SYNOPSIS +.B "int" nvme_set_features_resv_mask +.BI "(int fd " "," +.BI "__u32 mask " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "mask" 12 +Reservation Notification Mask Field +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_resv_persist.2 b/doc/man/nvme_set_features_resv_persist.2 new file mode 100644 index 0000000..1561187 --- /dev/null +++ b/doc/man/nvme_set_features_resv_persist.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_resv_persist" 9 "nvme_set_features_resv_persist" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_resv_persist \- Set persist through power loss feature +.SH SYNOPSIS +.B "int" nvme_set_features_resv_persist +.BI "(int fd " "," +.BI "bool ptpl " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "ptpl" 12 +Persist Through Power Loss +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_rrl.2 b/doc/man/nvme_set_features_rrl.2 new file mode 100644 index 0000000..1b4f212 --- /dev/null +++ b/doc/man/nvme_set_features_rrl.2 @@ -0,0 +1,24 @@ +.TH "nvme_set_features_rrl" 9 "nvme_set_features_rrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_rrl \- Set read recovery level feature +.SH SYNOPSIS +.B "int" nvme_set_features_rrl +.BI "(int fd " "," +.BI "__u8 rrl " "," +.BI "__u16 nvmsetid " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "rrl" 12 +Read recovery level setting +.IP "nvmsetid" 12 +NVM set id +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_sanitize.2 b/doc/man/nvme_set_features_sanitize.2 new file mode 100644 index 0000000..4b8c042 --- /dev/null +++ b/doc/man/nvme_set_features_sanitize.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_sanitize" 9 "nvme_set_features_sanitize" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_sanitize \- Set sanitize feature +.SH SYNOPSIS +.B "int" nvme_set_features_sanitize +.BI "(int fd " "," +.BI "bool nodrm " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nodrm" 12 +No-Deallocate Response Mode +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_simple.2 b/doc/man/nvme_set_features_simple.2 new file mode 100644 index 0000000..b17c500 --- /dev/null +++ b/doc/man/nvme_set_features_simple.2 @@ -0,0 +1,27 @@ +.TH "nvme_set_features_simple" 9 "nvme_set_features_simple" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_simple \- Helper function for @nvme_set_features() +.SH SYNOPSIS +.B "int" nvme_set_features_simple +.BI "(int fd " "," +.BI "__u8 fid " "," +.BI "__u32 nsid " "," +.BI "__u32 cdw11 " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "fid" 12 +Feature identifier +.IP "nsid" 12 +Namespace ID, if applicable +.IP "cdw11" 12 +Value to set the feature to +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_sw_progress.2 b/doc/man/nvme_set_features_sw_progress.2 new file mode 100644 index 0000000..642fb20 --- /dev/null +++ b/doc/man/nvme_set_features_sw_progress.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_sw_progress" 9 "nvme_set_features_sw_progress" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_sw_progress \- Set pre-boot software load count feature +.SH SYNOPSIS +.B "int" nvme_set_features_sw_progress +.BI "(int fd " "," +.BI "__u8 pbslc " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "pbslc" 12 +Pre-boot Software Load Count +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_temp_thresh.2 b/doc/man/nvme_set_features_temp_thresh.2 new file mode 100644 index 0000000..8df4638 --- /dev/null +++ b/doc/man/nvme_set_features_temp_thresh.2 @@ -0,0 +1,27 @@ +.TH "nvme_set_features_temp_thresh" 9 "nvme_set_features_temp_thresh" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_temp_thresh \- Set temperature threshold feature +.SH SYNOPSIS +.B "int" nvme_set_features_temp_thresh +.BI "(int fd " "," +.BI "__u16 tmpth " "," +.BI "__u8 tmpsel " "," +.BI "enum nvme_feat_tmpthresh_thsel thsel " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "tmpth" 12 +Temperature Threshold +.IP "tmpsel" 12 +Threshold Temperature Select +.IP "thsel" 12 +Threshold Type Select +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_timestamp.2 b/doc/man/nvme_set_features_timestamp.2 new file mode 100644 index 0000000..5ada471 --- /dev/null +++ b/doc/man/nvme_set_features_timestamp.2 @@ -0,0 +1,18 @@ +.TH "nvme_set_features_timestamp" 9 "nvme_set_features_timestamp" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_timestamp \- Set timestamp feature +.SH SYNOPSIS +.B "int" nvme_set_features_timestamp +.BI "(int fd " "," +.BI "bool save " "," +.BI "__u64 timestamp " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "save" 12 +Save value across power states +.IP "timestamp" 12 +The current timestamp value to assign to this feature +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_volatile_wc.2 b/doc/man/nvme_set_features_volatile_wc.2 new file mode 100644 index 0000000..88658cb --- /dev/null +++ b/doc/man/nvme_set_features_volatile_wc.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_volatile_wc" 9 "nvme_set_features_volatile_wc" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_volatile_wc \- Set volatile write cache feature +.SH SYNOPSIS +.B "int" nvme_set_features_volatile_wc +.BI "(int fd " "," +.BI "bool wce " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "wce" 12 +Write cache enable +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_write_atomic.2 b/doc/man/nvme_set_features_write_atomic.2 new file mode 100644 index 0000000..94a9208 --- /dev/null +++ b/doc/man/nvme_set_features_write_atomic.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_write_atomic" 9 "nvme_set_features_write_atomic" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_write_atomic \- Set write atomic feature +.SH SYNOPSIS +.B "int" nvme_set_features_write_atomic +.BI "(int fd " "," +.BI "bool dn " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "dn" 12 +Disable Normal +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_features_write_protect.2 b/doc/man/nvme_set_features_write_protect.2 new file mode 100644 index 0000000..b8af3f8 --- /dev/null +++ b/doc/man/nvme_set_features_write_protect.2 @@ -0,0 +1,21 @@ +.TH "nvme_set_features_write_protect" 9 "nvme_set_features_write_protect" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_features_write_protect \- Set write protect feature +.SH SYNOPSIS +.B "int" nvme_set_features_write_protect +.BI "(int fd " "," +.BI "enum nvme_feat_nswpcfg_state state " "," +.BI "bool save " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "state" 12 +Write Protection State +.IP "save" 12 +Save value across power states +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_set_property.2 b/doc/man/nvme_set_property.2 new file mode 100644 index 0000000..4ce4d1f --- /dev/null +++ b/doc/man/nvme_set_property.2 @@ -0,0 +1,15 @@ +.TH "nvme_set_property" 9 "nvme_set_property" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_set_property \- Set controller property +.SH SYNOPSIS +.B "int" nvme_set_property +.BI "(struct nvme_set_property_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_set_property_args\fP argument structure +.SH "DESCRIPTION" +This is an NVMe-over-Fabrics specific command, not applicable to PCIe. These +properties align to the PCI MMIO controller registers. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_smart_crit.2 b/doc/man/nvme_smart_crit.2 new file mode 100644 index 0000000..b9a1c55 --- /dev/null +++ b/doc/man/nvme_smart_crit.2 @@ -0,0 +1,54 @@ +.TH "libnvme" 9 "enum nvme_smart_crit" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_smart_crit \- Critical Warning +.SH SYNOPSIS +enum nvme_smart_crit { +.br +.BI " NVME_SMART_CRIT_SPARE" +, +.br +.br +.BI " NVME_SMART_CRIT_TEMPERATURE" +, +.br +.br +.BI " NVME_SMART_CRIT_DEGRADED" +, +.br +.br +.BI " NVME_SMART_CRIT_MEDIA" +, +.br +.br +.BI " NVME_SMART_CRIT_VOLATILE_MEMORY" +, +.br +.br +.BI " NVME_SMART_CRIT_PMR_RO" + +}; +.SH Constants +.IP "NVME_SMART_CRIT_SPARE" 12 +If set, then the available spare capacity has fallen +below the threshold. +.IP "NVME_SMART_CRIT_TEMPERATURE" 12 +If set, then a temperature is either greater +than or equal to an over temperature threshold; or +less than or equal to an under temperature threshold. +.IP "NVME_SMART_CRIT_DEGRADED" 12 +If set, then the NVM subsystem reliability has +been degraded due to significant media related errors +or any internal error that degrades NVM subsystem +reliability. +.IP "NVME_SMART_CRIT_MEDIA" 12 +If set, then all of the media has been placed in read +only mode. The controller shall not set this bit if +the read-only condition on the media is a result of +a change in the write protection state of a namespace. +.IP "NVME_SMART_CRIT_VOLATILE_MEMORY" 12 +If set, then the volatile memory backup +device has failed. This field is only valid if the +controller has a volatile memory backup solution. +.IP "NVME_SMART_CRIT_PMR_RO" 12 +If set, then the Persistent Memory Region has become +read-only or unreliable. diff --git a/doc/man/nvme_smart_egcw.2 b/doc/man/nvme_smart_egcw.2 new file mode 100644 index 0000000..83716ff --- /dev/null +++ b/doc/man/nvme_smart_egcw.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "enum nvme_smart_egcw" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_smart_egcw \- Endurance Group Critical Warning Summary +.SH SYNOPSIS +enum nvme_smart_egcw { +.br +.BI " NVME_SMART_EGCW_SPARE" +, +.br +.br +.BI " NVME_SMART_EGCW_DEGRADED" +, +.br +.br +.BI " NVME_SMART_EGCW_RO" + +}; +.SH Constants +.IP "NVME_SMART_EGCW_SPARE" 12 +If set, then the available spare capacity of one or +more Endurance Groups has fallen below the threshold. +.IP "NVME_SMART_EGCW_DEGRADED" 12 +If set, then the reliability of one or more +Endurance Groups has been degraded due to significant +media related errors or any internal error that +degrades NVM subsystem reliability. +.IP "NVME_SMART_EGCW_RO" 12 +If set, then the namespaces in one or more Endurance +Groups have been placed in read only mode not as +a result of a change in the write protection state +of a namespace. diff --git a/doc/man/nvme_smart_log.2 b/doc/man/nvme_smart_log.2 new file mode 100644 index 0000000..fe4c65f --- /dev/null +++ b/doc/man/nvme_smart_log.2 @@ -0,0 +1,235 @@ +.TH "libnvme" 9 "struct nvme_smart_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_smart_log \- SMART / Health Information Log (Log Identifier 02h) +.SH SYNOPSIS +struct nvme_smart_log { +.br +.BI " __u8 critical_warning;" +.br +.BI " __u8 temperature[2];" +.br +.BI " __u8 avail_spare;" +.br +.BI " __u8 spare_thresh;" +.br +.BI " __u8 percent_used;" +.br +.BI " __u8 endu_grp_crit_warn_sumry;" +.br +.BI " __u8 rsvd7[25];" +.br +.BI " __u8 data_units_read[16];" +.br +.BI " __u8 data_units_written[16];" +.br +.BI " __u8 host_reads[16];" +.br +.BI " __u8 host_writes[16];" +.br +.BI " __u8 ctrl_busy_time[16];" +.br +.BI " __u8 power_cycles[16];" +.br +.BI " __u8 power_on_hours[16];" +.br +.BI " __u8 unsafe_shutdowns[16];" +.br +.BI " __u8 media_errors[16];" +.br +.BI " __u8 num_err_log_entries[16];" +.br +.BI " __le32 warning_temp_time;" +.br +.BI " __le32 critical_comp_time;" +.br +.BI " __le16 temp_sensor[8];" +.br +.BI " __le32 thm_temp1_trans_count;" +.br +.BI " __le32 thm_temp2_trans_count;" +.br +.BI " __le32 thm_temp1_total_time;" +.br +.BI " __le32 thm_temp2_total_time;" +.br +.BI " __u8 rsvd232[280];" +.br +.BI " +}; +.br + +.SH Members +.IP "critical_warning" 12 +This field indicates critical warnings for the state +of the controller. Critical warnings may result in an +asynchronous event notification to the host. Bits in +this field represent the current associated state and +are not persistent (see \fIenum nvme_smart_crit\fP). +.IP "temperature" 12 +Composite Temperature: Contains a value corresponding +to a temperature in Kelvins that represents the current +composite temperature of the controller and namespace(s) +associated with that controller. The manner in which +this value is computed is implementation specific and +may not represent the actual temperature of any physical +point in the NVM subsystem. Warning and critical +overheating composite temperature threshold values are +reported by the WCTEMP and CCTEMP fields in the Identify +Controller data structure. +.IP "avail_spare" 12 +Available Spare: Contains a normalized percentage (0% +to 100%) of the remaining spare capacity available. +.IP "spare_thresh" 12 +Available Spare Threshold: When the Available Spare +falls below the threshold indicated in this field, an +asynchronous event completion may occur. The value is +indicated as a normalized percentage (0% to 100%). +The values 101 to 255 are reserved. +.IP "percent_used" 12 +Percentage Used: Contains a vendor specific estimate +of the percentage of NVM subsystem life used based on +the actual usage and the manufacturer's prediction of +NVM life. A value of 100 indicates that the estimated +endurance of the NVM in the NVM subsystem has been +consumed, but may not indicate an NVM subsystem failure. +The value is allowed to exceed 100. Percentages greater +than 254 shall be represented as 255. This value shall +be updated once per power-on hour (when the controller +is not in a sleep state). +.IP "endu_grp_crit_warn_sumry" 12 +Endurance Group Critical Warning Summary: This field +indicates critical warnings for the state of Endurance +Groups. Bits in this field represent the current associated +state and are not persistent (see \fIenum nvme_smart_egcw\fP). +.IP "rsvd7" 12 +Reserved +.IP "data_units_read" 12 +Data Units Read: Contains the number of 512 byte data +units the host has read from the controller; this value +does not include metadata. This value is reported in +thousands (i.e., a value of 1 corresponds to 1000 +units of 512 bytes read) and is rounded up (e.g., one +indicates the that number of 512 byte data units read +is from 1 to 1000, three indicates that the number of +512 byte data units read is from 2001 to 3000). When +the LBA size is a value other than 512 bytes, the +controller shall convert the amount of data read to +512 byte units. For the NVM command set, logical blocks +read as part of Compare, Read, and Verify operations +shall be included in this value. A value of 0h in +this field indicates that the number of Data Units Read +is not reported. +.IP "data_units_written" 12 +Data Units Written: Contains the number of 512 byte +data units the host has written to the controller; +this value does not include metadata. This value is +reported in thousands (i.e., a value of 1 corresponds +to 1000 units of 512 bytes written) and is rounded up +(e.g., one indicates that the number of 512 byte data +units written is from 1 to 1,000, three indicates that +the number of 512 byte data units written is from 2001 +to 3000). When the LBA size is a value other than 512 +bytes, the controller shall convert the amount of data +written to 512 byte units. For the NVM command set, +logical blocks written as part of Write operations shall +be included in this value. Write Uncorrectable commands +and Write Zeroes commands shall not impact this value. +A value of 0h in this field indicates that the number +of Data Units Written is not reported. +.IP "host_reads" 12 +Host Read Commands: Contains the number of read commands +completed by the controller. For the NVM command set, +this value is the sum of the number of Compare commands +and the number of Read commands. +.IP "host_writes" 12 +Host Write Commands: Contains the number of write +commands completed by the controller. For the NVM +command set, this is the number of Write commands. +.IP "ctrl_busy_time" 12 +Controller Busy Time: Contains the amount of time the +controller is busy with I/O commands. The controller +is busy when there is a command outstanding to an I/O +Queue (specifically, a command was issued via an I/O +Submission Queue Tail doorbell write and the corresponding +completion queue entry has not been posted yet to the +associated I/O Completion Queue). This value is +reported in minutes. +.IP "power_cycles" 12 +Power Cycles: Contains the number of power cycles. +.IP "power_on_hours" 12 +Power On Hours: Contains the number of power-on hours. +This may not include time that the controller was +powered and in a non-operational power state. +.IP "unsafe_shutdowns" 12 +Unsafe Shutdowns: Contains the number of unsafe +shutdowns. This count is incremented when a Shutdown +Notification (CC.SHN) is not received prior to loss of power. +.IP "media_errors" 12 +Media and Data Integrity Errors: Contains the number +of occurrences where the controller detected an +unrecovered data integrity error. Errors such as +uncorrectable ECC, CRC checksum failure, or LBA tag +mismatch are included in this field. Errors introduced +as a result of a Write Uncorrectable command may or +may not be included in this field. +.IP "num_err_log_entries" 12 +Number of Error Information Log Entries: Contains the +number of Error Information log entries over the life +of the controller. +.IP "warning_temp_time" 12 +Warning Composite Temperature Time: Contains the amount +of time in minutes that the controller is operational +and the Composite Temperature is greater than or equal +to the Warning Composite Temperature Threshold (WCTEMP) +field and less than the Critical Composite Temperature +Threshold (CCTEMP) field in the Identify Controller +data structure. If the value of the WCTEMP or CCTEMP +field is 0h, then this field is always cleared to 0h +regardless of the Composite Temperature value. +.IP "critical_comp_time" 12 +Critical Composite Temperature Time: Contains the amount +of time in minutes that the controller is operational +and the Composite Temperature is greater than or equal +to the Critical Composite Temperature Threshold (CCTEMP) +field in the Identify Controller data structure. If +the value of the CCTEMP field is 0h, then this field +is always cleared to 0h regardless of the Composite +Temperature value. +.IP "temp_sensor" 12 +Temperature Sensor 1-8: Contains the current temperature +in degrees Kelvin reported by temperature sensors 1-8. +The physical point in the NVM subsystem whose temperature +is reported by the temperature sensor and the temperature +accuracy is implementation specific. An implementation +that does not implement the temperature sensor reports +a value of 0h. +.IP "thm_temp1_trans_count" 12 +Thermal Management Temperature 1 Transition Count: +Contains the number of times the controller transitioned +to lower power active power states or performed vendor +specific thermal management actions while minimizing +the impact on performance in order to attempt to reduce +the Composite Temperature because of the host controlled +thermal management feature (i.e., the Composite +Temperature rose above the Thermal Management +Temperature 1). This counter shall not wrap once the +value FFFFFFFFh is reached. A value of 0h, indicates +that this transition has never occurred or this field +is not implemented. +.IP "thm_temp2_trans_count" 12 +Thermal Management Temperature 2 Transition Count +.IP "thm_temp1_total_time" 12 +Total Time For Thermal Management Temperature 1: +Contains the number of seconds that the controller +had transitioned to lower power active power states or +performed vendor specific thermal management actions +while minimizing the impact on performance in order to +attempt to reduce the Composite Temperature because of +the host controlled thermal management feature. This +counter shall not wrap once the value FFFFFFFFh is +reached. A value of 0h, indicates that this transition +has never occurred or this field is not implemented. +.IP "thm_temp2_total_time" 12 +Total Time For Thermal Management Temperature 2 +.IP "rsvd232" 12 +Reserved diff --git a/doc/man/nvme_st_code.2 b/doc/man/nvme_st_code.2 new file mode 100644 index 0000000..625b0bf --- /dev/null +++ b/doc/man/nvme_st_code.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "enum nvme_st_code" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_st_code \- Self-test Code value +.SH SYNOPSIS +enum nvme_st_code { +.br +.BI " NVME_ST_CODE_RESERVED" +, +.br +.br +.BI " NVME_ST_CODE_SHORT" +, +.br +.br +.BI " NVME_ST_CODE_EXTENDED" +, +.br +.br +.BI " NVME_ST_CODE_VS" +, +.br +.br +.BI " NVME_ST_CODE_ABORT" +, +.br +.br +.BI " NVME_ST_CODE_SHIFT" + +}; +.SH Constants +.IP "NVME_ST_CODE_RESERVED" 12 +Reserved. +.IP "NVME_ST_CODE_SHORT" 12 +Short device self-test operation. +.IP "NVME_ST_CODE_EXTENDED" 12 +Extended device self-test operation. +.IP "NVME_ST_CODE_VS" 12 +Vendor specific. +.IP "NVME_ST_CODE_ABORT" 12 +Abort device self-test operation. +.IP "NVME_ST_CODE_SHIFT" 12 +Shift amount to get the code value from the +\fIstruct nvme_st_result\fP.dsts field. diff --git a/doc/man/nvme_st_curr_op.2 b/doc/man/nvme_st_curr_op.2 new file mode 100644 index 0000000..11733ab --- /dev/null +++ b/doc/man/nvme_st_curr_op.2 @@ -0,0 +1,50 @@ +.TH "libnvme" 9 "enum nvme_st_curr_op" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_st_curr_op \- Current Device Self-Test Operation +.SH SYNOPSIS +enum nvme_st_curr_op { +.br +.BI " NVME_ST_CURR_OP_NOT_RUNNING" +, +.br +.br +.BI " NVME_ST_CURR_OP_SHORT" +, +.br +.br +.BI " NVME_ST_CURR_OP_EXTENDED" +, +.br +.br +.BI " NVME_ST_CURR_OP_VS" +, +.br +.br +.BI " NVME_ST_CURR_OP_RESERVED" +, +.br +.br +.BI " NVME_ST_CURR_OP_MASK" +, +.br +.br +.BI " NVME_ST_CURR_OP_CMPL_MASK" + +}; +.SH Constants +.IP "NVME_ST_CURR_OP_NOT_RUNNING" 12 +No device self-test operation in progress. +.IP "NVME_ST_CURR_OP_SHORT" 12 +Short device self-test operation in progress. +.IP "NVME_ST_CURR_OP_EXTENDED" 12 +Extended device self-test operation in progress. +.IP "NVME_ST_CURR_OP_VS" 12 +Vendor specific. +.IP "NVME_ST_CURR_OP_RESERVED" 12 +Reserved. +.IP "NVME_ST_CURR_OP_MASK" 12 +Mask to get the current operation value from the +\fIstruct nvme_self_test_log\fP.current_operation field. +.IP "NVME_ST_CURR_OP_CMPL_MASK" 12 +Mask to get the current operation completion value +from the \fIstruct nvme_self_test_log\fP.completion field. diff --git a/doc/man/nvme_st_result.2 b/doc/man/nvme_st_result.2 new file mode 100644 index 0000000..bd52e2d --- /dev/null +++ b/doc/man/nvme_st_result.2 @@ -0,0 +1,77 @@ +.TH "libnvme" 9 "struct nvme_st_result" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_st_result \- Self-test Result +.SH SYNOPSIS +struct nvme_st_result { +.br +.BI " __u8 dsts;" +.br +.BI " __u8 seg;" +.br +.BI " __u8 vdi;" +.br +.BI " __u8 rsvd;" +.br +.BI " __le64 poh;" +.br +.BI " __le32 nsid;" +.br +.BI " __le64 flba;" +.br +.BI " __u8 sct;" +.br +.BI " __u8 sc;" +.br +.BI " __u8 vs[2];" +.br +.BI " +}; +.br + +.SH Members +.IP "dsts" 12 +Device Self-test Status: Indicates the device self-test code and the +status of the operation (see \fIenum nvme_status_result\fP and \fIenum nvme_st_code\fP). +.IP "seg" 12 +Segment Number: Iindicates the segment number where the first self-test +failure occurred. If Device Self-test Status (\fIdsts\fP) is not set to +#NVME_ST_RESULT_KNOWN_SEG_FAIL, then this field should be ignored. +.IP "vdi" 12 +Valid Diagnostic Information: Indicates the diagnostic failure +information that is reported. See \fIenum nvme_st_valid_diag_info\fP. +.IP "rsvd" 12 +Reserved +.IP "poh" 12 +Power On Hours (POH): Indicates the number of power-on hours at the +time the device self-test operation was completed or aborted. This +does not include time that the controller was powered and in a low +power state condition. +.IP "nsid" 12 +Namespace Identifier (NSID): Indicates the namespace that the Failing +LBA occurred on. Valid only when the NSID Valid bit +(#NVME_ST_VALID_DIAG_INFO_NSID) is set in the Valid Diagnostic +Information (\fIvdi\fP) field. +.IP "flba" 12 +Failing LBA: indicates the LBA of the logical block that caused the +test to fail. If the device encountered more than one failed logical +block during the test, then this field only indicates one of those +failed logical blocks. Valid only when the NSID Valid bit +(#NVME_ST_VALID_DIAG_INFO_FLBA) is set in the Valid Diagnostic +Information (\fIvdi\fP) field. +.IP "sct" 12 +Status Code Type: This field may contain additional information related +to errors or conditions. Bits 2:0 may contain additional information +relating to errors or conditions that occurred during the device +self-test operation represented in the same format used in the Status +Code Type field of the completion queue entry (refer to \fIenum nvme_status_field\fP). +Valid only when the NSID Valid bit (#NVME_ST_VALID_DIAG_INFO_SCT) is +set in the Valid Diagnostic Information (\fIvdi\fP) field. +.IP "sc" 12 +Status Code: This field may contain additional information relating +to errors or conditions that occurred during the device self-test +operation represented in the same format used in the Status Code field +of the completion queue entry. Valid only when the SCT Valid bit +(#NVME_ST_VALID_DIAG_INFO_SC) is set in the Valid Diagnostic +Information (\fIvdi\fP) field. +.IP "vs" 12 +Vendor Specific. diff --git a/doc/man/nvme_st_valid_diag_info.2 b/doc/man/nvme_st_valid_diag_info.2 new file mode 100644 index 0000000..2267645 --- /dev/null +++ b/doc/man/nvme_st_valid_diag_info.2 @@ -0,0 +1,34 @@ +.TH "libnvme" 9 "enum nvme_st_valid_diag_info" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_st_valid_diag_info \- Valid Diagnostic Information +.SH SYNOPSIS +enum nvme_st_valid_diag_info { +.br +.BI " NVME_ST_VALID_DIAG_INFO_NSID" +, +.br +.br +.BI " NVME_ST_VALID_DIAG_INFO_FLBA" +, +.br +.br +.BI " NVME_ST_VALID_DIAG_INFO_SCT" +, +.br +.br +.BI " NVME_ST_VALID_DIAG_INFO_SC" + +}; +.SH Constants +.IP "NVME_ST_VALID_DIAG_INFO_NSID" 12 +NSID Valid: if set, then the contents of +the Namespace Identifier field are valid. +.IP "NVME_ST_VALID_DIAG_INFO_FLBA" 12 +FLBA Valid: if set, then the contents of +the Failing LBA field are valid. +.IP "NVME_ST_VALID_DIAG_INFO_SCT" 12 +SCT Valid: if set, then the contents of +the Status Code Type field are valid. +.IP "NVME_ST_VALID_DIAG_INFO_SC" 12 +SC Valid: if set, then the contents of +the Status Code field are valid. diff --git a/doc/man/nvme_status_code.2 b/doc/man/nvme_status_code.2 new file mode 100644 index 0000000..34a4406 --- /dev/null +++ b/doc/man/nvme_status_code.2 @@ -0,0 +1,12 @@ +.TH "nvme_status_code" 9 "nvme_status_code" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_code \- Returns the NVMe Status Code +.SH SYNOPSIS +.B "__u16" nvme_status_code +.BI "(__u16 status_field " ");" +.SH ARGUMENTS +.IP "status_field" 12 +The NVMe Completion Queue Entry's Status Field +See \fIenum nvme_status_field\fP +.SH "RETURN" +status code diff --git a/doc/man/nvme_status_code_type.2 b/doc/man/nvme_status_code_type.2 new file mode 100644 index 0000000..6ba2454 --- /dev/null +++ b/doc/man/nvme_status_code_type.2 @@ -0,0 +1,12 @@ +.TH "nvme_status_code_type" 9 "nvme_status_code_type" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_code_type \- Returns the NVMe Status Code Type +.SH SYNOPSIS +.B "__u16" nvme_status_code_type +.BI "(__u16 status_field " ");" +.SH ARGUMENTS +.IP "status_field" 12 +The NVMe Completion Queue Entry's Status Field +See \fIenum nvme_status_field\fP +.SH "RETURN" +status code type diff --git a/doc/man/nvme_status_equals.2 b/doc/man/nvme_status_equals.2 new file mode 100644 index 0000000..3203ee4 --- /dev/null +++ b/doc/man/nvme_status_equals.2 @@ -0,0 +1,17 @@ +.TH "nvme_status_equals" 9 "nvme_status_equals" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_equals \- helper to check a status against a type and value +.SH SYNOPSIS +.B "__u32" nvme_status_equals +.BI "(int status " "," +.BI "enum nvme_status_type type " "," +.BI "unsigned int value " ");" +.SH ARGUMENTS +.IP "status" 12 +the (non-negative) return value from the NVMe API +.IP "type" 12 +the status type +.IP "value" 12 +the status value +.SH "RETURN" +true if \fIstatus\fP is of the specified type and value diff --git a/doc/man/nvme_status_field.2 b/doc/man/nvme_status_field.2 new file mode 100644 index 0000000..e5df43f --- /dev/null +++ b/doc/man/nvme_status_field.2 @@ -0,0 +1,1158 @@ +.TH "libnvme" 9 "enum nvme_status_field" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_status_field \- Defines all parts of the nvme status field: status code, status code type, and additional flags. +.SH SYNOPSIS +enum nvme_status_field { +.br +.BI " NVME_SCT_GENERIC" +, +.br +.br +.BI " NVME_SCT_CMD_SPECIFIC" +, +.br +.br +.BI " NVME_SCT_MEDIA" +, +.br +.br +.BI " NVME_SCT_PATH" +, +.br +.br +.BI " NVME_SCT_VS" +, +.br +.br +.BI " NVME_SCT_MASK" +, +.br +.br +.BI " NVME_SCT_SHIFT" +, +.br +.br +.BI " NVME_SC_MASK" +, +.br +.br +.BI " NVME_SC_SHIFT" +, +.br +.br +.BI " NVME_SC_SUCCESS" +, +.br +.br +.BI " NVME_SC_INVALID_OPCODE" +, +.br +.br +.BI " NVME_SC_INVALID_FIELD" +, +.br +.br +.BI " NVME_SC_CMDID_CONFLICT" +, +.br +.br +.BI " NVME_SC_DATA_XFER_ERROR" +, +.br +.br +.BI " NVME_SC_POWER_LOSS" +, +.br +.br +.BI " NVME_SC_INTERNAL" +, +.br +.br +.BI " NVME_SC_ABORT_REQ" +, +.br +.br +.BI " NVME_SC_ABORT_QUEUE" +, +.br +.br +.BI " NVME_SC_FUSED_FAIL" +, +.br +.br +.BI " NVME_SC_FUSED_MISSING" +, +.br +.br +.BI " NVME_SC_INVALID_NS" +, +.br +.br +.BI " NVME_SC_CMD_SEQ_ERROR" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_LAST" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_COUNT" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_DATA" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_METADATA" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_TYPE" +, +.br +.br +.BI " NVME_SC_CMB_INVALID_USE" +, +.br +.br +.BI " NVME_SC_PRP_INVALID_OFFSET" +, +.br +.br +.BI " NVME_SC_AWU_EXCEEDED" +, +.br +.br +.BI " NVME_SC_OP_DENIED" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_OFFSET" +, +.br +.br +.BI " NVME_SC_HOSTID_FORMAT" +, +.br +.br +.BI " NVME_SC_KAT_EXPIRED" +, +.br +.br +.BI " NVME_SC_KAT_INVALID" +, +.br +.br +.BI " NVME_SC_CMD_ABORTED_PREMEPT" +, +.br +.br +.BI " NVME_SC_SANITIZE_FAILED" +, +.br +.br +.BI " NVME_SC_SANITIZE_IN_PROGRESS" +, +.br +.br +.BI " NVME_SC_SGL_INVALID_GRANULARITY" +, +.br +.br +.BI " NVME_SC_CMD_IN_CMBQ_NOT_SUPP" +, +.br +.br +.BI " NVME_SC_NS_WRITE_PROTECTED" +, +.br +.br +.BI " NVME_SC_CMD_INTERRUPTED" +, +.br +.br +.BI " NVME_SC_TRAN_TPORT_ERROR" +, +.br +.br +.BI " NVME_SC_PROHIBITED_BY_CMD_AND_FEAT" +, +.br +.br +.BI " NVME_SC_ADMIN_CMD_MEDIA_NOT_READY" +, +.br +.br +.BI " NVME_SC_LBA_RANGE" +, +.br +.br +.BI " NVME_SC_CAP_EXCEEDED" +, +.br +.br +.BI " NVME_SC_NS_NOT_READY" +, +.br +.br +.BI " NVME_SC_RESERVATION_CONFLICT" +, +.br +.br +.BI " NVME_SC_FORMAT_IN_PROGRESS" +, +.br +.br +.BI " NVME_SC_CQ_INVALID" +, +.br +.br +.BI " NVME_SC_QID_INVALID" +, +.br +.br +.BI " NVME_SC_QUEUE_SIZE" +, +.br +.br +.BI " NVME_SC_ABORT_LIMIT" +, +.br +.br +.BI " NVME_SC_ABORT_MISSING" +, +.br +.br +.BI " NVME_SC_ASYNC_LIMIT" +, +.br +.br +.BI " NVME_SC_FIRMWARE_SLOT" +, +.br +.br +.BI " NVME_SC_FIRMWARE_IMAGE" +, +.br +.br +.BI " NVME_SC_INVALID_VECTOR" +, +.br +.br +.BI " NVME_SC_INVALID_LOG_PAGE" +, +.br +.br +.BI " NVME_SC_INVALID_FORMAT" +, +.br +.br +.BI " NVME_SC_FW_NEEDS_CONV_RESET" +, +.br +.br +.BI " NVME_SC_INVALID_QUEUE" +, +.br +.br +.BI " NVME_SC_FEATURE_NOT_SAVEABLE" +, +.br +.br +.BI " NVME_SC_FEATURE_NOT_CHANGEABLE" +, +.br +.br +.BI " NVME_SC_FEATURE_NOT_PER_NS" +, +.br +.br +.BI " NVME_SC_FW_NEEDS_SUBSYS_RESET" +, +.br +.br +.BI " NVME_SC_FW_NEEDS_RESET" +, +.br +.br +.BI " NVME_SC_FW_NEEDS_MAX_TIME" +, +.br +.br +.BI " NVME_SC_FW_ACTIVATE_PROHIBITED" +, +.br +.br +.BI " NVME_SC_OVERLAPPING_RANGE" +, +.br +.br +.BI " NVME_SC_NS_INSUFFICIENT_CAP" +, +.br +.br +.BI " NVME_SC_NS_ID_UNAVAILABLE" +, +.br +.br +.BI " NVME_SC_NS_ALREADY_ATTACHED" +, +.br +.br +.BI " NVME_SC_NS_IS_PRIVATE" +, +.br +.br +.BI " NVME_SC_NS_NOT_ATTACHED" +, +.br +.br +.BI " NVME_SC_THIN_PROV_NOT_SUPP" +, +.br +.br +.BI " NVME_SC_CTRL_LIST_INVALID" +, +.br +.br +.BI " NVME_SC_SELF_TEST_IN_PROGRESS" +, +.br +.br +.BI " NVME_SC_BP_WRITE_PROHIBITED" +, +.br +.br +.BI " NVME_SC_INVALID_CTRL_ID" +, +.br +.br +.BI " NVME_SC_INVALID_SEC_CTRL_STATE" +, +.br +.br +.BI " NVME_SC_INVALID_CTRL_RESOURCES" +, +.br +.br +.BI " NVME_SC_INVALID_RESOURCE_ID" +, +.br +.br +.BI " NVME_SC_PMR_SAN_PROHIBITED" +, +.br +.br +.BI " NVME_SC_ANA_GROUP_ID_INVALID" +, +.br +.br +.BI " NVME_SC_ANA_ATTACH_FAILED" +, +.br +.br +.BI " NVME_SC_INSUFFICIENT_CAP" +, +.br +.br +.BI " NVME_SC_NS_ATTACHMENT_LIMIT_EXCEEDED" +, +.br +.br +.BI " NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED" +, +.br +.br +.BI " NVME_SC_IOCS_NOT_SUPPORTED" +, +.br +.br +.BI " NVME_SC_IOCS_NOT_ENABLED" +, +.br +.br +.BI " NVME_SC_IOCS_COMBINATION_REJECTED" +, +.br +.br +.BI " NVME_SC_INVALID_IOCS" +, +.br +.br +.BI " NVME_SC_ID_UNAVAILABLE" +, +.br +.br +.BI " NVME_SC_INVALID_DISCOVERY_INFO" +, +.br +.br +.BI " NVME_SC_ZONING_DATA_STRUCT_LOCKED" +, +.br +.br +.BI " NVME_SC_ZONING_DATA_STRUCT_NOTFND" +, +.br +.br +.BI " NVME_SC_INSUFFICIENT_DISC_RES" +, +.br +.br +.BI " NVME_SC_REQSTD_FUNCTION_DISABLED" +, +.br +.br +.BI " NVME_SC_ZONEGRP_ORIGINATOR_INVLD" +, +.br +.br +.BI " NVME_SC_BAD_ATTRIBUTES" +, +.br +.br +.BI " NVME_SC_INVALID_PI" +, +.br +.br +.BI " NVME_SC_READ_ONLY" +, +.br +.br +.BI " NVME_SC_CMD_SIZE_LIMIT_EXCEEDED" +, +.br +.br +.BI " NVME_SC_CONNECT_FORMAT" +, +.br +.br +.BI " NVME_SC_CONNECT_CTRL_BUSY" +, +.br +.br +.BI " NVME_SC_CONNECT_INVALID_PARAM" +, +.br +.br +.BI " NVME_SC_CONNECT_RESTART_DISC" +, +.br +.br +.BI " NVME_SC_CONNECT_INVALID_HOST" +, +.br +.br +.BI " NVME_SC_DISCONNECT_INVALID_QTYPE" +, +.br +.br +.BI " NVME_SC_DISCOVERY_RESTART" +, +.br +.br +.BI " NVME_SC_AUTH_REQUIRED" +, +.br +.br +.BI " NVME_SC_ZNS_INVALID_OP_REQUEST" +, +.br +.br +.BI " NVME_SC_ZNS_ZRWA_RESOURCES_UNAVAILABLE" +, +.br +.br +.BI " NVME_SC_ZNS_BOUNDARY_ERROR" +, +.br +.br +.BI " NVME_SC_ZNS_FULL" +, +.br +.br +.BI " NVME_SC_ZNS_READ_ONLY" +, +.br +.br +.BI " NVME_SC_ZNS_OFFLINE" +, +.br +.br +.BI " NVME_SC_ZNS_INVALID_WRITE" +, +.br +.br +.BI " NVME_SC_ZNS_TOO_MANY_ACTIVE" +, +.br +.br +.BI " NVME_SC_ZNS_TOO_MANY_OPENS" +, +.br +.br +.BI " NVME_SC_ZNS_INVAL_TRANSITION" +, +.br +.br +.BI " NVME_SC_WRITE_FAULT" +, +.br +.br +.BI " NVME_SC_READ_ERROR" +, +.br +.br +.BI " NVME_SC_GUARD_CHECK" +, +.br +.br +.BI " NVME_SC_APPTAG_CHECK" +, +.br +.br +.BI " NVME_SC_REFTAG_CHECK" +, +.br +.br +.BI " NVME_SC_COMPARE_FAILED" +, +.br +.br +.BI " NVME_SC_ACCESS_DENIED" +, +.br +.br +.BI " NVME_SC_UNWRITTEN_BLOCK" +, +.br +.br +.BI " NVME_SC_STORAGE_TAG_CHECK" +, +.br +.br +.BI " NVME_SC_ANA_INTERNAL_PATH_ERROR" +, +.br +.br +.BI " NVME_SC_ANA_PERSISTENT_LOSS" +, +.br +.br +.BI " NVME_SC_ANA_INACCESSIBLE" +, +.br +.br +.BI " NVME_SC_ANA_TRANSITION" +, +.br +.br +.BI " NVME_SC_CTRL_PATH_ERROR" +, +.br +.br +.BI " NVME_SC_HOST_PATH_ERROR" +, +.br +.br +.BI " NVME_SC_CMD_ABORTED_BY_HOST" +, +.br +.br +.BI " NVME_SC_CRD" +, +.br +.br +.BI " NVME_SC_MORE" +, +.br +.br +.BI " NVME_SC_DNR" + +}; +.SH Constants +.IP "NVME_SCT_GENERIC" 12 +Generic errors applicable to multiple opcodes +.IP "NVME_SCT_CMD_SPECIFIC" 12 +Errors associated to a specific opcode +.IP "NVME_SCT_MEDIA" 12 +Errors associated with media and data integrity +.IP "NVME_SCT_PATH" 12 +Errors associated with the paths connection +.IP "NVME_SCT_VS" 12 +Vendor specific errors +.IP "NVME_SCT_MASK" 12 +Mask to get the value of the Status Code Type +.IP "NVME_SCT_SHIFT" 12 +Shift value to get the value of the Status +Code Type +.IP "NVME_SC_MASK" 12 +Mask to get the value of the status code. +.IP "NVME_SC_SHIFT" 12 +Shift value to get the value of the status +code. +.IP "NVME_SC_SUCCESS" 12 +Successful Completion: The command +completed without error. +.IP "NVME_SC_INVALID_OPCODE" 12 +Invalid Command Opcode: A reserved coded +value or an unsupported value in the +command opcode field. +.IP "NVME_SC_INVALID_FIELD" 12 +Invalid Field in Command: A reserved +coded value or an unsupported value in a +defined field. +.IP "NVME_SC_CMDID_CONFLICT" 12 +Command ID Conflict: The command +identifier is already in use. +.IP "NVME_SC_DATA_XFER_ERROR" 12 +Data Transfer Error: Transferring the +data or metadata associated with a +command experienced an error. +.IP "NVME_SC_POWER_LOSS" 12 +Commands Aborted due to Power Loss +Notification: Indicates that the command +was aborted due to a power loss +notification. +.IP "NVME_SC_INTERNAL" 12 +Internal Error: The command was not +completed successfully due to an internal error. +.IP "NVME_SC_ABORT_REQ" 12 +Command Abort Requested: The command was +aborted due to an Abort command being +received that specified the Submission +Queue Identifier and Command Identifier +of this command. +.IP "NVME_SC_ABORT_QUEUE" 12 +Command Aborted due to SQ Deletion: The +command was aborted due to a Delete I/O +Submission Queue request received for the +Submission Queue to which the command was +submitted. +.IP "NVME_SC_FUSED_FAIL" 12 +Command Aborted due to Failed Fused Command: +The command was aborted due to the other +command in a fused operation failing. +.IP "NVME_SC_FUSED_MISSING" 12 +Aborted due to Missing Fused Command: The +fused command was aborted due to the +adjacent submission queue entry not +containing a fused command that is the +other command. +.IP "NVME_SC_INVALID_NS" 12 +Invalid Namespace or Format: The +namespace or the format of that namespace +is invalid. +.IP "NVME_SC_CMD_SEQ_ERROR" 12 +Command Sequence Error: The command was +aborted due to a protocol violation in a +multi-command sequence. +.IP "NVME_SC_SGL_INVALID_LAST" 12 +Invalid SGL Segment Descriptor: The +command includes an invalid SGL Last +Segment or SGL Segment descriptor. +.IP "NVME_SC_SGL_INVALID_COUNT" 12 +Invalid Number of SGL Descriptors: There +is an SGL Last Segment descriptor or an +SGL Segment descriptor in a location +other than the last descriptor of a +segment based on the length indicated. +.IP "NVME_SC_SGL_INVALID_DATA" 12 +Data SGL Length Invalid: This may occur +if the length of a Data SGL is too short. +This may occur if the length of a Data +SGL is too long and the controller does +not support SGL transfers longer than the +amount of data to be transferred as +indicated in the SGL Support field of the +Identify Controller data structure. +.IP "NVME_SC_SGL_INVALID_METADATA" 12 +Metadata SGL Length Invalid: This may +occur if the length of a Metadata SGL is +too short. This may occur if the length +of a Metadata SGL is too long and the +controller does not support SGL transfers +longer than the amount of data to be +transferred as indicated in the SGL +Support field of the Identify Controller +data structure. +.IP "NVME_SC_SGL_INVALID_TYPE" 12 +SGL Descriptor Type Invalid: The type of +an SGL Descriptor is a type that is not +supported by the controller. +.IP "NVME_SC_CMB_INVALID_USE" 12 +Invalid Use of Controller Memory Buffer: +The attempted use of the Controller +Memory Buffer is not supported by the +controller. +.IP "NVME_SC_PRP_INVALID_OFFSET" 12 +PRP Offset Invalid: The Offset field for +a PRP entry is invalid. +.IP "NVME_SC_AWU_EXCEEDED" 12 +Atomic Write Unit Exceeded: The length +specified exceeds the atomic write unit size. +.IP "NVME_SC_OP_DENIED" 12 +Operation Denied: The command was denied +due to lack of access rights. Refer to +the appropriate security specification. +.IP "NVME_SC_SGL_INVALID_OFFSET" 12 +SGL Offset Invalid: The offset specified +in a descriptor is invalid. This may +occur when using capsules for data +transfers in NVMe over Fabrics +implementations and an invalid offset in +the capsule is specified. +.IP "NVME_SC_HOSTID_FORMAT" 12 +Host Identifier Inconsistent Format: The +NVM subsystem detected the simultaneous +use of 64- bit and 128-bit Host +Identifier values on different +controllers. +.IP "NVME_SC_KAT_EXPIRED" 12 +Keep Alive Timer Expired: The Keep Alive +Timer expired. +.IP "NVME_SC_KAT_INVALID" 12 +Keep Alive Timeout Invalid: The Keep +Alive Timeout value specified is invalid. +.IP "NVME_SC_CMD_ABORTED_PREMEPT" 12 +Command Aborted due to Preempt and Abort: +The command was aborted due to a +Reservation Acquire command. +.IP "NVME_SC_SANITIZE_FAILED" 12 +Sanitize Failed: The most recent sanitize +operation failed and no recovery action +has been successfully completed. +.IP "NVME_SC_SANITIZE_IN_PROGRESS" 12 +Sanitize In Progress: The requested +function (e.g., command) is prohibited +while a sanitize operation is in +progress. +.IP "NVME_SC_SGL_INVALID_GRANULARITY" 12 +SGL Data Block Granularity Invalid: The +Address alignment or Length granularity +for an SGL Data Block descriptor is +invalid. +.IP "NVME_SC_CMD_IN_CMBQ_NOT_SUPP" 12 +Command Not Supported for Queue in CMB: +The implementation does not support +submission of the command to a Submission +Queue in the Controller Memory Buffer or +command completion to a Completion Queue +in the Controller Memory Buffer. +.IP "NVME_SC_NS_WRITE_PROTECTED" 12 +Namespace is Write Protected: The command +is prohibited while the namespace is +write protected as a result of a change +in the namespace write protection state +as defined by the Namespace Write +Protection State Machine. +.IP "NVME_SC_CMD_INTERRUPTED" 12 +Command Interrupted: Command processing +was interrupted and the controller is +unable to successfully complete the +command. The host should retry the +command. +.IP "NVME_SC_TRAN_TPORT_ERROR" 12 +Transient Transport Error: A transient +transport error was detected. If the +command is retried on the same +controller, the command is likely to +succeed. A command that fails with a +transient transport error four or more +times should be treated as a persistent +transport error that is not likely to +succeed if retried on the same +controller. +.IP "NVME_SC_PROHIBITED_BY_CMD_AND_FEAT" 12 +Command Prohibited by Command and Feature +Lockdown: The command was aborted due to +command execution being prohibited by +the Command and Feature Lockdown. +.IP "NVME_SC_ADMIN_CMD_MEDIA_NOT_READY" 12 +Admin Command Media Not Ready: The Admin +command requires access to media and +the media is not ready. +.IP "NVME_SC_LBA_RANGE" 12 +LBA Out of Range: The command references +an LBA that exceeds the size of the namespace. +.IP "NVME_SC_CAP_EXCEEDED" 12 +Capacity Exceeded: Execution of the +command has caused the capacity of the +namespace to be exceeded. +.IP "NVME_SC_NS_NOT_READY" 12 +Namespace Not Ready: The namespace is not +ready to be accessed as a result of a +condition other than a condition that is +reported as an Asymmetric Namespace +Access condition. +.IP "NVME_SC_RESERVATION_CONFLICT" 12 +Reservation Conflict: The command was +aborted due to a conflict with a +reservation held on the accessed +namespace. +.IP "NVME_SC_FORMAT_IN_PROGRESS" 12 +Format In Progress: A Format NVM command +is in progress on the namespace. +.IP "NVME_SC_CQ_INVALID" 12 +Completion Queue Invalid: The Completion +Queue identifier specified in the command +does not exist. +.IP "NVME_SC_QID_INVALID" 12 +Invalid Queue Identifier: The creation of +the I/O Completion Queue failed due to an +invalid queue identifier specified as +part of the command. An invalid queue +identifier is one that is currently in +use or one that is outside the range +supported by the controller. +.IP "NVME_SC_QUEUE_SIZE" 12 +Invalid Queue Size: The host attempted to +create an I/O Completion Queue with an +invalid number of entries. +.IP "NVME_SC_ABORT_LIMIT" 12 +Abort Command Limit Exceeded: The number +of concurrently outstanding Abort commands +has exceeded the limit indicated in the +Identify Controller data structure. +.IP "NVME_SC_ABORT_MISSING" 12 +Abort Command is missing: The abort +command is missing. +.IP "NVME_SC_ASYNC_LIMIT" 12 +Asynchronous Event Request Limit +Exceeded: The number of concurrently +outstanding Asynchronous Event Request +commands has been exceeded. +.IP "NVME_SC_FIRMWARE_SLOT" 12 +Invalid Firmware Slot: The firmware slot +indicated is invalid or read only. This +error is indicated if the firmware slot +exceeds the number supported. +.IP "NVME_SC_FIRMWARE_IMAGE" 12 +Invalid Firmware Image: The firmware +image specified for activation is invalid +and not loaded by the controller. +.IP "NVME_SC_INVALID_VECTOR" 12 +Invalid Interrupt Vector: The creation of +the I/O Completion Queue failed due to an +invalid interrupt vector specified as +part of the command. +.IP "NVME_SC_INVALID_LOG_PAGE" 12 +Invalid Log Page: The log page indicated +is invalid. This error condition is also +returned if a reserved log page is +requested. +.IP "NVME_SC_INVALID_FORMAT" 12 +Invalid Format: The LBA Format specified +is not supported. +.IP "NVME_SC_FW_NEEDS_CONV_RESET" 12 +Firmware Activation Requires Conventional Reset: +The firmware commit was successful, +however, activation of the firmware image +requires a conventional reset. +.IP "NVME_SC_INVALID_QUEUE" 12 +Invalid Queue Deletion: Invalid I/O +Completion Queue specified to delete. +.IP "NVME_SC_FEATURE_NOT_SAVEABLE" 12 +Feature Identifier Not Saveable: The +Feature Identifier specified does not +support a saveable value. +.IP "NVME_SC_FEATURE_NOT_CHANGEABLE" 12 +Feature Not Changeable: The Feature +Identifier is not able to be changed. +.IP "NVME_SC_FEATURE_NOT_PER_NS" 12 +Feature Not Namespace Specific: The +Feature Identifier specified is not +namespace specific. The Feature +Identifier settings apply across all +namespaces. +.IP "NVME_SC_FW_NEEDS_SUBSYS_RESET" 12 +Firmware Activation Requires NVM +Subsystem Reset: The firmware commit was +successful, however, activation of the +firmware image requires an NVM Subsystem. +.IP "NVME_SC_FW_NEEDS_RESET" 12 +Firmware Activation Requires Controller +Level Reset: The firmware commit was +successful; however, the image specified +does not support being activated without +a reset. +.IP "NVME_SC_FW_NEEDS_MAX_TIME" 12 +Firmware Activation Requires Maximum Time +Violation: The image specified if +activated immediately would exceed the +Maximum Time for Firmware Activation +(MTFA) value reported in Identify +Controller. +.IP "NVME_SC_FW_ACTIVATE_PROHIBITED" 12 +Firmware Activation Prohibited: The image +specified is being prohibited from +activation by the controller for vendor +specific reasons. +.IP "NVME_SC_OVERLAPPING_RANGE" 12 +Overlapping Range: The downloaded +firmware image has overlapping ranges. +.IP "NVME_SC_NS_INSUFFICIENT_CAP" 12 +Namespace Insufficient Capacity: Creating +the namespace requires more free space +than is currently available. +.IP "NVME_SC_NS_ID_UNAVAILABLE" 12 +Namespace Identifier Unavailable: The +number of namespaces supported has been +exceeded. +.IP "NVME_SC_NS_ALREADY_ATTACHED" 12 +Namespace Already Attached: The +controller is already attached to the +namespace specified. +.IP "NVME_SC_NS_IS_PRIVATE" 12 +Namespace Is Private: The namespace is +private and is already attached to one +controller. +.IP "NVME_SC_NS_NOT_ATTACHED" 12 +Namespace Not Attached: The request to +detach the controller could not be +completed because the controller is not +attached to the namespace. +.IP "NVME_SC_THIN_PROV_NOT_SUPP" 12 +Thin Provisioning Not Supported: Thin +provisioning is not supported by the +controller. +.IP "NVME_SC_CTRL_LIST_INVALID" 12 +Controller List Invalid: The controller +list provided contains invalid controller +ids. +.IP "NVME_SC_SELF_TEST_IN_PROGRESS" 12 +Device Self-test In Progress: The controller +or NVM subsystem already has a device +self-test operation in process. +.IP "NVME_SC_BP_WRITE_PROHIBITED" 12 +Boot Partition Write Prohibited: The +command is trying to modify a locked Boot +Partition. +.IP "NVME_SC_INVALID_CTRL_ID" 12 +Invalid Controller Identifier: +.IP "NVME_SC_INVALID_SEC_CTRL_STATE" 12 +Invalid Secondary Controller State +.IP "NVME_SC_INVALID_CTRL_RESOURCES" 12 +Invalid Number of Controller Resources +.IP "NVME_SC_INVALID_RESOURCE_ID" 12 +Invalid Resource Identifier +.IP "NVME_SC_PMR_SAN_PROHIBITED" 12 +Sanitize Prohibited While Persistent +Memory Region is Enabled +.IP "NVME_SC_ANA_GROUP_ID_INVALID" 12 +ANA Group Identifier Invalid: The specified +ANA Group Identifier (ANAGRPID) is not +supported in the submitted command. +.IP "NVME_SC_ANA_ATTACH_FAILED" 12 +ANA Attach Failed: The controller is not +attached to the namespace as a result +of an ANA condition. +.IP "NVME_SC_INSUFFICIENT_CAP" 12 +Insufficient Capacity: Requested operation +requires more free space than is currently +available. +.IP "NVME_SC_NS_ATTACHMENT_LIMIT_EXCEEDED" 12 +Namespace Attachment Limit Exceeded: +Attaching the ns to a controller causes +max number of ns attachments allowed +to be exceeded. +.IP "NVME_SC_PROHIBIT_CMD_EXEC_NOT_SUPPORTED" 12 +Prohibition of Command Execution +Not Supported +.IP "NVME_SC_IOCS_NOT_SUPPORTED" 12 +I/O Command Set Not Supported +.IP "NVME_SC_IOCS_NOT_ENABLED" 12 +I/O Command Set Not Enabled +.IP "NVME_SC_IOCS_COMBINATION_REJECTED" 12 +I/O Command Set Combination Rejected +.IP "NVME_SC_INVALID_IOCS" 12 +Invalid I/O Command Set +.IP "NVME_SC_ID_UNAVAILABLE" 12 +Identifier Unavailable +.IP "NVME_SC_INVALID_DISCOVERY_INFO" 12 +The discovery information provided in +one or more extended discovery +information entries is not applicable +for the type of entity selected in +the Entity Type (ETYPE) field of the +Discovery Information Management +command data portion’s header. +.IP "NVME_SC_ZONING_DATA_STRUCT_LOCKED" 12 +The requested Zoning data structure +is locked on the CDC. +.IP "NVME_SC_ZONING_DATA_STRUCT_NOTFND" 12 +The requested Zoning data structure +does not exist on the CDC. +.IP "NVME_SC_INSUFFICIENT_DISC_RES" 12 +The number of discover information +entries provided in the data portion +of the Discovery Information +Management command for a registration +task (i.e., TAS field cleared to 0h) +exceeds the available capacity for +new discovery information entries on +the CDC or DDC. This may be a +transient condition. +.IP "NVME_SC_REQSTD_FUNCTION_DISABLED" 12 +Fabric Zoning is not enabled on the +CDC +.IP "NVME_SC_ZONEGRP_ORIGINATOR_INVLD" 12 +The NQN contained in the ZoneGroup +Originator field does not match the +Host NQN used by the DDC to connect +to the CDC. +.IP "NVME_SC_BAD_ATTRIBUTES" 12 +Conflicting Dataset Management Attributes +.IP "NVME_SC_INVALID_PI" 12 +Invalid Protection Information +.IP "NVME_SC_READ_ONLY" 12 +Attempted Write to Read Only Range +.IP "NVME_SC_CMD_SIZE_LIMIT_EXCEEDED" 12 +Command Size Limit Exceeded +.IP "NVME_SC_CONNECT_FORMAT" 12 +Incompatible Format: The NVM subsystem +does not support the record format +specified by the host. +.IP "NVME_SC_CONNECT_CTRL_BUSY" 12 +Controller Busy: The controller is +already associated with a host. +.IP "NVME_SC_CONNECT_INVALID_PARAM" 12 +Connect Invalid Parameters: One or more +of the command parameters. +.IP "NVME_SC_CONNECT_RESTART_DISC" 12 +Connect Restart Discovery: The NVM +subsystem requested is not available. +.IP "NVME_SC_CONNECT_INVALID_HOST" 12 +Connect Invalid Host: The host is either +not allowed to establish an association +to any controller in the NVM subsystem or +the host is not allowed to establish an +association to the specified controller +.IP "NVME_SC_DISCONNECT_INVALID_QTYPE" 12 +Invalid Queue Type: The command was sent +on the wrong queue type. +.IP "NVME_SC_DISCOVERY_RESTART" 12 +Discover Restart: The snapshot of the +records is now invalid or out of date. +.IP "NVME_SC_AUTH_REQUIRED" 12 +Authentication Required: NVMe in-band +authentication is required and the queue +has not yet been authenticated. +.IP "NVME_SC_ZNS_INVALID_OP_REQUEST" 12 +Invalid Zone Operation Request: +The operation requested is invalid. This may be due to +various conditions, including: attempting to allocate a +ZRWA when a zone is not in the ZSE:Empty state; or +invalid Flush Explicit ZRWA Range Send Zone Action +operation. +.IP "NVME_SC_ZNS_ZRWA_RESOURCES_UNAVAILABLE" 12 +ZRWA Resources Unavailable: +No ZRWAs are available. +.IP "NVME_SC_ZNS_BOUNDARY_ERROR" 12 +Zone Boundary Error: The command specifies +logical blocks in more than one zone. +.IP "NVME_SC_ZNS_FULL" 12 +Zone Is Full: The accessed zone is in the +ZSF:Full state. +.IP "NVME_SC_ZNS_READ_ONLY" 12 +Zone Is Read Only: The accessed zone is +in the ZSRO:Read Only state. +.IP "NVME_SC_ZNS_OFFLINE" 12 +Zone Is Offline: The accessed zone is +in the ZSO:Offline state. +.IP "NVME_SC_ZNS_INVALID_WRITE" 12 +Zone Invalid Write: The write to a zone +was not at the write pointer. +.IP "NVME_SC_ZNS_TOO_MANY_ACTIVE" 12 +Too Many Active Zones: The controller +does not allow additional active zones. +.IP "NVME_SC_ZNS_TOO_MANY_OPENS" 12 +Too Many Open Zones: The controller does +not allow additional open zones. +.IP "NVME_SC_ZNS_INVAL_TRANSITION" 12 +Invalid Zone State Transition: The request +is not a valid zone state transition. +.IP "NVME_SC_WRITE_FAULT" 12 +Write Fault: The write data could not be +committed to the media. +.IP "NVME_SC_READ_ERROR" 12 +Unrecovered Read Error: The read data +could not be recovered from the media. +.IP "NVME_SC_GUARD_CHECK" 12 +End-to-end Guard Check Error: The command +was aborted due to an end-to-end guard +check failure. +.IP "NVME_SC_APPTAG_CHECK" 12 +End-to-end Application Tag Check Error: +The command was aborted due to an +end-to-end application tag check failure. +.IP "NVME_SC_REFTAG_CHECK" 12 +End-to-end Reference Tag Check Error: The +command was aborted due to an end-to-end +reference tag check failure. +.IP "NVME_SC_COMPARE_FAILED" 12 +Compare Failure: The command failed due +to a miscompare during a Compare command. +.IP "NVME_SC_ACCESS_DENIED" 12 +Access Denied: Access to the namespace +and/or LBA range is denied due to lack of +access rights. +.IP "NVME_SC_UNWRITTEN_BLOCK" 12 +Deallocated or Unwritten Logical Block: +The command failed due to an attempt to +read from or verify an LBA range +containing a deallocated or unwritten +logical block. +.IP "NVME_SC_STORAGE_TAG_CHECK" 12 +End-to-End Storage Tag Check Error: The +command was aborted due to an end-to-end +storage tag check failure. +.IP "NVME_SC_ANA_INTERNAL_PATH_ERROR" 12 +Internal Path Error: The command was not +completed as the result of a controller +internal error that is specific to the +controller processing the command. +.IP "NVME_SC_ANA_PERSISTENT_LOSS" 12 +Asymmetric Access Persistent Loss: The +requested function (e.g., command) is not +able to be performed as a result of the +relationship between the controller and +the namespace being in the ANA Persistent +Loss state. +.IP "NVME_SC_ANA_INACCESSIBLE" 12 +Asymmetric Access Inaccessible: The +requested function (e.g., command) is not +able to be performed as a result of the +relationship between the controller and +the namespace being in the ANA +Inaccessible state. +.IP "NVME_SC_ANA_TRANSITION" 12 +Asymmetric Access Transition: The +requested function (e.g., command) is not +able to be performed as a result of the +relationship between the controller and +the namespace transitioning between +Asymmetric Namespace Access states. +.IP "NVME_SC_CTRL_PATH_ERROR" 12 +Controller Pathing Error: A pathing error +was detected by the controller. +.IP "NVME_SC_HOST_PATH_ERROR" 12 +Host Pathing Error: A pathing error was +detected by the host. +.IP "NVME_SC_CMD_ABORTED_BY_HOST" 12 +Command Aborted By Host: The command was +aborted as a result of host action. +.IP "NVME_SC_CRD" 12 +Mask to get value of Command Retry Delay +index +.IP "NVME_SC_MORE" 12 +More bit. If set, more status information +for this command as part of the Error +Information log that may be retrieved with +the Get Log Page command. +.IP "NVME_SC_DNR" 12 +Do Not Retry bit. If set, if the same +command is re-submitted to any controller +in the NVM subsystem, then that +re-submitted command is expected to fail. diff --git a/doc/man/nvme_status_get_type.2 b/doc/man/nvme_status_get_type.2 new file mode 100644 index 0000000..6e5bfaa --- /dev/null +++ b/doc/man/nvme_status_get_type.2 @@ -0,0 +1,11 @@ +.TH "nvme_status_get_type" 9 "nvme_status_get_type" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_get_type \- extract the type from a nvme_* return value +.SH SYNOPSIS +.B "__u32" nvme_status_get_type +.BI "(int status " ");" +.SH ARGUMENTS +.IP "status" 12 +the (non-negative) return value from the NVMe API +.SH "RETURN" +the type component of the status. diff --git a/doc/man/nvme_status_get_value.2 b/doc/man/nvme_status_get_value.2 new file mode 100644 index 0000000..4037129 --- /dev/null +++ b/doc/man/nvme_status_get_value.2 @@ -0,0 +1,12 @@ +.TH "nvme_status_get_value" 9 "nvme_status_get_value" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_get_value \- extract the status value from a nvme_* return value +.SH SYNOPSIS +.B "__u32" nvme_status_get_value +.BI "(int status " ");" +.SH ARGUMENTS +.IP "status" 12 +the (non-negative) return value from the NVMe API +.SH "RETURN" +the value component of the status; the set of values will depend +on the status type. diff --git a/doc/man/nvme_status_result.2 b/doc/man/nvme_status_result.2 new file mode 100644 index 0000000..341cf43 --- /dev/null +++ b/doc/man/nvme_status_result.2 @@ -0,0 +1,87 @@ +.TH "libnvme" 9 "enum nvme_status_result" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_status_result \- Result of the device self-test operation +.SH SYNOPSIS +enum nvme_status_result { +.br +.BI " NVME_ST_RESULT_NO_ERR" +, +.br +.br +.BI " NVME_ST_RESULT_ABORTED" +, +.br +.br +.BI " NVME_ST_RESULT_CLR" +, +.br +.br +.BI " NVME_ST_RESULT_NS_REMOVED" +, +.br +.br +.BI " NVME_ST_RESULT_ABORTED_FORMAT" +, +.br +.br +.BI " NVME_ST_RESULT_FATAL_ERR" +, +.br +.br +.BI " NVME_ST_RESULT_UNKNOWN_SEG_FAIL" +, +.br +.br +.BI " NVME_ST_RESULT_KNOWN_SEG_FAIL" +, +.br +.br +.BI " NVME_ST_RESULT_ABORTED_UNKNOWN" +, +.br +.br +.BI " NVME_ST_RESULT_ABORTED_SANITIZE" +, +.br +.br +.BI " NVME_ST_RESULT_NOT_USED" +, +.br +.br +.BI " NVME_ST_RESULT_MASK" + +}; +.SH Constants +.IP "NVME_ST_RESULT_NO_ERR" 12 +Operation completed without error. +.IP "NVME_ST_RESULT_ABORTED" 12 +Operation was aborted by a Device Self-test command. +.IP "NVME_ST_RESULT_CLR" 12 +Operation was aborted by a Controller Level Reset. +.IP "NVME_ST_RESULT_NS_REMOVED" 12 +Operation was aborted due to a removal of +a namespace from the namespace inventory. +.IP "NVME_ST_RESULT_ABORTED_FORMAT" 12 +Operation was aborted due to the processing +of a Format NVM command. +.IP "NVME_ST_RESULT_FATAL_ERR" 12 +A fatal error or unknown test error occurred +while the controller was executing the device +self-test operation and the operation did +not complete. +.IP "NVME_ST_RESULT_UNKNOWN_SEG_FAIL" 12 +Operation completed with a segment that failed +and the segment that failed is not known. +.IP "NVME_ST_RESULT_KNOWN_SEG_FAIL" 12 +Operation completed with one or more failed +segments and the first segment that failed +is indicated in the Segment Number field. +.IP "NVME_ST_RESULT_ABORTED_UNKNOWN" 12 +Operation was aborted for unknown reason. +.IP "NVME_ST_RESULT_ABORTED_SANITIZE" 12 +Operation was aborted due to a sanitize operation. +.IP "NVME_ST_RESULT_NOT_USED" 12 +Entry not used (does not contain a test result). +.IP "NVME_ST_RESULT_MASK" 12 +Mask to get the status result value from +the \fIstruct nvme_st_result\fP.dsts field. diff --git a/doc/man/nvme_status_to_errno.2 b/doc/man/nvme_status_to_errno.2 new file mode 100644 index 0000000..b244b98 --- /dev/null +++ b/doc/man/nvme_status_to_errno.2 @@ -0,0 +1,15 @@ +.TH "nvme_status_to_errno" 9 "nvme_status_to_errno" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_to_errno \- Converts nvme return status to errno +.SH SYNOPSIS +.B "__u8" nvme_status_to_errno +.BI "(int status " "," +.BI "bool fabrics " ");" +.SH ARGUMENTS +.IP "status" 12 +Return status from an nvme passthrough command +.IP "fabrics" 12 +Set to true if \fIstatus\fP is to a fabrics target. +.SH "RETURN" +An errno representing the nvme status if it is an nvme status field, +or unchanged status is < 0 since errno is already set. diff --git a/doc/man/nvme_status_to_string.2 b/doc/man/nvme_status_to_string.2 new file mode 100644 index 0000000..608f314 --- /dev/null +++ b/doc/man/nvme_status_to_string.2 @@ -0,0 +1,15 @@ +.TH "nvme_status_to_string" 9 "nvme_status_to_string" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_status_to_string \- Returns string describing nvme return status. +.SH SYNOPSIS +.B "const char *" nvme_status_to_string +.BI "(int status " "," +.BI "bool fabrics " ");" +.SH ARGUMENTS +.IP "status" 12 +Return status from an nvme passthrough command +.IP "fabrics" 12 +Set to true if \fIstatus\fP is to a fabrics target. +.SH "RETURN" +String representation of the nvme status if it is an nvme status field, +or a standard errno string if status is < 0. diff --git a/doc/man/nvme_status_type.2 b/doc/man/nvme_status_type.2 new file mode 100644 index 0000000..aa76128 --- /dev/null +++ b/doc/man/nvme_status_type.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "enum nvme_status_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_status_type \- type encoding for NVMe return values, when represented as an int. +.SH SYNOPSIS +enum nvme_status_type { +.br +.BI " NVME_STATUS_TYPE_SHIFT" +, +.br +.br +.BI " NVME_STATUS_TYPE_MASK" +, +.br +.br +.BI " NVME_STATUS_TYPE_NVME" +, +.br +.br +.BI " NVME_STATUS_TYPE_MI" + +}; +.SH Constants +.IP "NVME_STATUS_TYPE_SHIFT" 12 +shift value for status bits +.IP "NVME_STATUS_TYPE_MASK" 12 +mask value for status bits +.IP "NVME_STATUS_TYPE_NVME" 12 +NVMe command status value, typically from CDW3 +.IP "NVME_STATUS_TYPE_MI" 12 +NVMe-MI header status +.SH "Description" + +The nvme_* api returns an int, with negative values indicating an internal +or syscall error, zero signifying success, positive values representing +the NVMe status. + +That latter case (the NVMe status) may represent status values from +different parts of the transport/controller/etc, and are at most 16 bits of +data. So, we use the most-significant 3 bits of the signed int to indicate +which type of status this is. diff --git a/doc/man/nvme_streams_directive_params.2 b/doc/man/nvme_streams_directive_params.2 new file mode 100644 index 0000000..f0b44ef --- /dev/null +++ b/doc/man/nvme_streams_directive_params.2 @@ -0,0 +1,51 @@ +.TH "libnvme" 9 "struct nvme_streams_directive_params" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_streams_directive_params \- Streams Directive - Return Parameters Data Structure +.SH SYNOPSIS +struct nvme_streams_directive_params { +.br +.BI " __le16 msl;" +.br +.BI " __le16 nssa;" +.br +.BI " __le16 nsso;" +.br +.BI " __u8 nssc;" +.br +.BI " __u8 rsvd[9];" +.br +.BI " __le32 sws;" +.br +.BI " __le16 sgs;" +.br +.BI " __le16 nsa;" +.br +.BI " __le16 nso;" +.br +.BI " __u8 rsvd2[6];" +.br +.BI " +}; +.br + +.SH Members +.IP "msl" 12 +Max Streams Limit +.IP "nssa" 12 +NVM Subsystem Streams Available +.IP "nsso" 12 +NVM Subsystem Streams Open +.IP "nssc" 12 +NVM Subsystem Stream Capability +.IP "rsvd" 12 +Reserved +.IP "sws" 12 +Stream Write Size +.IP "sgs" 12 +Stream Granularity Size +.IP "nsa" 12 +Namespace Streams Allocated +.IP "nso" 12 +Namespace Streams Open +.IP "rsvd2" 12 +Reserved diff --git a/doc/man/nvme_streams_directive_status.2 b/doc/man/nvme_streams_directive_status.2 new file mode 100644 index 0000000..9eaa423 --- /dev/null +++ b/doc/man/nvme_streams_directive_status.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_streams_directive_status" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_streams_directive_status \- Streams Directive - Get Status Data Structure +.SH SYNOPSIS +struct nvme_streams_directive_status { +.br +.BI " __le16 osc;" +.br +.BI " __le16 sid[];" +.br +.BI " +}; +.br + +.SH Members +.IP "osc" 12 +Open Stream Count +.IP "sid" 12 +Stream Identifier diff --git a/doc/man/nvme_submit_admin_passthru.2 b/doc/man/nvme_submit_admin_passthru.2 new file mode 100644 index 0000000..ee20a75 --- /dev/null +++ b/doc/man/nvme_submit_admin_passthru.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_admin_passthru" 9 "nvme_submit_admin_passthru" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_submit_admin_passthru \- Submit an nvme passthrough admin command +.SH SYNOPSIS +.B "int" nvme_submit_admin_passthru +.BI "(int fd " "," +.BI "struct nvme_passthru_cmd *cmd " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cmd" 12 +The nvme admin command to send +.IP "result" 12 +Optional field to return the result from the CQE DW0 +.SH "DESCRIPTION" +Uses NVME_IOCTL_ADMIN_CMD for the ioctl request. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_submit_admin_passthru64.2 b/doc/man/nvme_submit_admin_passthru64.2 new file mode 100644 index 0000000..48d6795 --- /dev/null +++ b/doc/man/nvme_submit_admin_passthru64.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_admin_passthru64" 9 "nvme_submit_admin_passthru64" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_submit_admin_passthru64 \- Submit a 64-bit nvme passthrough admin command +.SH SYNOPSIS +.B "int" nvme_submit_admin_passthru64 +.BI "(int fd " "," +.BI "struct nvme_passthru_cmd64 *cmd " "," +.BI "__u64 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cmd" 12 +The nvme admin command to send +.IP "result" 12 +Optional field to return the result from the CQE DW0-1 +.SH "DESCRIPTION" +Uses NVME_IOCTL_ADMIN64_CMD for the ioctl request. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_submit_io_passthru.2 b/doc/man/nvme_submit_io_passthru.2 new file mode 100644 index 0000000..b8f70f1 --- /dev/null +++ b/doc/man/nvme_submit_io_passthru.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_io_passthru" 9 "nvme_submit_io_passthru" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_submit_io_passthru \- Submit an nvme passthrough command +.SH SYNOPSIS +.B "int" nvme_submit_io_passthru +.BI "(int fd " "," +.BI "struct nvme_passthru_cmd *cmd " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cmd" 12 +The nvme io command to send +.IP "result" 12 +Optional field to return the result from the CQE DW0 +.SH "DESCRIPTION" +Uses NVME_IOCTL_IO_CMD for the ioctl request. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_submit_io_passthru64.2 b/doc/man/nvme_submit_io_passthru64.2 new file mode 100644 index 0000000..00bfbe0 --- /dev/null +++ b/doc/man/nvme_submit_io_passthru64.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_io_passthru64" 9 "nvme_submit_io_passthru64" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_submit_io_passthru64 \- Submit a 64-bit nvme passthrough command +.SH SYNOPSIS +.B "int" nvme_submit_io_passthru64 +.BI "(int fd " "," +.BI "struct nvme_passthru_cmd64 *cmd " "," +.BI "__u64 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "cmd" 12 +The nvme io command to send +.IP "result" 12 +Optional field to return the result from the CQE DW0-1 +.SH "DESCRIPTION" +Uses NVME_IOCTL_IO64_CMD for the ioctl request. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_subsys_filter.2 b/doc/man/nvme_subsys_filter.2 new file mode 100644 index 0000000..d8bee40 --- /dev/null +++ b/doc/man/nvme_subsys_filter.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsys_filter" 9 "nvme_subsys_filter" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsys_filter \- Filter for subsystems +.SH SYNOPSIS +.B "int" nvme_subsys_filter +.BI "(const struct dirent *d " ");" +.SH ARGUMENTS +.IP "d" 12 +dirent to check +.SH "RETURN" +1 if \fId\fP matches, 0 otherwise diff --git a/doc/man/nvme_subsys_type.2 b/doc/man/nvme_subsys_type.2 new file mode 100644 index 0000000..45e90ad --- /dev/null +++ b/doc/man/nvme_subsys_type.2 @@ -0,0 +1,37 @@ +.TH "libnvme" 9 "enum nvme_subsys_type" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_subsys_type \- Type of the NVM subsystem. +.SH SYNOPSIS +enum nvme_subsys_type { +.br +.BI " NVME_NQN_DISC" +, +.br +.br +.BI " NVME_NQN_NVME" +, +.br +.br +.BI " NVME_NQN_CURR" + +}; +.SH Constants +.IP "NVME_NQN_DISC" 12 +Discovery type target subsystem. Describes a referral to another +Discovery Service composed of Discovery controllers that provide +additional discovery records. Multiple Referral entries may +be reported for each Discovery Service (if that Discovery Service +has multiple NVM subsystem ports or supports multiple protocols). +.IP "NVME_NQN_NVME" 12 +NVME type target subsystem. Describes an NVM subsystem whose +controllers may have attached namespaces (an NVM subsystem +that is not composed of Discovery controllers). Multiple NVM +Subsystem entries may be reported for each NVM subsystem if +that NVM subsystem has multiple NVM subsystem ports. +.IP "NVME_NQN_CURR" 12 +Current Discovery type target subsystem. Describes this Discovery +subsystem (the Discovery Service that contains the controller +processing the Get Log Page command). Multiple Current Discovery +Subsystem entries may be reported for this Discovery subsystem +if the current Discovery subsystem has multiple NVM subsystem +ports. diff --git a/doc/man/nvme_subsystem_first_ctrl.2 b/doc/man/nvme_subsystem_first_ctrl.2 new file mode 100644 index 0000000..84fbf6b --- /dev/null +++ b/doc/man/nvme_subsystem_first_ctrl.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_first_ctrl" 9 "nvme_subsystem_first_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_first_ctrl \- First ctrl iterator +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_subsystem_first_ctrl +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.SH "RETURN" +First controller of an \fIs\fP iterator diff --git a/doc/man/nvme_subsystem_first_ns.2 b/doc/man/nvme_subsystem_first_ns.2 new file mode 100644 index 0000000..b0a3193 --- /dev/null +++ b/doc/man/nvme_subsystem_first_ns.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_first_ns" 9 "nvme_subsystem_first_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_first_ns \- Start namespace iterator +.SH SYNOPSIS +.B "nvme_ns_t" nvme_subsystem_first_ns +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.SH "RETURN" +First \fInvme_ns_t\fP object of an \fIs\fP iterator diff --git a/doc/man/nvme_subsystem_for_each_ctrl.2 b/doc/man/nvme_subsystem_for_each_ctrl.2 new file mode 100644 index 0000000..2b28627 --- /dev/null +++ b/doc/man/nvme_subsystem_for_each_ctrl.2 @@ -0,0 +1,12 @@ +.TH "nvme_subsystem_for_each_ctrl" 9 "nvme_subsystem_for_each_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_for_each_ctrl \- Traverse controllers +.SH SYNOPSIS +.B "nvme_subsystem_for_each_ctrl +.BI "(s " "," +.BI "c " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "c" 12 +Controller instance diff --git a/doc/man/nvme_subsystem_for_each_ctrl_safe.2 b/doc/man/nvme_subsystem_for_each_ctrl_safe.2 new file mode 100644 index 0000000..33efe94 --- /dev/null +++ b/doc/man/nvme_subsystem_for_each_ctrl_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_subsystem_for_each_ctrl_safe" 9 "nvme_subsystem_for_each_ctrl_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_for_each_ctrl_safe \- Traverse controllers +.SH SYNOPSIS +.B "nvme_subsystem_for_each_ctrl_safe +.BI "(s " "," +.BI "c " "," +.BI "_c " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "c" 12 +Controller instance +.IP "_c" 12 +A \fInvme_ctrl_t_node\fP to use as temporary storage diff --git a/doc/man/nvme_subsystem_for_each_ns.2 b/doc/man/nvme_subsystem_for_each_ns.2 new file mode 100644 index 0000000..111ad1f --- /dev/null +++ b/doc/man/nvme_subsystem_for_each_ns.2 @@ -0,0 +1,12 @@ +.TH "nvme_subsystem_for_each_ns" 9 "nvme_subsystem_for_each_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_for_each_ns \- Traverse namespaces +.SH SYNOPSIS +.B "nvme_subsystem_for_each_ns +.BI "(s " "," +.BI "n " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "n" 12 +\fInvme_ns_t\fP object diff --git a/doc/man/nvme_subsystem_for_each_ns_safe.2 b/doc/man/nvme_subsystem_for_each_ns_safe.2 new file mode 100644 index 0000000..8a82dd3 --- /dev/null +++ b/doc/man/nvme_subsystem_for_each_ns_safe.2 @@ -0,0 +1,15 @@ +.TH "nvme_subsystem_for_each_ns_safe" 9 "nvme_subsystem_for_each_ns_safe" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_for_each_ns_safe \- Traverse namespaces +.SH SYNOPSIS +.B "nvme_subsystem_for_each_ns_safe +.BI "(s " "," +.BI "n " "," +.BI "_n " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "n" 12 +\fInvme_ns_t\fP object +.IP "_n" 12 +A \fInvme_ns_t_node\fP to use as temporary storage diff --git a/doc/man/nvme_subsystem_get_host.2 b/doc/man/nvme_subsystem_get_host.2 new file mode 100644 index 0000000..9cea0f2 --- /dev/null +++ b/doc/man/nvme_subsystem_get_host.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_get_host" 9 "nvme_subsystem_get_host" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_get_host \- Returns nvme_host_t object +.SH SYNOPSIS +.B "nvme_host_t" nvme_subsystem_get_host +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +subsystem +.SH "RETURN" +\fInvme_host_t\fP object from \fIs\fP diff --git a/doc/man/nvme_subsystem_get_name.2 b/doc/man/nvme_subsystem_get_name.2 new file mode 100644 index 0000000..61a6e65 --- /dev/null +++ b/doc/man/nvme_subsystem_get_name.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_get_name" 9 "nvme_subsystem_get_name" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_get_name \- sysfs name of an nvme_subsystem_t object +.SH SYNOPSIS +.B "const char *" nvme_subsystem_get_name +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.SH "RETURN" +sysfs name of \fIs\fP diff --git a/doc/man/nvme_subsystem_get_nqn.2 b/doc/man/nvme_subsystem_get_nqn.2 new file mode 100644 index 0000000..288f25d --- /dev/null +++ b/doc/man/nvme_subsystem_get_nqn.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_get_nqn" 9 "nvme_subsystem_get_nqn" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_get_nqn \- Retrieve NQN from subsystem +.SH SYNOPSIS +.B "const char *" nvme_subsystem_get_nqn +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.SH "RETURN" +NQN of subsystem diff --git a/doc/man/nvme_subsystem_get_sysfs_dir.2 b/doc/man/nvme_subsystem_get_sysfs_dir.2 new file mode 100644 index 0000000..ee5e177 --- /dev/null +++ b/doc/man/nvme_subsystem_get_sysfs_dir.2 @@ -0,0 +1,11 @@ +.TH "nvme_subsystem_get_sysfs_dir" 9 "nvme_subsystem_get_sysfs_dir" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_get_sysfs_dir \- sysfs directory of an nvme_subsystem_t object +.SH SYNOPSIS +.B "const char *" nvme_subsystem_get_sysfs_dir +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.SH "RETURN" +sysfs directory name of \fIs\fP diff --git a/doc/man/nvme_subsystem_get_type.2 b/doc/man/nvme_subsystem_get_type.2 new file mode 100644 index 0000000..4ea6950 --- /dev/null +++ b/doc/man/nvme_subsystem_get_type.2 @@ -0,0 +1,13 @@ +.TH "nvme_subsystem_get_type" 9 "nvme_subsystem_get_type" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_get_type \- Returns the type of a subsystem +.SH SYNOPSIS +.B "const char *" nvme_subsystem_get_type +.BI "(nvme_subsystem_t s " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.SH "DESCRIPTION" +Returns the subsystem type of \fIs\fP. +.SH "RETURN" +'nvm' or 'discovery' diff --git a/doc/man/nvme_subsystem_lookup_namespace.2 b/doc/man/nvme_subsystem_lookup_namespace.2 new file mode 100644 index 0000000..d7e23da --- /dev/null +++ b/doc/man/nvme_subsystem_lookup_namespace.2 @@ -0,0 +1,14 @@ +.TH "nvme_subsystem_lookup_namespace" 9 "nvme_subsystem_lookup_namespace" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_lookup_namespace \- lookup namespace by NSID +.SH SYNOPSIS +.B "nvme_ns_t" nvme_subsystem_lookup_namespace +.BI "(struct nvme_subsystem *s " "," +.BI "__u32 nsid " ");" +.SH ARGUMENTS +.IP "s" 12 +nvme_subsystem_t object +.IP "nsid" 12 +Namespace id +.SH "RETURN" +nvme_ns_t of the namespace with id \fInsid\fP in subsystem \fIs\fP diff --git a/doc/man/nvme_subsystem_next_ctrl.2 b/doc/man/nvme_subsystem_next_ctrl.2 new file mode 100644 index 0000000..5d87496 --- /dev/null +++ b/doc/man/nvme_subsystem_next_ctrl.2 @@ -0,0 +1,14 @@ +.TH "nvme_subsystem_next_ctrl" 9 "nvme_subsystem_next_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_next_ctrl \- Next ctrl iterator +.SH SYNOPSIS +.B "nvme_ctrl_t" nvme_subsystem_next_ctrl +.BI "(nvme_subsystem_t s " "," +.BI "nvme_ctrl_t c " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "c" 12 +Previous controller instance of an \fIs\fP iterator +.SH "RETURN" +Next controller of an \fIs\fP iterator diff --git a/doc/man/nvme_subsystem_next_ns.2 b/doc/man/nvme_subsystem_next_ns.2 new file mode 100644 index 0000000..8c4c225 --- /dev/null +++ b/doc/man/nvme_subsystem_next_ns.2 @@ -0,0 +1,14 @@ +.TH "nvme_subsystem_next_ns" 9 "nvme_subsystem_next_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_next_ns \- Next namespace iterator +.SH SYNOPSIS +.B "nvme_ns_t" nvme_subsystem_next_ns +.BI "(nvme_subsystem_t s " "," +.BI "nvme_ns_t n " ");" +.SH ARGUMENTS +.IP "s" 12 +\fInvme_subsystem_t\fP object +.IP "n" 12 +Previous \fInvme_ns_t\fP iterator +.SH "RETURN" +Next \fInvme_ns_t\fP object of an \fIs\fP iterator diff --git a/doc/man/nvme_subsystem_reset.2 b/doc/man/nvme_subsystem_reset.2 new file mode 100644 index 0000000..492289a --- /dev/null +++ b/doc/man/nvme_subsystem_reset.2 @@ -0,0 +1,14 @@ +.TH "nvme_subsystem_reset" 9 "nvme_subsystem_reset" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_subsystem_reset \- Initiate a subsystem reset +.SH SYNOPSIS +.B "int" nvme_subsystem_reset +.BI "(int fd " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.SH "DESCRIPTION" +This should only be sent to controller handles, not to namespaces. +.SH "RETURN" +Zero if a subsystem reset was initiated or -1 with errno set +otherwise. diff --git a/doc/man/nvme_supported_cap_config_list_log.2 b/doc/man/nvme_supported_cap_config_list_log.2 new file mode 100644 index 0000000..0d71f50 --- /dev/null +++ b/doc/man/nvme_supported_cap_config_list_log.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "struct nvme_supported_cap_config_list_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_supported_cap_config_list_log \- Supported Capacity Configuration list log page +.SH SYNOPSIS +struct nvme_supported_cap_config_list_log { +.br +.BI " __u8 sccn;" +.br +.BI " __u8 rsvd1[15];" +.br +.BI " struct nvme_capacity_config_desc cap_config_desc[];" +.br +.BI " +}; +.br + +.SH Members +.IP "sccn" 12 +Number of capacity configuration +.IP "rsvd1" 12 +Reserved +.IP "cap_config_desc" 12 +Capacity configuration descriptor. +See \fIstruct\fP nvme_capacity_config_desc diff --git a/doc/man/nvme_supported_log_pages.2 b/doc/man/nvme_supported_log_pages.2 new file mode 100644 index 0000000..541d1aa --- /dev/null +++ b/doc/man/nvme_supported_log_pages.2 @@ -0,0 +1,17 @@ +.TH "libnvme" 9 "struct nvme_supported_log_pages" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_supported_log_pages \- Supported Log Pages - Log +.SH SYNOPSIS +struct nvme_supported_log_pages { +.br +.BI " __le32 lid_support[NVME_LOG_SUPPORTED_LOG_PAGES_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "lid_support" 12 +Log Page Identifier Supported +.SH "Description" +Supported Log Pages (Log Identifier 00h) diff --git a/doc/man/nvme_telemetry_da.2 b/doc/man/nvme_telemetry_da.2 new file mode 100644 index 0000000..609723b --- /dev/null +++ b/doc/man/nvme_telemetry_da.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_telemetry_da" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_telemetry_da \- Telemetry Log Data Area +.SH SYNOPSIS +enum nvme_telemetry_da { +.br +.BI " NVME_TELEMETRY_DA_1" +, +.br +.br +.BI " NVME_TELEMETRY_DA_2" +, +.br +.br +.BI " NVME_TELEMETRY_DA_3" +, +.br +.br +.BI " NVME_TELEMETRY_DA_4" + +}; +.SH Constants +.IP "NVME_TELEMETRY_DA_1" 12 +Data Area 1 +.IP "NVME_TELEMETRY_DA_2" 12 +Data Area 2 +.IP "NVME_TELEMETRY_DA_3" 12 +Data Area 3 +.IP "NVME_TELEMETRY_DA_4" 12 +Data Area 4 diff --git a/doc/man/nvme_telemetry_log.2 b/doc/man/nvme_telemetry_log.2 new file mode 100644 index 0000000..416b679 --- /dev/null +++ b/doc/man/nvme_telemetry_log.2 @@ -0,0 +1,88 @@ +.TH "libnvme" 9 "struct nvme_telemetry_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_telemetry_log \- Retrieve internal data specific to the manufacturer. +.SH SYNOPSIS +struct nvme_telemetry_log { +.br +.BI " __u8 lpi;" +.br +.BI " __u8 rsvd1[4];" +.br +.BI " __u8 ieee[3];" +.br +.BI " __le16 dalb1;" +.br +.BI " __le16 dalb2;" +.br +.BI " __le16 dalb3;" +.br +.BI " __u8 rsvd14[2];" +.br +.BI " __le32 dalb4;" +.br +.BI " __u8 rsvd20[361];" +.br +.BI " __u8 hostdgn;" +.br +.BI " __u8 ctrlavail;" +.br +.BI " __u8 ctrldgn;" +.br +.BI " __u8 rsnident[128];" +.br +.BI " __u8 data_area[];" +.br +.BI " +}; +.br + +.SH Members +.IP "lpi" 12 +Log Identifier, either NVME_LOG_LID_TELEMETRY_HOST or +NVME_LOG_LID_TELEMETRY_CTRL +.IP "rsvd1" 12 +Reserved +.IP "ieee" 12 +IEEE OUI Identifier is the Organization Unique Identifier (OUI) +for the controller vendor that is able to interpret the data. +.IP "dalb1" 12 +Telemetry Controller-Initiated Data Area 1 Last Block is +the value of the last block in this area. +.IP "dalb2" 12 +Telemetry Controller-Initiated Data Area 1 Last Block is +the value of the last block in this area. +.IP "dalb3" 12 +Telemetry Controller-Initiated Data Area 1 Last Block is +the value of the last block in this area. +.IP "rsvd14" 12 +Reserved +.IP "dalb4" 12 +Telemetry Controller-Initiated Data Area 4 Last Block is +the value of the last block in this area. +.IP "rsvd20" 12 +Reserved +.IP "hostdgn" 12 +Telemetry Host-Initiated Data Generation Number is a +value that is incremented each time the host initiates a +capture of its internal controller state in the controller . +.IP "ctrlavail" 12 +Telemetry Controller-Initiated Data Available, if cleared, +then the controller telemetry log does not contain saved +internal controller state. If this field is set to 1h, the +controller log contains saved internal controller state. If +this field is set to 1h, the data will be latched until the +host releases it by reading the log with RAE cleared. +.IP "ctrldgn" 12 +Telemetry Controller-Initiated Data Generation Number is +a value that is incremented each time the controller initiates a +capture of its internal controller state in the controller . +.IP "rsnident" 12 +Reason Identifiers a vendor specific identifier that describes +the operating conditions of the controller at the time of +capture. +.IP "data_area" 12 +Telemetry data blocks, vendor specific information data. +.SH "Description" +This log consists of a header describing the log and zero or more Telemetry +Data Blocks. All Telemetry Data Blocks are NVME_LOG_TELEM_BLOCK_SIZE, 512 +bytes, in size. This log captures the controller’s internal state. diff --git a/doc/man/nvme_thermal_exc_event.2 b/doc/man/nvme_thermal_exc_event.2 new file mode 100644 index 0000000..764d28a --- /dev/null +++ b/doc/man/nvme_thermal_exc_event.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_thermal_exc_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_thermal_exc_event \- Thermal Excursion Event Data +.SH SYNOPSIS +struct nvme_thermal_exc_event { +.br +.BI " __u8 over_temp;" +.br +.BI " __u8 threshold;" +.br +.BI " +}; +.br + +.SH Members +.IP "over_temp" 12 +Over Temperature +.IP "threshold" 12 +temperature threshold diff --git a/doc/man/nvme_time_stamp_change_event.2 b/doc/man/nvme_time_stamp_change_event.2 new file mode 100644 index 0000000..f821366 --- /dev/null +++ b/doc/man/nvme_time_stamp_change_event.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_time_stamp_change_event" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_time_stamp_change_event \- Timestamp Change Event +.SH SYNOPSIS +struct nvme_time_stamp_change_event { +.br +.BI " __le64 previous_timestamp;" +.br +.BI " __le64 ml_secs_since_reset;" +.br +.BI " +}; +.br + +.SH Members +.IP "previous_timestamp" 12 +Previous Timestamp +.IP "ml_secs_since_reset" 12 +Milliseconds Since Reset diff --git a/doc/man/nvme_timestamp.2 b/doc/man/nvme_timestamp.2 new file mode 100644 index 0000000..9a4d4e0 --- /dev/null +++ b/doc/man/nvme_timestamp.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_timestamp" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_timestamp \- Timestamp - Data Structure for Get Features +.SH SYNOPSIS +struct nvme_timestamp { +.br +.BI " __u8 timestamp[6];" +.br +.BI " __u8 attr;" +.br +.BI " __u8 rsvd;" +.br +.BI " +}; +.br + +.SH Members +.IP "timestamp" 12 +Timestamp value based on origin and synch field +.IP "attr" 12 +Attribute +.IP "rsvd" 12 +Reserved diff --git a/doc/man/nvme_unlink_ctrl.2 b/doc/man/nvme_unlink_ctrl.2 new file mode 100644 index 0000000..452a49d --- /dev/null +++ b/doc/man/nvme_unlink_ctrl.2 @@ -0,0 +1,9 @@ +.TH "nvme_unlink_ctrl" 9 "nvme_unlink_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_unlink_ctrl \- Unlink controller +.SH SYNOPSIS +.B "void" nvme_unlink_ctrl +.BI "(struct nvme_ctrl *c " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance diff --git a/doc/man/nvme_update_config.2 b/doc/man/nvme_update_config.2 new file mode 100644 index 0000000..26883c4 --- /dev/null +++ b/doc/man/nvme_update_config.2 @@ -0,0 +1,13 @@ +.TH "nvme_update_config" 9 "nvme_update_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_update_config \- Update JSON configuration +.SH SYNOPSIS +.B "int" nvme_update_config +.BI "(nvme_root_t r " ");" +.SH ARGUMENTS +.IP "r" 12 +nvme_root_t object +.SH "DESCRIPTION" +Updates the JSON configuration file with the contents of \fIr\fP. +.SH "RETURN" +0 on success, -1 on failure. diff --git a/doc/man/nvme_uring_cmd.2 b/doc/man/nvme_uring_cmd.2 new file mode 100644 index 0000000..90809f9 --- /dev/null +++ b/doc/man/nvme_uring_cmd.2 @@ -0,0 +1,83 @@ +.TH "libnvme" 9 "struct nvme_uring_cmd" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_uring_cmd \- nvme uring command structure +.SH SYNOPSIS +struct nvme_uring_cmd { +.br +.BI " __u8 opcode;" +.br +.BI " __u8 flags;" +.br +.BI " __u16 rsvd1;" +.br +.BI " __u32 nsid;" +.br +.BI " __u32 cdw2;" +.br +.BI " __u32 cdw3;" +.br +.BI " __u64 metadata;" +.br +.BI " __u64 addr;" +.br +.BI " __u32 metadata_len;" +.br +.BI " __u32 data_len;" +.br +.BI " __u32 cdw10;" +.br +.BI " __u32 cdw11;" +.br +.BI " __u32 cdw12;" +.br +.BI " __u32 cdw13;" +.br +.BI " __u32 cdw14;" +.br +.BI " __u32 cdw15;" +.br +.BI " __u32 timeout_ms;" +.br +.BI " __u32 rsvd2;" +.br +.BI " +}; +.br + +.SH Members +.IP "opcode" 12 +Operation code, see \fIenum nvme_io_opcodes\fP and \fIenum nvme_admin_opcodes\fP +.IP "flags" 12 +Not supported: intended for command flags (eg: SGL, FUSE) +.IP "rsvd1" 12 +Reserved for future use +.IP "nsid" 12 +Namespace Identifier, or Fabrics type +.IP "cdw2" 12 +Command Dword 2 (no spec defined use) +.IP "cdw3" 12 +Command Dword 3 (no spec defined use) +.IP "metadata" 12 +User space address to metadata buffer (NULL if not used) +.IP "addr" 12 +User space address to data buffer (NULL if not used) +.IP "metadata_len" 12 +Metadata buffer transfer length +.IP "data_len" 12 +Data buffer transfer length +.IP "cdw10" 12 +Command Dword 10 (command specific) +.IP "cdw11" 12 +Command Dword 11 (command specific) +.IP "cdw12" 12 +Command Dword 12 (command specific) +.IP "cdw13" 12 +Command Dword 13 (command specific) +.IP "cdw14" 12 +Command Dword 14 (command specific) +.IP "cdw15" 12 +Command Dword 15 (command specific) +.IP "timeout_ms" 12 +If non-zero, overrides system default timeout in milliseconds +.IP "rsvd2" 12 +Reserved for future use (and fills an implicit struct pad diff --git a/doc/man/nvme_verify.2 b/doc/man/nvme_verify.2 new file mode 100644 index 0000000..8701338 --- /dev/null +++ b/doc/man/nvme_verify.2 @@ -0,0 +1,16 @@ +.TH "nvme_verify" 9 "nvme_verify" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_verify \- Send an nvme verify command +.SH SYNOPSIS +.B "int" nvme_verify +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "DESCRIPTION" +The Verify command verifies integrity of stored information by reading data +and metadata, if applicable, for the LBAs indicated without transferring any +data or metadata to the host. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_version.2 b/doc/man/nvme_version.2 new file mode 100644 index 0000000..02a88d5 --- /dev/null +++ b/doc/man/nvme_version.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_version" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_version \- Selector for version to be returned by @nvme_get_version +.SH SYNOPSIS +enum nvme_version { +.br +.BI " NVME_VERSION_PROJECT" +, +.br +.br +.BI " NVME_VERSION_GIT" + +}; +.SH Constants +.IP "NVME_VERSION_PROJECT" 12 +Project release version +.IP "NVME_VERSION_GIT" 12 +Git reference diff --git a/doc/man/nvme_virt_mgmt_act.2 b/doc/man/nvme_virt_mgmt_act.2 new file mode 100644 index 0000000..c4000ae --- /dev/null +++ b/doc/man/nvme_virt_mgmt_act.2 @@ -0,0 +1,31 @@ +.TH "libnvme" 9 "enum nvme_virt_mgmt_act" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_virt_mgmt_act \- Virtualization Management - Action +.SH SYNOPSIS +enum nvme_virt_mgmt_act { +.br +.BI " NVME_VIRT_MGMT_ACT_PRIM_CTRL_FLEX_ALLOC" +, +.br +.br +.BI " NVME_VIRT_MGMT_ACT_OFFLINE_SEC_CTRL" +, +.br +.br +.BI " NVME_VIRT_MGMT_ACT_ASSIGN_SEC_CTRL" +, +.br +.br +.BI " NVME_VIRT_MGMT_ACT_ONLINE_SEC_CTRL" + +}; +.SH Constants +.IP "NVME_VIRT_MGMT_ACT_PRIM_CTRL_FLEX_ALLOC" 12 +Primary Controller Flexible +Allocation +.IP "NVME_VIRT_MGMT_ACT_OFFLINE_SEC_CTRL" 12 +Secondary Controller Offline +.IP "NVME_VIRT_MGMT_ACT_ASSIGN_SEC_CTRL" 12 +Secondary Controller Assign +.IP "NVME_VIRT_MGMT_ACT_ONLINE_SEC_CTRL" 12 +Secondary Controller Online diff --git a/doc/man/nvme_virt_mgmt_rt.2 b/doc/man/nvme_virt_mgmt_rt.2 new file mode 100644 index 0000000..f6c0f2c --- /dev/null +++ b/doc/man/nvme_virt_mgmt_rt.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_virt_mgmt_rt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_virt_mgmt_rt \- Virtualization Management - Resource Type +.SH SYNOPSIS +enum nvme_virt_mgmt_rt { +.br +.BI " NVME_VIRT_MGMT_RT_VQ_RESOURCE" +, +.br +.br +.BI " NVME_VIRT_MGMT_RT_VI_RESOURCE" + +}; +.SH Constants +.IP "NVME_VIRT_MGMT_RT_VQ_RESOURCE" 12 +VQ Resources +.IP "NVME_VIRT_MGMT_RT_VI_RESOURCE" 12 +VI Resources diff --git a/doc/man/nvme_virtual_mgmt.2 b/doc/man/nvme_virtual_mgmt.2 new file mode 100644 index 0000000..a30fce6 --- /dev/null +++ b/doc/man/nvme_virtual_mgmt.2 @@ -0,0 +1,20 @@ +.TH "nvme_virtual_mgmt" 9 "nvme_virtual_mgmt" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_virtual_mgmt \- Virtualization resource management +.SH SYNOPSIS +.B "int" nvme_virtual_mgmt +.BI "(struct nvme_virtual_mgmt_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_virtual_mgmt_args\fP argument structure +.SH "DESCRIPTION" +The Virtualization Management command is supported by primary controllers +that support the Virtualization Enhancements capability. This command is +used for several functions: + +- Modifying Flexible Resource allocation for the primary controller +- Assigning Flexible Resources for secondary controllers +- Setting the Online and Offline state for secondary controllers +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_write.2 b/doc/man/nvme_write.2 new file mode 100644 index 0000000..5f93252 --- /dev/null +++ b/doc/man/nvme_write.2 @@ -0,0 +1,12 @@ +.TH "nvme_write" 9 "nvme_write" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_write \- Submit an nvme user write command +.SH SYNOPSIS +.B "int" nvme_write +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_write_uncorrectable.2 b/doc/man/nvme_write_uncorrectable.2 new file mode 100644 index 0000000..c421bd1 --- /dev/null +++ b/doc/man/nvme_write_uncorrectable.2 @@ -0,0 +1,17 @@ +.TH "nvme_write_uncorrectable" 9 "nvme_write_uncorrectable" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_write_uncorrectable \- Submit an nvme write uncorrectable command +.SH SYNOPSIS +.B "int" nvme_write_uncorrectable +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "DESCRIPTION" +The Write Uncorrectable command marks a range of logical blocks as invalid. +When the specified logical block(s) are read after this operation, a failure +is returned with Unrecovered Read Error status. To clear the invalid logical +block status, a write operation on those logical blocks is required. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_write_zeros.2 b/doc/man/nvme_write_zeros.2 new file mode 100644 index 0000000..4bd47ca --- /dev/null +++ b/doc/man/nvme_write_zeros.2 @@ -0,0 +1,17 @@ +.TH "nvme_write_zeros" 9 "nvme_write_zeros" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_write_zeros \- Submit an nvme write zeroes command +.SH SYNOPSIS +.B "int" nvme_write_zeros +.BI "(struct nvme_io_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_io_args\fP argument structure +.SH "DESCRIPTION" +The Write Zeroes command sets a range of logical blocks to zero. After +successful completion of this command, the value returned by subsequent +reads of logical blocks in this range shall be all bytes cleared to 0h until +a write occurs to this LBA range. +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_append.2 b/doc/man/nvme_zns_append.2 new file mode 100644 index 0000000..29d3cdd --- /dev/null +++ b/doc/man/nvme_zns_append.2 @@ -0,0 +1,12 @@ +.TH "nvme_zns_append" 9 "nvme_zns_append" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_append \- Append data to a zone +.SH SYNOPSIS +.B "int" nvme_zns_append +.BI "(struct nvme_zns_append_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_zns_append_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_changed_zone_log.2 b/doc/man/nvme_zns_changed_zone_log.2 new file mode 100644 index 0000000..b334102 --- /dev/null +++ b/doc/man/nvme_zns_changed_zone_log.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_zns_changed_zone_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zns_changed_zone_log \- ZNS Changed Zone List log +.SH SYNOPSIS +struct nvme_zns_changed_zone_log { +.br +.BI " __le16 nrzid;" +.br +.BI " __u8 rsvd2[6];" +.br +.BI " __le64 zid[NVME_ZNS_CHANGED_ZONES_MAX];" +.br +.BI " +}; +.br + +.SH Members +.IP "nrzid" 12 +Number of Zone Identifiers +.IP "rsvd2" 12 +Reserved +.IP "zid" 12 +Zone Identifier diff --git a/doc/man/nvme_zns_desc.2 b/doc/man/nvme_zns_desc.2 new file mode 100644 index 0000000..5628f08 --- /dev/null +++ b/doc/man/nvme_zns_desc.2 @@ -0,0 +1,47 @@ +.TH "libnvme" 9 "struct nvme_zns_desc" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zns_desc \- Zone Descriptor Data Structure +.SH SYNOPSIS +struct nvme_zns_desc { +.br +.BI " __u8 zt;" +.br +.BI " __u8 zs;" +.br +.BI " __u8 za;" +.br +.BI " __u8 zai;" +.br +.BI " __u8 rsvd4[4];" +.br +.BI " __le64 zcap;" +.br +.BI " __le64 zslba;" +.br +.BI " __le64 wp;" +.br +.BI " __u8 rsvd32[32];" +.br +.BI " +}; +.br + +.SH Members +.IP "zt" 12 +Zone Type +.IP "zs" 12 +Zone State +.IP "za" 12 +Zone Attributes +.IP "zai" 12 +Zone Attributes Information +.IP "rsvd4" 12 +Reserved +.IP "zcap" 12 +Zone Capacity +.IP "zslba" 12 +Zone Start Logical Block Address +.IP "wp" 12 +Write Pointer +.IP "rsvd32" 12 +Reserved diff --git a/doc/man/nvme_zns_id_ctrl.2 b/doc/man/nvme_zns_id_ctrl.2 new file mode 100644 index 0000000..0291be2 --- /dev/null +++ b/doc/man/nvme_zns_id_ctrl.2 @@ -0,0 +1,19 @@ +.TH "libnvme" 9 "struct nvme_zns_id_ctrl" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zns_id_ctrl \- I/O Command Set Specific Identify Controller Data Structure for the Zoned Namespace Command Set +.SH SYNOPSIS +struct nvme_zns_id_ctrl { +.br +.BI " __u8 zasl;" +.br +.BI " __u8 rsvd1[4095];" +.br +.BI " +}; +.br + +.SH Members +.IP "zasl" 12 +Zone Append Size Limit +.IP "rsvd1" 12 +Reserved diff --git a/doc/man/nvme_zns_id_ns.2 b/doc/man/nvme_zns_id_ns.2 new file mode 100644 index 0000000..1bfc005 --- /dev/null +++ b/doc/man/nvme_zns_id_ns.2 @@ -0,0 +1,87 @@ +.TH "libnvme" 9 "struct nvme_zns_id_ns" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zns_id_ns \- Zoned Namespace Command Set Specific Identify Namespace Data Structure +.SH SYNOPSIS +struct nvme_zns_id_ns { +.br +.BI " __le16 zoc;" +.br +.BI " __le16 ozcs;" +.br +.BI " __le32 mar;" +.br +.BI " __le32 mor;" +.br +.BI " __le32 rrl;" +.br +.BI " __le32 frl;" +.br +.BI " __le32 rrl1;" +.br +.BI " __le32 rrl2;" +.br +.BI " __le32 rrl3;" +.br +.BI " __le32 frl1;" +.br +.BI " __le32 frl2;" +.br +.BI " __le32 frl3;" +.br +.BI " __le32 numzrwa;" +.br +.BI " __le16 zrwafg;" +.br +.BI " __le16 zrwasz;" +.br +.BI " __u8 zrwacap;" +.br +.BI " __u8 rsvd53[2763];" +.br +.BI " struct nvme_zns_lbafe lbafe[64];" +.br +.BI " __u8 vs[256];" +.br +.BI " +}; +.br + +.SH Members +.IP "zoc" 12 +Zone Operation Characteristics +.IP "ozcs" 12 +Optional Zoned Command Support +.IP "mar" 12 +Maximum Active Resources +.IP "mor" 12 +Maximum Open Resources +.IP "rrl" 12 +Reset Recommended Limit +.IP "frl" 12 +Finish Recommended Limit +.IP "rrl1" 12 +Reset Recommended Limit 1 +.IP "rrl2" 12 +Reset Recommended Limit 2 +.IP "rrl3" 12 +Reset Recommended Limit 3 +.IP "frl1" 12 +Finish Recommended Limit 1 +.IP "frl2" 12 +Finish Recommended Limit 2 +.IP "frl3" 12 +Finish Recommended Limit 3 +.IP "numzrwa" 12 +Number of ZRWA Resources +.IP "zrwafg" 12 +ZRWA Flush Granularity +.IP "zrwasz" 12 +ZRWA Size +.IP "zrwacap" 12 +ZRWA Capability +.IP "rsvd53" 12 +Reserved +.IP "lbafe" 12 +LBA Format Extension +.IP "vs" 12 +Vendor Specific diff --git a/doc/man/nvme_zns_identify_ctrl.2 b/doc/man/nvme_zns_identify_ctrl.2 new file mode 100644 index 0000000..0334264 --- /dev/null +++ b/doc/man/nvme_zns_identify_ctrl.2 @@ -0,0 +1,15 @@ +.TH "nvme_zns_identify_ctrl" 9 "nvme_zns_identify_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_identify_ctrl \- ZNS identify controller data +.SH SYNOPSIS +.B "int" nvme_zns_identify_ctrl +.BI "(int fd " "," +.BI "struct nvme_zns_id_ctrl *id " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "id" 12 +User space destination address to transfer the data +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_identify_ns.2 b/doc/man/nvme_zns_identify_ns.2 new file mode 100644 index 0000000..7169397 --- /dev/null +++ b/doc/man/nvme_zns_identify_ns.2 @@ -0,0 +1,18 @@ +.TH "nvme_zns_identify_ns" 9 "nvme_zns_identify_ns" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_identify_ns \- ZNS identify namespace data +.SH SYNOPSIS +.B "int" nvme_zns_identify_ns +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "struct nvme_zns_id_ns *data " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace to identify +.IP "data" 12 +User space destination address to transfer the data +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_lbafe.2 b/doc/man/nvme_zns_lbafe.2 new file mode 100644 index 0000000..0fdb2c5 --- /dev/null +++ b/doc/man/nvme_zns_lbafe.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_zns_lbafe" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zns_lbafe \- LBA Format Extension Data Structure +.SH SYNOPSIS +struct nvme_zns_lbafe { +.br +.BI " __le64 zsze;" +.br +.BI " __u8 zdes;" +.br +.BI " __u8 rsvd9[7];" +.br +.BI " +}; +.br + +.SH Members +.IP "zsze" 12 +Zone Size +.IP "zdes" 12 +Zone Descriptor Extension Size +.IP "rsvd9" 12 +reserved diff --git a/doc/man/nvme_zns_mgmt_recv.2 b/doc/man/nvme_zns_mgmt_recv.2 new file mode 100644 index 0000000..2f88f27 --- /dev/null +++ b/doc/man/nvme_zns_mgmt_recv.2 @@ -0,0 +1,12 @@ +.TH "nvme_zns_mgmt_recv" 9 "nvme_zns_mgmt_recv" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_mgmt_recv \- ZNS management receive command +.SH SYNOPSIS +.B "int" nvme_zns_mgmt_recv +.BI "(struct nvme_zns_mgmt_recv_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_zns_mgmt_recv_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_mgmt_send.2 b/doc/man/nvme_zns_mgmt_send.2 new file mode 100644 index 0000000..40d16a4 --- /dev/null +++ b/doc/man/nvme_zns_mgmt_send.2 @@ -0,0 +1,12 @@ +.TH "nvme_zns_mgmt_send" 9 "nvme_zns_mgmt_send" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_mgmt_send \- ZNS management send command +.SH SYNOPSIS +.B "int" nvme_zns_mgmt_send +.BI "(struct nvme_zns_mgmt_send_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +\fIstruct nvme_zns_mgmt_send_args\fP argument structure +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_recv_action.2 b/doc/man/nvme_zns_recv_action.2 new file mode 100644 index 0000000..4063c74 --- /dev/null +++ b/doc/man/nvme_zns_recv_action.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvme_zns_recv_action" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_recv_action \- Zone Management Receive - Zone Receive Action Specific Features +.SH SYNOPSIS +enum nvme_zns_recv_action { +.br +.BI " NVME_ZNS_ZRA_REPORT_ZONES" +, +.br +.br +.BI " NVME_ZNS_ZRA_EXTENDED_REPORT_ZONES" + +}; +.SH Constants +.IP "NVME_ZNS_ZRA_REPORT_ZONES" 12 +Report Zones +.IP "NVME_ZNS_ZRA_EXTENDED_REPORT_ZONES" 12 +Extended Report Zones diff --git a/doc/man/nvme_zns_report_options.2 b/doc/man/nvme_zns_report_options.2 new file mode 100644 index 0000000..c09de4a --- /dev/null +++ b/doc/man/nvme_zns_report_options.2 @@ -0,0 +1,54 @@ +.TH "libnvme" 9 "enum nvme_zns_report_options" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_report_options \- Zone Management Receive - Zone Receive Action Specific Field +.SH SYNOPSIS +enum nvme_zns_report_options { +.br +.BI " NVME_ZNS_ZRAS_REPORT_ALL" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_EMPTY" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_IMPL_OPENED" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_EXPL_OPENED" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_CLOSED" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_FULL" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_READ_ONLY" +, +.br +.br +.BI " NVME_ZNS_ZRAS_REPORT_OFFLINE" + +}; +.SH Constants +.IP "NVME_ZNS_ZRAS_REPORT_ALL" 12 +List all zones +.IP "NVME_ZNS_ZRAS_REPORT_EMPTY" 12 +List the zones in the ZSE:Empty state +.IP "NVME_ZNS_ZRAS_REPORT_IMPL_OPENED" 12 +List the zones in the ZSIO:Implicitly Opened state +.IP "NVME_ZNS_ZRAS_REPORT_EXPL_OPENED" 12 +List the zones in the ZSEO:Explicitly Opened state +.IP "NVME_ZNS_ZRAS_REPORT_CLOSED" 12 +List the zones in the ZSC:Closed state +.IP "NVME_ZNS_ZRAS_REPORT_FULL" 12 +List the zones in the ZSF:Full state +.IP "NVME_ZNS_ZRAS_REPORT_READ_ONLY" 12 +List the zones in the ZSRO:Read Only state +.IP "NVME_ZNS_ZRAS_REPORT_OFFLINE" 12 +List the zones in the ZSO:Offline state diff --git a/doc/man/nvme_zns_report_zones.2 b/doc/man/nvme_zns_report_zones.2 new file mode 100644 index 0000000..777efbf --- /dev/null +++ b/doc/man/nvme_zns_report_zones.2 @@ -0,0 +1,39 @@ +.TH "nvme_zns_report_zones" 9 "nvme_zns_report_zones" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvme_zns_report_zones \- Return the list of zones +.SH SYNOPSIS +.B "int" nvme_zns_report_zones +.BI "(int fd " "," +.BI "__u32 nsid " "," +.BI "__u64 slba " "," +.BI "enum nvme_zns_report_options opts " "," +.BI "bool extended " "," +.BI "bool partial " "," +.BI "__u32 data_len " "," +.BI "void *data " "," +.BI "__u32 timeout " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "fd" 12 +File descriptor of nvme device +.IP "nsid" 12 +Namespace ID +.IP "slba" 12 +Starting LBA +.IP "opts" 12 +Reporting options +.IP "extended" 12 +Extended report +.IP "partial" 12 +Partial report requested +.IP "data_len" 12 +Length of the data buffer +.IP "data" 12 +Userspace address of the report zones data +.IP "timeout" 12 +timeout in ms +.IP "result" 12 +The command completion result from CQE dword0 +.SH "RETURN" +The nvme command status if a response was received (see +\fIenum nvme_status_field\fP) or -1 with errno set otherwise. diff --git a/doc/man/nvme_zns_send_action.2 b/doc/man/nvme_zns_send_action.2 new file mode 100644 index 0000000..afc38fd --- /dev/null +++ b/doc/man/nvme_zns_send_action.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_zns_send_action" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_send_action \- Zone Management Send - Zone Send Action +.SH SYNOPSIS +enum nvme_zns_send_action { +.br +.BI " NVME_ZNS_ZSA_CLOSE" +, +.br +.br +.BI " NVME_ZNS_ZSA_FINISH" +, +.br +.br +.BI " NVME_ZNS_ZSA_OPEN" +, +.br +.br +.BI " NVME_ZNS_ZSA_RESET" +, +.br +.br +.BI " NVME_ZNS_ZSA_OFFLINE" +, +.br +.br +.BI " NVME_ZNS_ZSA_SET_DESC_EXT" +, +.br +.br +.BI " NVME_ZNS_ZSA_ZRWA_FLUSH" + +}; +.SH Constants +.IP "NVME_ZNS_ZSA_CLOSE" 12 +Close Zone +.IP "NVME_ZNS_ZSA_FINISH" 12 +Finish Zone +.IP "NVME_ZNS_ZSA_OPEN" 12 +Open Zone +.IP "NVME_ZNS_ZSA_RESET" 12 +Reset Zone +.IP "NVME_ZNS_ZSA_OFFLINE" 12 +Offline Zone +.IP "NVME_ZNS_ZSA_SET_DESC_EXT" 12 +Set Zone Descriptor Extension +.IP "NVME_ZNS_ZSA_ZRWA_FLUSH" 12 +Flush diff --git a/doc/man/nvme_zns_za.2 b/doc/man/nvme_zns_za.2 new file mode 100644 index 0000000..7beb8cb --- /dev/null +++ b/doc/man/nvme_zns_za.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "enum nvme_zns_za" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_za \- Zone Descriptor Data Structure +.SH SYNOPSIS +enum nvme_zns_za { +.br +.BI " NVME_ZNS_ZA_ZFC" +, +.br +.br +.BI " NVME_ZNS_ZA_FZR" +, +.br +.br +.BI " NVME_ZNS_ZA_RZR" +, +.br +.br +.BI " NVME_ZNS_ZA_ZRWAV" +, +.br +.br +.BI " NVME_ZNS_ZA_ZDEV" + +}; +.SH Constants +.IP "NVME_ZNS_ZA_ZFC" 12 +Zone Finished by Controller +.IP "NVME_ZNS_ZA_FZR" 12 +Finish Zone Recommended +.IP "NVME_ZNS_ZA_RZR" 12 +Reset Zone Recommended +.IP "NVME_ZNS_ZA_ZRWAV" 12 +.IP "NVME_ZNS_ZA_ZDEV" 12 +Zone Descriptor Extension Valid diff --git a/doc/man/nvme_zns_zs.2 b/doc/man/nvme_zns_zs.2 new file mode 100644 index 0000000..f84a29e --- /dev/null +++ b/doc/man/nvme_zns_zs.2 @@ -0,0 +1,48 @@ +.TH "libnvme" 9 "enum nvme_zns_zs" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_zs \- Zone Descriptor Data Structure - Zone State +.SH SYNOPSIS +enum nvme_zns_zs { +.br +.BI " NVME_ZNS_ZS_EMPTY" +, +.br +.br +.BI " NVME_ZNS_ZS_IMPL_OPEN" +, +.br +.br +.BI " NVME_ZNS_ZS_EXPL_OPEN" +, +.br +.br +.BI " NVME_ZNS_ZS_CLOSED" +, +.br +.br +.BI " NVME_ZNS_ZS_READ_ONLY" +, +.br +.br +.BI " NVME_ZNS_ZS_FULL" +, +.br +.br +.BI " NVME_ZNS_ZS_OFFLINE" + +}; +.SH Constants +.IP "NVME_ZNS_ZS_EMPTY" 12 +Empty state +.IP "NVME_ZNS_ZS_IMPL_OPEN" 12 +Implicitly open state +.IP "NVME_ZNS_ZS_EXPL_OPEN" 12 +Explicitly open state +.IP "NVME_ZNS_ZS_CLOSED" 12 +Closed state +.IP "NVME_ZNS_ZS_READ_ONLY" 12 +Read only state +.IP "NVME_ZNS_ZS_FULL" 12 +Full state +.IP "NVME_ZNS_ZS_OFFLINE" 12 +Offline state diff --git a/doc/man/nvme_zns_zt.2 b/doc/man/nvme_zns_zt.2 new file mode 100644 index 0000000..ce74dfe --- /dev/null +++ b/doc/man/nvme_zns_zt.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvme_zns_zt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvme_zns_zt \- Zone Descriptor Data Structure - Zone Type +.SH SYNOPSIS +enum nvme_zns_zt { +.br +.BI " NVME_ZONE_TYPE_SEQWRITE_REQ" + +}; +.SH Constants +.IP "NVME_ZONE_TYPE_SEQWRITE_REQ" 12 +Sequential Write Required diff --git a/doc/man/nvme_zone_report.2 b/doc/man/nvme_zone_report.2 new file mode 100644 index 0000000..f056485 --- /dev/null +++ b/doc/man/nvme_zone_report.2 @@ -0,0 +1,23 @@ +.TH "libnvme" 9 "struct nvme_zone_report" "January 2023" "API Manual" LINUX +.SH NAME +struct nvme_zone_report \- Report Zones Data Structure +.SH SYNOPSIS +struct nvme_zone_report { +.br +.BI " __le64 nr_zones;" +.br +.BI " __u8 rsvd8[56];" +.br +.BI " struct nvme_zns_desc entries[];" +.br +.BI " +}; +.br + +.SH Members +.IP "nr_zones" 12 +Number of descriptors in \fIentries\fP +.IP "rsvd8" 12 +Reserved +.IP "entries" 12 +Zoned namespace descriptors diff --git a/doc/man/nvmf_add_ctrl.2 b/doc/man/nvmf_add_ctrl.2 new file mode 100644 index 0000000..0bf0093 --- /dev/null +++ b/doc/man/nvmf_add_ctrl.2 @@ -0,0 +1,21 @@ +.TH "nvmf_add_ctrl" 9 "nvmf_add_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_add_ctrl \- Connect a controller and update topology +.SH SYNOPSIS +.B "int" nvmf_add_ctrl +.BI "(nvme_host_t h " "," +.BI "nvme_ctrl_t c " "," +.BI "const struct nvme_fabrics_config *cfg " ");" +.SH ARGUMENTS +.IP "h" 12 +Host to which the controller should be attached +.IP "c" 12 +Controller to be connected +.IP "cfg" 12 +Default configuration for the controller +.SH "DESCRIPTION" +Issues a 'connect' command to the NVMe-oF controller and inserts \fIc\fP +into the topology using \fIh\fP as parent. +\fIc\fP must be initialized and not connected to the topology. +.SH "RETURN" +0 on success; on failure errno is set and -1 is returned. diff --git a/doc/man/nvmf_addr_family.2 b/doc/man/nvmf_addr_family.2 new file mode 100644 index 0000000..6de153a --- /dev/null +++ b/doc/man/nvmf_addr_family.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "enum nvmf_addr_family" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_addr_family \- Address Family codes for Discovery Log Page entry ADRFAM field +.SH SYNOPSIS +enum nvmf_addr_family { +.br +.BI " NVMF_ADDR_FAMILY_PCI" +, +.br +.br +.BI " NVMF_ADDR_FAMILY_IP4" +, +.br +.br +.BI " NVMF_ADDR_FAMILY_IP6" +, +.br +.br +.BI " NVMF_ADDR_FAMILY_IB" +, +.br +.br +.BI " NVMF_ADDR_FAMILY_FC" +, +.br +.br +.BI " NVMF_ADDR_FAMILY_LOOP" + +}; +.SH Constants +.IP "NVMF_ADDR_FAMILY_PCI" 12 +PCIe +.IP "NVMF_ADDR_FAMILY_IP4" 12 +AF_INET: IPv4 address family. +.IP "NVMF_ADDR_FAMILY_IP6" 12 +AF_INET6: IPv6 address family. +.IP "NVMF_ADDR_FAMILY_IB" 12 +AF_IB: InfiniBand address family. +.IP "NVMF_ADDR_FAMILY_FC" 12 +Fibre Channel address family. +.IP "NVMF_ADDR_FAMILY_LOOP" 12 +Intra-host Transport (i.e., loopback), reserved +for host usage. diff --git a/doc/man/nvmf_adrfam_str.2 b/doc/man/nvmf_adrfam_str.2 new file mode 100644 index 0000000..e462754 --- /dev/null +++ b/doc/man/nvmf_adrfam_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_adrfam_str" 9 "nvmf_adrfam_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_adrfam_str \- Decode ADRFAM field +.SH SYNOPSIS +.B "const char *" nvmf_adrfam_str +.BI "(__u8 adrfam " ");" +.SH ARGUMENTS +.IP "adrfam" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the address family field in the discovery +log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_cms_str.2 b/doc/man/nvmf_cms_str.2 new file mode 100644 index 0000000..b7a72aa --- /dev/null +++ b/doc/man/nvmf_cms_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_cms_str" 9 "nvmf_cms_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_cms_str \- Decode RDMA connection management service field +.SH SYNOPSIS +.B "const char *" nvmf_cms_str +.BI "(__u8 cms " ");" +.SH ARGUMENTS +.IP "cms" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the RDMA connection management service field in the discovery +log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_connect_data.2 b/doc/man/nvmf_connect_data.2 new file mode 100644 index 0000000..3eec165 --- /dev/null +++ b/doc/man/nvmf_connect_data.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvmf_connect_data" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_connect_data \- Data payload for the 'connect' command +.SH SYNOPSIS +struct nvmf_connect_data { +.br +.BI " __u8 hostid[16];" +.br +.BI " __le16 cntlid;" +.br +.BI " char rsvd4[238];" +.br +.BI " char subsysnqn[NVME_NQN_LENGTH];" +.br +.BI " char hostnqn[NVME_NQN_LENGTH];" +.br +.BI " char rsvd5[256];" +.br +.BI " +}; +.br + +.SH Members +.IP "hostid" 12 +Host ID of the connecting host +.IP "cntlid" 12 +Requested controller ID +.IP "rsvd4" 12 +Reserved +.IP "subsysnqn" 12 +Subsystem NQN to connect to +.IP "hostnqn" 12 +Host NQN of the connecting host +.IP "rsvd5" 12 +Reserved diff --git a/doc/man/nvmf_connect_disc_entry.2 b/doc/man/nvmf_connect_disc_entry.2 new file mode 100644 index 0000000..f85bf73 --- /dev/null +++ b/doc/man/nvmf_connect_disc_entry.2 @@ -0,0 +1,20 @@ +.TH "nvmf_connect_disc_entry" 9 "nvmf_connect_disc_entry" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_connect_disc_entry \- Connect controller based on the discovery log page entry +.SH SYNOPSIS +.B "nvme_ctrl_t" nvmf_connect_disc_entry +.BI "(nvme_host_t h " "," +.BI "struct nvmf_disc_log_entry *e " "," +.BI "const struct nvme_fabrics_config *defcfg " "," +.BI "bool *discover " ");" +.SH ARGUMENTS +.IP "h" 12 +Host to which the controller should be connected +.IP "e" 12 +Discovery log page entry +.IP "defcfg" 12 +Default configuration to be used for the new controller +.IP "discover" 12 +Set to 'true' if the new controller is a discovery controller +.SH "RETURN" +Pointer to the new controller diff --git a/doc/man/nvmf_default_config.2 b/doc/man/nvmf_default_config.2 new file mode 100644 index 0000000..0261fd3 --- /dev/null +++ b/doc/man/nvmf_default_config.2 @@ -0,0 +1,11 @@ +.TH "nvmf_default_config" 9 "nvmf_default_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_default_config \- Default values for fabrics configuration +.SH SYNOPSIS +.B "void" nvmf_default_config +.BI "(struct nvme_fabrics_config *cfg " ");" +.SH ARGUMENTS +.IP "cfg" 12 +config values to set +.SH "DESCRIPTION" +Initializes \fIcfg\fP with default values. diff --git a/doc/man/nvmf_dim_data.2 b/doc/man/nvmf_dim_data.2 new file mode 100644 index 0000000..b4ca819 --- /dev/null +++ b/doc/man/nvmf_dim_data.2 @@ -0,0 +1,63 @@ +.TH "libnvme" 9 "struct nvmf_dim_data" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_dim_data \- Discovery Information Management (DIM) - Data +.SH SYNOPSIS +struct nvmf_dim_data { +.br +.BI " __le32 tdl;" +.br +.BI " __u8 rsvd4[4];" +.br +.BI " __le64 nument;" +.br +.BI " __le16 entfmt;" +.br +.BI " __le16 etype;" +.br +.BI " __u8 portlcl;" +.br +.BI " __u8 rsvd21;" +.br +.BI " __le16 ektype;" +.br +.BI " char eid[NVME_NQN_LENGTH];" +.br +.BI " char ename[NVMF_ENAME_LEN];" +.br +.BI " char ever[NVMF_EVER_LEN];" +.br +.BI " __u8 rsvd600[424];" +.br +.BI " union nvmf_die die[];" +.br +.BI " +}; +.br + +.SH Members +.IP "tdl" 12 +Total Data Length +.IP "rsvd4" 12 +Reserved +.IP "nument" 12 +Number of entries +.IP "entfmt" 12 +Entry Format (\fIenum nvmf_dim_entfmt\fP) +.IP "etype" 12 +Entity Type (\fIenum nvmf_dim_etype\fP) +.IP "portlcl" 12 +Port Local +.IP "rsvd21" 12 +Reserved +.IP "ektype" 12 +Entry Key Type +.IP "eid" 12 +Entity Identifier (e.g. Host NQN) +.IP "ename" 12 +Entity Name (e.g. hostname) +.IP "ever" 12 +Entity Version (e.g. OS Name/Version) +.IP "rsvd600" 12 +Reserved +.IP "die" 12 +Discovery Information Entry (see \fInument\fP above) diff --git a/doc/man/nvmf_dim_entfmt.2 b/doc/man/nvmf_dim_entfmt.2 new file mode 100644 index 0000000..eb36fee --- /dev/null +++ b/doc/man/nvmf_dim_entfmt.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvmf_dim_entfmt" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_dim_entfmt \- Discovery Information Management Entry Format +.SH SYNOPSIS +enum nvmf_dim_entfmt { +.br +.BI " NVMF_DIM_ENTFMT_BASIC" +, +.br +.br +.BI " NVMF_DIM_ENTFMT_EXTENDED" + +}; +.SH Constants +.IP "NVMF_DIM_ENTFMT_BASIC" 12 +Basic discovery information entry +.IP "NVMF_DIM_ENTFMT_EXTENDED" 12 +Extended discovery information entry diff --git a/doc/man/nvmf_dim_etype.2 b/doc/man/nvmf_dim_etype.2 new file mode 100644 index 0000000..dca2311 --- /dev/null +++ b/doc/man/nvmf_dim_etype.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvmf_dim_etype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_dim_etype \- Discovery Information Management Entity Type +.SH SYNOPSIS +enum nvmf_dim_etype { +.br +.BI " NVMF_DIM_ETYPE_HOST" +, +.br +.br +.BI " NVMF_DIM_ETYPE_DDC" +, +.br +.br +.BI " NVMF_DIM_ETYPE_CDC" + +}; +.SH Constants +.IP "NVMF_DIM_ETYPE_HOST" 12 +Host +.IP "NVMF_DIM_ETYPE_DDC" 12 +Direct Discovery controller +.IP "NVMF_DIM_ETYPE_CDC" 12 +Centralized Discovery controller diff --git a/doc/man/nvmf_dim_tas.2 b/doc/man/nvmf_dim_tas.2 new file mode 100644 index 0000000..8ad2947 --- /dev/null +++ b/doc/man/nvmf_dim_tas.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "enum nvmf_dim_tas" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_dim_tas \- Discovery Information Management Task +.SH SYNOPSIS +enum nvmf_dim_tas { +.br +.BI " NVMF_DIM_TAS_REGISTER" +, +.br +.br +.BI " NVMF_DIM_TAS_DEREGISTER" +, +.br +.br +.BI " NVMF_DIM_TAS_UPDATE" + +}; +.SH Constants +.IP "NVMF_DIM_TAS_REGISTER" 12 +Register +.IP "NVMF_DIM_TAS_DEREGISTER" 12 +Deregister +.IP "NVMF_DIM_TAS_UPDATE" 12 +Update diff --git a/doc/man/nvmf_disc_eflags.2 b/doc/man/nvmf_disc_eflags.2 new file mode 100644 index 0000000..3eaa582 --- /dev/null +++ b/doc/man/nvmf_disc_eflags.2 @@ -0,0 +1,46 @@ +.TH "libnvme" 9 "enum nvmf_disc_eflags" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_disc_eflags \- Discovery Log Page entry flags. +.SH SYNOPSIS +enum nvmf_disc_eflags { +.br +.BI " NVMF_DISC_EFLAGS_NONE" +, +.br +.br +.BI " NVMF_DISC_EFLAGS_DUPRETINFO" +, +.br +.br +.BI " NVMF_DISC_EFLAGS_EPCSD" +, +.br +.br +.BI " NVMF_DISC_EFLAGS_NCC" + +}; +.SH Constants +.IP "NVMF_DISC_EFLAGS_NONE" 12 +Indicates that none of the DUPRETINFO or EPCSD +features are supported. +.IP "NVMF_DISC_EFLAGS_DUPRETINFO" 12 +Duplicate Returned Information (DUPRETINFO): +Indicates that using the content of this entry +to access this Discovery Service returns the same +information that is returned by using the content +of other entries in this log page that also have +this flag set. +.IP "NVMF_DISC_EFLAGS_EPCSD" 12 +Explicit Persistent Connection Support for Discovery (EPCSD): +Indicates that Explicit Persistent Connections are +supported for the Discovery controller. +.IP "NVMF_DISC_EFLAGS_NCC" 12 +No CDC Connectivity (NCC): If set to +'1', then no DDC that describes this entry +is currently connected to the CDC. If +cleared to '0', then at least one DDC that +describes this entry is currently +connected to the CDC. If the Discovery +controller returning this log page is not +a CDC, then this bit shall be cleared to +'0' and should be ignored by the host. diff --git a/doc/man/nvmf_disc_log_entry.2 b/doc/man/nvmf_disc_log_entry.2 new file mode 100644 index 0000000..e2a53f4 --- /dev/null +++ b/doc/man/nvmf_disc_log_entry.2 @@ -0,0 +1,96 @@ +.TH "libnvme" 9 "struct nvmf_disc_log_entry" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_disc_log_entry \- Discovery Log Page entry +.SH SYNOPSIS +struct nvmf_disc_log_entry { +.br +.BI " __u8 trtype;" +.br +.BI " __u8 adrfam;" +.br +.BI " __u8 subtype;" +.br +.BI " __u8 treq;" +.br +.BI " __le16 portid;" +.br +.BI " __le16 cntlid;" +.br +.BI " __le16 asqsz;" +.br +.BI " __le16 eflags;" +.br +.BI " __u8 rsvd12[20];" +.br +.BI " char trsvcid[NVMF_TRSVCID_SIZE];" +.br +.BI " __u8 rsvd64[192];" +.br +.BI " char subnqn[NVME_NQN_LENGTH];" +.br +.BI " char traddr[NVMF_TRADDR_SIZE];" +.br +.BI " union nvmf_tsas tsas;" +.br +.BI " +}; +.br + +.SH Members +.IP "trtype" 12 +Transport Type (TRTYPE): Specifies the NVMe Transport type. +See \fIenum nvmf_trtype\fP. +.IP "adrfam" 12 +Address Family (ADRFAM): Specifies the address family. +See \fIenum nvmf_addr_family\fP. +.IP "subtype" 12 +Subsystem Type (SUBTYPE): Specifies the type of the NVM subsystem +that is indicated in this entry. See \fIenum nvme_subsys_type\fP. +.IP "treq" 12 +Transport Requirements (TREQ): Indicates requirements for the NVMe +Transport. See \fIenum nvmf_treq\fP. +.IP "portid" 12 +Port ID (PORTID): Specifies a particular NVM subsystem port. +Different NVMe Transports or address families may utilize the same +Port ID value (e.g. a Port ID may support both iWARP and RoCE). +.IP "cntlid" 12 +Controller ID (CNTLID): Specifies the controller ID. If the NVM +subsystem uses a dynamic controller model, then this field shall +be set to FFFFh. If the NVM subsystem uses a static controller model, +then this field may be set to a specific controller ID (values 0h +to FFEFh are valid). If the NVM subsystem uses a static controller +model and the value indicated is FFFEh, then the host should remember +the Controller ID returned as part of the Fabrics Connect command +in order to re-establish an association in the future with the same +controller. +.IP "asqsz" 12 +Admin Max SQ Size (ASQSZ): Specifies the maximum size of an Admin +Submission Queue. This applies to all controllers in the NVM +subsystem. The value shall be a minimum of 32 entries. +.IP "eflags" 12 +Entry Flags (EFLAGS): Indicates additional information related to +the current entry. See \fIenum nvmf_disc_eflags\fP. +.IP "rsvd12" 12 +Reserved +.IP "trsvcid" 12 +Transport Service Identifier (TRSVCID): Specifies the NVMe Transport +service identifier as an ASCII string. The NVMe Transport service +identifier is specified by the associated NVMe Transport binding +specification. +.IP "rsvd64" 12 +Reserved +.IP "subnqn" 12 +NVM Subsystem Qualified Name (SUBNQN): NVMe Qualified Name (NQN) +that uniquely identifies the NVM subsystem. For a subsystem, if that +Discovery subsystem has a unique NQN (i.e., the NVM Subsystem NVMe +Qualified Name (SUBNQN) field in that Discovery subsystem's Identify +Controller data structure contains a unique NQN value), then the +value returned shall be that unique NQN. If the Discovery subsystem +does not have a unique NQN, then the value returned shall be the +well-known Discovery Service NQN (nqn.2014-08.org.nvmexpress.discovery). +.IP "traddr" 12 +Transport Address (TRADDR): Specifies the address of the NVM subsystem +that may be used for a Connect command as an ASCII string. The +Address Family field describes the reference for parsing this field. +.IP "tsas" 12 +Transport specific attribute settings diff --git a/doc/man/nvmf_discovery_log.2 b/doc/man/nvmf_discovery_log.2 new file mode 100644 index 0000000..c758fe1 --- /dev/null +++ b/doc/man/nvmf_discovery_log.2 @@ -0,0 +1,38 @@ +.TH "libnvme" 9 "struct nvmf_discovery_log" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_discovery_log \- Discovery Log Page (Log Identifier 70h) +.SH SYNOPSIS +struct nvmf_discovery_log { +.br +.BI " __le64 genctr;" +.br +.BI " __le64 numrec;" +.br +.BI " __le16 recfmt;" +.br +.BI " __u8 rsvd14[1006];" +.br +.BI " struct nvmf_disc_log_entry entries[];" +.br +.BI " +}; +.br + +.SH Members +.IP "genctr" 12 +Generation Counter (GENCTR): Indicates the version of the discovery +information, starting at a value of 0h. For each change in the +Discovery Log Page, this counter is incremented by one. If the value +of this field is FFFFFFFF_FFFFFFFFh, then the field shall be cleared +to 0h when incremented (i.e., rolls over to 0h). +.IP "numrec" 12 +Number of Records (NUMREC): Indicates the number of records +contained in the log. +.IP "recfmt" 12 +Record Format (RECFMT): Specifies the format of the Discovery Log +Page. If a new format is defined, this value is incremented by one. +The format of the record specified in this definition shall be 0h. +.IP "rsvd14" 12 +Reserved +.IP "entries" 12 +Discovery Log Page Entries - see \fIstruct nvmf_disc_log_entry\fP. diff --git a/doc/man/nvmf_eflags_str.2 b/doc/man/nvmf_eflags_str.2 new file mode 100644 index 0000000..402bb2b --- /dev/null +++ b/doc/man/nvmf_eflags_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_eflags_str" 9 "nvmf_eflags_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_eflags_str \- Decode EFLAGS field +.SH SYNOPSIS +.B "const char *" nvmf_eflags_str +.BI "(__u16 eflags " ");" +.SH ARGUMENTS +.IP "eflags" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the EFLAGS field in the discovery log page +entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_exat_len.2 b/doc/man/nvmf_exat_len.2 new file mode 100644 index 0000000..49a3932 --- /dev/null +++ b/doc/man/nvmf_exat_len.2 @@ -0,0 +1,15 @@ +.TH "nvmf_exat_len" 9 "nvmf_exat_len" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_exat_len \- Return length rounded up by 4 +.SH SYNOPSIS +.B "__u16" nvmf_exat_len +.BI "(size_t val_len " ");" +.SH ARGUMENTS +.IP "val_len" 12 +Value length +.SH "DESCRIPTION" +Return the size in bytes, rounded to a multiple of 4 (e.g., size of +__u32), of the buffer needed to hold the exat value of size +\fIval_len\fP. +.SH "RETURN" +Length rounded up by 4 diff --git a/doc/man/nvmf_exattype.2 b/doc/man/nvmf_exattype.2 new file mode 100644 index 0000000..16d237b --- /dev/null +++ b/doc/man/nvmf_exattype.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvmf_exattype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_exattype \- Extended Attribute Type +.SH SYNOPSIS +enum nvmf_exattype { +.br +.BI " NVMF_EXATTYPE_HOSTID" +, +.br +.br +.BI " NVMF_EXATTYPE_SYMNAME" + +}; +.SH Constants +.IP "NVMF_EXATTYPE_HOSTID" 12 +Host Identifier +.IP "NVMF_EXATTYPE_SYMNAME" 12 +Symblic Name diff --git a/doc/man/nvmf_ext_attr.2 b/doc/man/nvmf_ext_attr.2 new file mode 100644 index 0000000..5d581c8 --- /dev/null +++ b/doc/man/nvmf_ext_attr.2 @@ -0,0 +1,24 @@ +.TH "libnvme" 9 "struct nvmf_ext_attr" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_ext_attr \- Extended Attribute (EXAT) +.SH SYNOPSIS +struct nvmf_ext_attr { +.br +.BI " __le16 exattype;" +.br +.BI " __le16 exatlen;" +.br +.BI " __u8 exatval[];" +.br +.BI " +}; +.br + +.SH Members +.IP "exattype" 12 +Extended Attribute Type (EXATTYPE) - see \fIenum\fP nvmf_exattype +.IP "exatlen" 12 +Extended Attribute Length (EXATLEN) +.IP "exatval" 12 +Extended Attribute Value (EXATVAL) - size allocated for array +must be a multiple of 4 bytes diff --git a/doc/man/nvmf_ext_die.2 b/doc/man/nvmf_ext_die.2 new file mode 100644 index 0000000..ccb682f --- /dev/null +++ b/doc/man/nvmf_ext_die.2 @@ -0,0 +1,79 @@ +.TH "libnvme" 9 "struct nvmf_ext_die" "January 2023" "API Manual" LINUX +.SH NAME +struct nvmf_ext_die \- Extended Discovery Information Entry (DIE) +.SH SYNOPSIS +struct nvmf_ext_die { +.br +.BI " __u8 trtype;" +.br +.BI " __u8 adrfam;" +.br +.BI " __u8 subtype;" +.br +.BI " __u8 treq;" +.br +.BI " __le16 portid;" +.br +.BI " __le16 cntlid;" +.br +.BI " __le16 asqsz;" +.br +.BI " __u8 rsvd10[22];" +.br +.BI " char trsvcid[NVMF_TRSVCID_SIZE];" +.br +.BI " __u8 resv64[192];" +.br +.BI " char nqn[NVME_NQN_LENGTH];" +.br +.BI " char traddr[NVMF_TRADDR_SIZE];" +.br +.BI " union nvmf_tsas tsas;" +.br +.BI " __le32 tel;" +.br +.BI " __le16 numexat;" +.br +.BI " __u8 resv1030[2];" +.br +.BI " struct nvmf_ext_attr exat[];" +.br +.BI " +}; +.br + +.SH Members +.IP "trtype" 12 +Transport Type (\fIenum nvmf_trtype\fP) +.IP "adrfam" 12 +Address Family (\fIenum nvmf_addr_family\fP) +.IP "subtype" 12 +Subsystem Type (\fIenum nvme_subsys_type\fP) +.IP "treq" 12 +Transport Requirements (\fIenum nvmf_treq\fP) +.IP "portid" 12 +Port ID +.IP "cntlid" 12 +Controller ID +.IP "asqsz" 12 +Admin Max SQ Size +.IP "rsvd10" 12 +Reserved +.IP "trsvcid" 12 +Transport Service Identifier +.IP "resv64" 12 +Reserved +.IP "nqn" 12 +NVM Qualified Name +.IP "traddr" 12 +Transport Address +.IP "tsas" 12 +Transport Specific Address Subtype (\fIunion nvmf_tsas\fP) +.IP "tel" 12 +Total Entry Length +.IP "numexat" 12 +Number of Extended Attributes +.IP "resv1030" 12 +Reserved +.IP "exat" 12 +Extended Attributes 0 (\fIstruct nvmf_ext_attr\fP) diff --git a/doc/man/nvmf_get_discovery_log.2 b/doc/man/nvmf_get_discovery_log.2 new file mode 100644 index 0000000..fef0824 --- /dev/null +++ b/doc/man/nvmf_get_discovery_log.2 @@ -0,0 +1,22 @@ +.TH "nvmf_get_discovery_log" 9 "nvmf_get_discovery_log" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_get_discovery_log \- Return the discovery log page +.SH SYNOPSIS +.B "int" nvmf_get_discovery_log +.BI "(nvme_ctrl_t c " "," +.BI "struct nvmf_discovery_log **logp " "," +.BI "int max_retries " ");" +.SH ARGUMENTS +.IP "c" 12 +Discovery controller to use +.IP "logp" 12 +Pointer to the log page to be returned +.IP "max_retries" 12 +Number of retries in case of failure +.SH "DESCRIPTION" +The memory allocated for the log page and returned in \fIlogp\fP +must be freed by the caller using \fBfree\fP. +.SH "NOTE" +Consider using \fBnvmf_get_discovery_wargs\fP instead. +.SH "RETURN" +0 on success; on failure -1 is returned and errno is set diff --git a/doc/man/nvmf_get_discovery_wargs.2 b/doc/man/nvmf_get_discovery_wargs.2 new file mode 100644 index 0000000..d8e77d4 --- /dev/null +++ b/doc/man/nvmf_get_discovery_wargs.2 @@ -0,0 +1,20 @@ +.TH "nvmf_get_discovery_wargs" 9 "nvmf_get_discovery_wargs" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_get_discovery_wargs \- Get the discovery log page with args +.SH SYNOPSIS +.B "struct nvmf_discovery_log *" nvmf_get_discovery_wargs +.BI "(struct nvme_get_discovery_args *args " ");" +.SH ARGUMENTS +.IP "args" 12 +Argument structure +.SH "DESCRIPTION" +This function is similar to \fBnvmf_get_discovery_log\fP, but +takes an extensible \fIargs\fP parameter. \fIargs\fP provides more +options than \fBnvmf_get_discovery_log\fP. + +This function performs a get discovery log page (DLP) command +and returns the DLP. The memory allocated for the returned +DLP must be freed by the caller using \fBfree\fP. +.SH "RETURN" +Pointer to the discovery log page (to be freed). NULL +on failure and errno is set. diff --git a/doc/man/nvmf_hostid_from_file.2 b/doc/man/nvmf_hostid_from_file.2 new file mode 100644 index 0000000..b129ba3 --- /dev/null +++ b/doc/man/nvmf_hostid_from_file.2 @@ -0,0 +1,9 @@ +.TH "nvmf_hostid_from_file" 9 "nvmf_hostid_from_file" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_hostid_from_file \- Reads the host identifier from the config default location in /usr/local/etc/nvme/. +.SH SYNOPSIS +.B "char *" nvmf_hostid_from_file +.SH ARGUMENTS +.SH "RETURN" +The host identifier, or NULL if unsuccessful. If found, the caller +is responsible to free the string. diff --git a/doc/man/nvmf_hostnqn_from_file.2 b/doc/man/nvmf_hostnqn_from_file.2 new file mode 100644 index 0000000..4323221 --- /dev/null +++ b/doc/man/nvmf_hostnqn_from_file.2 @@ -0,0 +1,9 @@ +.TH "nvmf_hostnqn_from_file" 9 "nvmf_hostnqn_from_file" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_hostnqn_from_file \- Reads the host nvm qualified name from the config default location in /usr/local/etc/nvme/ +.SH SYNOPSIS +.B "char *" nvmf_hostnqn_from_file +.SH ARGUMENTS +.SH "RETURN" +The host nqn, or NULL if unsuccessful. If found, the caller +is responsible to free the string. diff --git a/doc/man/nvmf_hostnqn_generate.2 b/doc/man/nvmf_hostnqn_generate.2 new file mode 100644 index 0000000..9cb9457 --- /dev/null +++ b/doc/man/nvmf_hostnqn_generate.2 @@ -0,0 +1,9 @@ +.TH "nvmf_hostnqn_generate" 9 "nvmf_hostnqn_generate" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_hostnqn_generate \- Generate a machine specific host nqn +.SH SYNOPSIS +.B "char *" nvmf_hostnqn_generate +.SH ARGUMENTS +.SH "RETURN" +An nvm namespace qualified name string based on the machine +identifier, or NULL if not successful. diff --git a/doc/man/nvmf_log_discovery_lid_support.2 b/doc/man/nvmf_log_discovery_lid_support.2 new file mode 100644 index 0000000..d9c6cc2 --- /dev/null +++ b/doc/man/nvmf_log_discovery_lid_support.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvmf_log_discovery_lid_support" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_log_discovery_lid_support \- Discovery log specific support +.SH SYNOPSIS +enum nvmf_log_discovery_lid_support { +.br +.BI " NVMF_LOG_DISC_LID_NONE" +, +.br +.br +.BI " NVMF_LOG_DISC_LID_EXTDLPES" +, +.br +.br +.BI " NVMF_LOG_DISC_LID_PLEOS" +, +.br +.br +.BI " NVMF_LOG_DISC_LID_ALLSUBES" + +}; +.SH Constants +.IP "NVMF_LOG_DISC_LID_NONE" 12 +None +.IP "NVMF_LOG_DISC_LID_EXTDLPES" 12 +Extended Discovery Log Page Entries Supported +.IP "NVMF_LOG_DISC_LID_PLEOS" 12 +Port Local Entries Only Supported +.IP "NVMF_LOG_DISC_LID_ALLSUBES" 12 +All NVM Subsystem Entries Supported diff --git a/doc/man/nvmf_log_discovery_lsp.2 b/doc/man/nvmf_log_discovery_lsp.2 new file mode 100644 index 0000000..e9e91d0 --- /dev/null +++ b/doc/man/nvmf_log_discovery_lsp.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvmf_log_discovery_lsp" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_log_discovery_lsp \- Discovery log specific field +.SH SYNOPSIS +enum nvmf_log_discovery_lsp { +.br +.BI " NVMF_LOG_DISC_LSP_NONE" +, +.br +.br +.BI " NVMF_LOG_DISC_LSP_EXTDLPE" +, +.br +.br +.BI " NVMF_LOG_DISC_LSP_PLEO" +, +.br +.br +.BI " NVMF_LOG_DISC_LSP_ALLSUBE" + +}; +.SH Constants +.IP "NVMF_LOG_DISC_LSP_NONE" 12 +None +.IP "NVMF_LOG_DISC_LSP_EXTDLPE" 12 +Extended Discovery Log Page Entries +.IP "NVMF_LOG_DISC_LSP_PLEO" 12 +Port Local Entries Only +.IP "NVMF_LOG_DISC_LSP_ALLSUBE" 12 +All NVM Subsystem Entries diff --git a/doc/man/nvmf_prtype_str.2 b/doc/man/nvmf_prtype_str.2 new file mode 100644 index 0000000..15d6289 --- /dev/null +++ b/doc/man/nvmf_prtype_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_prtype_str" 9 "nvmf_prtype_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_prtype_str \- Decode RDMA Provider type field +.SH SYNOPSIS +.B "const char *" nvmf_prtype_str +.BI "(__u8 prtype " ");" +.SH ARGUMENTS +.IP "prtype" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the RDMA Provider type field in the discovery +log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_qptype_str.2 b/doc/man/nvmf_qptype_str.2 new file mode 100644 index 0000000..d873573 --- /dev/null +++ b/doc/man/nvmf_qptype_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_qptype_str" 9 "nvmf_qptype_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_qptype_str \- Decode RDMA QP Service type field +.SH SYNOPSIS +.B "const char *" nvmf_qptype_str +.BI "(__u8 qptype " ");" +.SH ARGUMENTS +.IP "qptype" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the RDMA QP Service type field in the discovery log page +entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_rdma_cms.2 b/doc/man/nvmf_rdma_cms.2 new file mode 100644 index 0000000..6c31c01 --- /dev/null +++ b/doc/man/nvmf_rdma_cms.2 @@ -0,0 +1,12 @@ +.TH "libnvme" 9 "enum nvmf_rdma_cms" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_rdma_cms \- RDMA Connection Management Service Type codes for Discovery Log Page entry TSAS RDMA_CMS field +.SH SYNOPSIS +enum nvmf_rdma_cms { +.br +.BI " NVMF_RDMA_CMS_RDMA_CM" + +}; +.SH Constants +.IP "NVMF_RDMA_CMS_RDMA_CM" 12 +Sockets based endpoint addressing diff --git a/doc/man/nvmf_rdma_prtype.2 b/doc/man/nvmf_rdma_prtype.2 new file mode 100644 index 0000000..3ebf9a2 --- /dev/null +++ b/doc/man/nvmf_rdma_prtype.2 @@ -0,0 +1,36 @@ +.TH "libnvme" 9 "enum nvmf_rdma_prtype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_rdma_prtype \- RDMA Provider Type codes for Discovery Log Page entry TSAS RDMA_PRTYPE field +.SH SYNOPSIS +enum nvmf_rdma_prtype { +.br +.BI " NVMF_RDMA_PRTYPE_NOT_SPECIFIED" +, +.br +.br +.BI " NVMF_RDMA_PRTYPE_IB" +, +.br +.br +.BI " NVMF_RDMA_PRTYPE_ROCE" +, +.br +.br +.BI " NVMF_RDMA_PRTYPE_ROCEV2" +, +.br +.br +.BI " NVMF_RDMA_PRTYPE_IWARP" + +}; +.SH Constants +.IP "NVMF_RDMA_PRTYPE_NOT_SPECIFIED" 12 +No Provider Specified +.IP "NVMF_RDMA_PRTYPE_IB" 12 +InfiniBand +.IP "NVMF_RDMA_PRTYPE_ROCE" 12 +InfiniBand RoCE +.IP "NVMF_RDMA_PRTYPE_ROCEV2" 12 +InfiniBand RoCEV2 +.IP "NVMF_RDMA_PRTYPE_IWARP" 12 +iWARP diff --git a/doc/man/nvmf_rdma_qptype.2 b/doc/man/nvmf_rdma_qptype.2 new file mode 100644 index 0000000..8be2b64 --- /dev/null +++ b/doc/man/nvmf_rdma_qptype.2 @@ -0,0 +1,18 @@ +.TH "libnvme" 9 "enum nvmf_rdma_qptype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_rdma_qptype \- RDMA QP Service Type codes for Discovery Log Page entry TSAS RDMA_QPTYPE field +.SH SYNOPSIS +enum nvmf_rdma_qptype { +.br +.BI " NVMF_RDMA_QPTYPE_CONNECTED" +, +.br +.br +.BI " NVMF_RDMA_QPTYPE_DATAGRAM" + +}; +.SH Constants +.IP "NVMF_RDMA_QPTYPE_CONNECTED" 12 +Reliable Connected +.IP "NVMF_RDMA_QPTYPE_DATAGRAM" 12 +Reliable Datagram diff --git a/doc/man/nvmf_register_ctrl.2 b/doc/man/nvmf_register_ctrl.2 new file mode 100644 index 0000000..43c77d4 --- /dev/null +++ b/doc/man/nvmf_register_ctrl.2 @@ -0,0 +1,22 @@ +.TH "nvmf_register_ctrl" 9 "nvmf_register_ctrl" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_register_ctrl \- Perform registration task with a DC +.SH SYNOPSIS +.B "int" nvmf_register_ctrl +.BI "(nvme_ctrl_t c " "," +.BI "enum nvmf_dim_tas tas " "," +.BI "__u32 *result " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller instance +.IP "tas" 12 +Task field of the Command Dword 10 (cdw10). Indicates whether to +perform a Registration, Deregistration, or Registration-update. +.IP "result" 12 +The command-specific result returned by the DC upon command +completion. +.SH "DESCRIPTION" +Perform registration task with a Discovery Controller (DC). Three +tasks are supported: register, deregister, and registration update. +.SH "RETURN" +0 on success; on failure -1 is returned and errno is set diff --git a/doc/man/nvmf_sectype_str.2 b/doc/man/nvmf_sectype_str.2 new file mode 100644 index 0000000..d625a34 --- /dev/null +++ b/doc/man/nvmf_sectype_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_sectype_str" 9 "nvmf_sectype_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_sectype_str \- Decode SECTYPE field +.SH SYNOPSIS +.B "const char *" nvmf_sectype_str +.BI "(__u8 sectype " ");" +.SH ARGUMENTS +.IP "sectype" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the SECTYPE field in the discovery log page +entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_subtype_str.2 b/doc/man/nvmf_subtype_str.2 new file mode 100644 index 0000000..12ee728 --- /dev/null +++ b/doc/man/nvmf_subtype_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_subtype_str" 9 "nvmf_subtype_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_subtype_str \- Decode SUBTYPE field +.SH SYNOPSIS +.B "const char *" nvmf_subtype_str +.BI "(__u8 subtype " ");" +.SH ARGUMENTS +.IP "subtype" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the subsystem type field in the discovery +log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_tcp_sectype.2 b/doc/man/nvmf_tcp_sectype.2 new file mode 100644 index 0000000..65c69b1 --- /dev/null +++ b/doc/man/nvmf_tcp_sectype.2 @@ -0,0 +1,26 @@ +.TH "libnvme" 9 "enum nvmf_tcp_sectype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_tcp_sectype \- Transport Specific Address Subtype Definition for NVMe/TCP Transport +.SH SYNOPSIS +enum nvmf_tcp_sectype { +.br +.BI " NVMF_TCP_SECTYPE_NONE" +, +.br +.br +.BI " NVMF_TCP_SECTYPE_TLS" +, +.br +.br +.BI " NVMF_TCP_SECTYPE_TLS13" + +}; +.SH Constants +.IP "NVMF_TCP_SECTYPE_NONE" 12 +No Security +.IP "NVMF_TCP_SECTYPE_TLS" 12 +Transport Layer Security version 1.2 +.IP "NVMF_TCP_SECTYPE_TLS13" 12 +Transport Layer Security version 1.3 or a subsequent +version. The TLS protocol negotiates the version and +cipher suite for each TCP connection. diff --git a/doc/man/nvmf_treq.2 b/doc/man/nvmf_treq.2 new file mode 100644 index 0000000..200c3ab --- /dev/null +++ b/doc/man/nvmf_treq.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvmf_treq" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_treq \- Transport Requirements codes for Discovery Log Page entry TREQ field +.SH SYNOPSIS +enum nvmf_treq { +.br +.BI " NVMF_TREQ_NOT_SPECIFIED" +, +.br +.br +.BI " NVMF_TREQ_REQUIRED" +, +.br +.br +.BI " NVMF_TREQ_NOT_REQUIRED" +, +.br +.br +.BI " NVMF_TREQ_DISABLE_SQFLOW" + +}; +.SH Constants +.IP "NVMF_TREQ_NOT_SPECIFIED" 12 +Not specified +.IP "NVMF_TREQ_REQUIRED" 12 +Required +.IP "NVMF_TREQ_NOT_REQUIRED" 12 +Not Required +.IP "NVMF_TREQ_DISABLE_SQFLOW" 12 +SQ flow control disable supported diff --git a/doc/man/nvmf_treq_str.2 b/doc/man/nvmf_treq_str.2 new file mode 100644 index 0000000..ae02578 --- /dev/null +++ b/doc/man/nvmf_treq_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_treq_str" 9 "nvmf_treq_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_treq_str \- Decode TREQ field +.SH SYNOPSIS +.B "const char *" nvmf_treq_str +.BI "(__u8 treq " ");" +.SH ARGUMENTS +.IP "treq" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the transport requirements field in the +discovery log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_trtype.2 b/doc/man/nvmf_trtype.2 new file mode 100644 index 0000000..b0fe0c2 --- /dev/null +++ b/doc/man/nvmf_trtype.2 @@ -0,0 +1,43 @@ +.TH "libnvme" 9 "enum nvmf_trtype" "January 2023" "API Manual" LINUX +.SH NAME +enum nvmf_trtype \- Transport Type codes for Discovery Log Page entry TRTYPE field +.SH SYNOPSIS +enum nvmf_trtype { +.br +.BI " NVMF_TRTYPE_UNSPECIFIED" +, +.br +.br +.BI " NVMF_TRTYPE_RDMA" +, +.br +.br +.BI " NVMF_TRTYPE_FC" +, +.br +.br +.BI " NVMF_TRTYPE_TCP" +, +.br +.br +.BI " NVMF_TRTYPE_LOOP" +, +.br +.br +.BI " NVMF_TRTYPE_MAX" + +}; +.SH Constants +.IP "NVMF_TRTYPE_UNSPECIFIED" 12 +Not indicated +.IP "NVMF_TRTYPE_RDMA" 12 +RDMA +.IP "NVMF_TRTYPE_FC" 12 +Fibre Channel +.IP "NVMF_TRTYPE_TCP" 12 +TCP +.IP "NVMF_TRTYPE_LOOP" 12 +Intra-host Transport (i.e., loopback), reserved +for host usage. +.IP "NVMF_TRTYPE_MAX" 12 +Maximum value for \fIenum nvmf_trtype\fP diff --git a/doc/man/nvmf_trtype_str.2 b/doc/man/nvmf_trtype_str.2 new file mode 100644 index 0000000..4926c56 --- /dev/null +++ b/doc/man/nvmf_trtype_str.2 @@ -0,0 +1,14 @@ +.TH "nvmf_trtype_str" 9 "nvmf_trtype_str" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_trtype_str \- Decode TRTYPE field +.SH SYNOPSIS +.B "const char *" nvmf_trtype_str +.BI "(__u8 trtype " ");" +.SH ARGUMENTS +.IP "trtype" 12 +value to be decoded +.SH "DESCRIPTION" +Decode the transport type field in the discovery +log page entry. +.SH "RETURN" +decoded string diff --git a/doc/man/nvmf_update_config.2 b/doc/man/nvmf_update_config.2 new file mode 100644 index 0000000..a4bff1c --- /dev/null +++ b/doc/man/nvmf_update_config.2 @@ -0,0 +1,15 @@ +.TH "nvmf_update_config" 9 "nvmf_update_config" "January 2023" "libnvme API manual" LINUX +.SH NAME +nvmf_update_config \- Update fabrics configuration values +.SH SYNOPSIS +.B "void" nvmf_update_config +.BI "(nvme_ctrl_t c " "," +.BI "const struct nvme_fabrics_config *cfg " ");" +.SH ARGUMENTS +.IP "c" 12 +Controller to be modified +.IP "cfg" 12 +Updated configuration values +.SH "DESCRIPTION" +Updates the values from \fIc\fP with the configuration values from \fIcfg\fP; +all non-default values from \fIcfg\fP will overwrite the values in \fIc\fP. |