diff options
762 files changed, 8241 insertions, 913 deletions
diff --git a/.github/cross/ubuntu-armhf.txt b/.github/cross/ubuntu-armhf.txt new file mode 100644 index 0000000..2eee70b --- /dev/null +++ b/.github/cross/ubuntu-armhf.txt @@ -0,0 +1,17 @@ +[binaries] +c = '/usr/bin/arm-linux-gnueabihf-gcc' +ar = '/usr/arm-linux-gnueabihf/bin/ar' +strip = '/usr/arm-linux-gnueabihf/bin/strip' +pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config' +ld = '/usr/bin/arm-linux/gnueabihf-ld' + +[properties] +root = '/usr/arm-linux-gnueabihf' +has_function_printf = true +skip_sanity_check = true + +[host_machine] +system = 'linux' +cpu_family = 'arm' +cpu = 'armv7' +endian = 'little' diff --git a/.github/cross/ubuntu-ppc64le.txt b/.github/cross/ubuntu-ppc64le.txt new file mode 100644 index 0000000..4cf6a92 --- /dev/null +++ b/.github/cross/ubuntu-ppc64le.txt @@ -0,0 +1,17 @@ +[binaries] +c = '/usr/bin/powerpc64le-linux-gnu-gcc' +ar = '/usr/powerpc64le-linux-gnu/bin/ar' +strip = '/usr/powerpc64le-linux-gnu/bin/strip' +pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config' +ld = '/usr/bin/powerpc64le-linux-gnu-ld' + +[properties] +root = '/usr/powerpc64le-linux-gnu' +has_function_printf = true +skip_sanity_check = true + +[host_machine] +system = 'linux' +cpu_family = 'ppc64' +cpu = '' +endian = 'little' diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index 9006eae..52b2b6a 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -30,6 +30,66 @@ jobs: name: Linux_Meson_Testlog path: build/meson-logs/testlog.txt + build-cross-armhf: + runs-on: ubuntu-latest + steps: + - name: set up arm architecture + run: | + export release=$(lsb_release -c -s) + sudo dpkg --add-architecture armhf + sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list + sudo dd of=/etc/apt/sources.list.d/armhf.list <<EOF + deb [arch=armhf] http://ports.ubuntu.com/ $release main universe restricted" + deb [arch=armhf] http://ports.ubuntu.com/ $release-updates main universe restricted" + EOF + sudo apt update + - name: install armhf compiler + run: sudo apt install gcc-arm-linux-gnueabihf pkg-config + - name: install libraries + run: sudo apt install uuid-dev:armhf libjson-c-dev:armhf + - uses: actions/checkout@v3 + - uses: BSFishy/meson-build@v1.0.3 + with: + # suppress python for now; the python headers currently assume native + setup-options: --werror --cross-file=.github/cross/ubuntu-armhf.txt --wrap-mode=nofallback -Dpython=false + options: --verbose + action: build + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: Linux_Meson_Testlog + path: build/meson-logs/testlog.txt + + build-cross-ppc64le: + runs-on: ubuntu-latest + steps: + - name: set up ppc64le architecture + run: | + export release=$(lsb_release -c -s) + sudo dpkg --add-architecture ppc64el + sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list + sudo dd of=/etc/apt/sources.list.d/ppc64el.list <<EOF + deb [arch=ppc64el] http://ports.ubuntu.com/ $release main universe restricted" + deb [arch=ppc64el] http://ports.ubuntu.com/ $release-updates main universe restricted" + EOF + sudo apt update + - name: install powerpc64le compiler + run: sudo apt install gcc-powerpc64le-linux-gnu pkg-config + - name: install libraries + run: sudo apt install uuid-dev:ppc64el libjson-c-dev:ppc64el + - uses: actions/checkout@v3 + - uses: BSFishy/meson-build@v1.0.3 + with: + # suppress python for now; the python headers currently assume native + setup-options: --werror --cross-file=.github/cross/ubuntu-ppc64le.txt --wrap-mode=nofallback -Dpython=false + options: --verbose + action: build + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: Linux_Meson_Testlog + path: build/meson-logs/testlog.txt + build-fallback: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index dc2b6a6..09fef2f 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -46,13 +46,21 @@ jobs: runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') steps: - - uses: actions/download-artifact@v3 + - name: Check if it is a release tag + id: check-tag + run: | + if [[ ${{ github.event.ref }} =~ ^refs/tags/v([0-9]+\.[0-9]+)(-rc[0-9]+)?$ ]]; then + echo ::set-output name=match::true + fi + - name: Download artifiact + uses: actions/download-artifact@v3 + if: steps.check-tag.outputs.match == 'true' with: name: artifact path: dist - - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@release/v1.5 + if: steps.check-tag.outputs.match == 'true' with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index db84ef5..e0255a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} @@ -34,6 +34,10 @@ endif install dist: ${BUILD-DIR} cd ${BUILD-DIR} && meson $@ +.PHONY: uninstall +uninstall: + cd ${BUILD-DIR} && meson --internal uninstall + .PHONY: test test: ${BUILD-DIR} ninja -C ${BUILD-DIR} $@ diff --git a/doc/conf.py b/doc/conf.py index 686434e..abfa57c 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -12,7 +12,7 @@ copyright = '2020, Keith Busch' author = 'Keith Busch <kbusch@kernel.org>' master_doc = 'index' -release = '1.1' +release = '1.2' # -- General configuration --------------------------------------------------- diff --git a/doc/config-schema.json b/doc/config-schema.json index a7bbdf1..69fb606 100644 --- a/doc/config-schema.json +++ b/doc/config-schema.json @@ -25,6 +25,10 @@ "description": "NVMe host ID", "type": "string" }, + "dhchap_key": { + "description": "Host DH-HMAC-CHAP key", + "type": "string" + }, "hostsymname": { "description": "NVMe host symbolic name", "type": "string" diff --git a/doc/config-schema.json.in b/doc/config-schema.json.in index a7bbdf1..69fb606 100644 --- a/doc/config-schema.json.in +++ b/doc/config-schema.json.in @@ -25,6 +25,10 @@ "description": "NVMe host ID", "type": "string" }, + "dhchap_key": { + "description": "Host DH-HMAC-CHAP key", + "type": "string" + }, "hostsymname": { "description": "NVMe host symbolic name", "type": "string" diff --git a/doc/list-man-pages.sh b/doc/list-man-pages.sh index e22691d..3acdf7a 100755 --- a/doc/list-man-pages.sh +++ b/doc/list-man-pages.sh @@ -3,14 +3,14 @@ file=$1 -for func in $(sed -n 's/ \* \([a-z_]*\)() -.*/\1/p' $file); do +for func in $(sed -n 's/ \* \([a-z_][a-z_0-9]*\)() -.*/\1/p' $file); do echo ${func} done -for struct in $(sed -n 's/ \* struct \([a-z_]*\) -.*/\1/p' $file); do +for struct in $(sed -n 's/ \* struct \([a-z_][a-z_0-9]*\) -.*/\1/p' $file); do echo ${struct} done -for enum in $(sed -n 's/ \* enum \([a-z_]*\) -.*/\1/p' $file); do +for enum in $(sed -n 's/ \* enum \([a-z_][a-z_0-9]*\) -.*/\1/p' $file); do echo ${enum} done diff --git a/doc/list-pre-compiled.sh b/doc/list-pre-compiled.sh new file mode 100755 index 0000000..c31caf9 --- /dev/null +++ b/doc/list-pre-compiled.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +for i in man/*.2; do + echo $i +done diff --git a/doc/man/nvme_admin_opcode.2 b/doc/man/nvme_admin_opcode.2 index ebe4f15..be7d1c3 100644 --- a/doc/man/nvme_admin_opcode.2 +++ b/doc/man/nvme_admin_opcode.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_admin_opcode" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_admin_opcode" "October 2022" "API Manual" LINUX .SH NAME enum nvme_admin_opcode \- Known NVMe admin opcodes .SH SYNOPSIS diff --git a/doc/man/nvme_admin_passthru.2 b/doc/man/nvme_admin_passthru.2 index 0703e97..acf2a63 100644 --- a/doc/man/nvme_admin_passthru.2 +++ b/doc/man/nvme_admin_passthru.2 @@ -1,4 +1,4 @@ -.TH "nvme_admin_passthru" 9 "nvme_admin_passthru" "August 2022" "libnvme API manual" LINUX +.TH "nvme_admin_passthru" 9 "nvme_admin_passthru" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_admin_passthru \- Submit an nvme passthrough command .SH SYNOPSIS diff --git a/doc/man/nvme_admin_passthru64.2 b/doc/man/nvme_admin_passthru64.2 new file mode 100644 index 0000000..806251e --- /dev/null +++ b/doc/man/nvme_admin_passthru64.2 @@ -0,0 +1,71 @@ +.TH "nvme_admin_passthru64" 9 "nvme_admin_passthru64" "October 2022" "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 index 4816632..4090339 100644 --- a/doc/man/nvme_ae_info_css_nvm.2 +++ b/doc/man/nvme_ae_info_css_nvm.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ae_info_css_nvm" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ae_info_css_nvm" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ae_info_css_nvm \- Asynchronous Event Information - I/O Command Specific Status .SH SYNOPSIS diff --git a/doc/man/nvme_ae_info_error.2 b/doc/man/nvme_ae_info_error.2 index 5f5f55f..4b8deeb 100644 --- a/doc/man/nvme_ae_info_error.2 +++ b/doc/man/nvme_ae_info_error.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ae_info_error" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ae_info_error" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ae_info_error \- Asynchronous Event Information - Error Status .SH SYNOPSIS diff --git a/doc/man/nvme_ae_info_notice.2 b/doc/man/nvme_ae_info_notice.2 index c815d66..5ccb5ed 100644 --- a/doc/man/nvme_ae_info_notice.2 +++ b/doc/man/nvme_ae_info_notice.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ae_info_notice" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ae_info_notice" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ae_info_notice \- Asynchronous Event Information - Notice .SH SYNOPSIS diff --git a/doc/man/nvme_ae_info_smart.2 b/doc/man/nvme_ae_info_smart.2 index a828666..964a7bb 100644 --- a/doc/man/nvme_ae_info_smart.2 +++ b/doc/man/nvme_ae_info_smart.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ae_info_smart" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ae_info_smart" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ae_info_smart \- Asynchronous Event Information - SMART / Health Status .SH SYNOPSIS diff --git a/doc/man/nvme_ae_type.2 b/doc/man/nvme_ae_type.2 index 8bbd063..478522e 100644 --- a/doc/man/nvme_ae_type.2 +++ b/doc/man/nvme_ae_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ae_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ae_type" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ae_type \- Asynchronous Event Type .SH SYNOPSIS diff --git a/doc/man/nvme_aggregate_endurance_group_event.2 b/doc/man/nvme_aggregate_endurance_group_event.2 index ddc19e1..8e104f4 100644 --- a/doc/man/nvme_aggregate_endurance_group_event.2 +++ b/doc/man/nvme_aggregate_endurance_group_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_aggregate_endurance_group_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_aggregate_endurance_group_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_aggregate_endurance_group_event \- Endurance Group Event Aggregate .SH SYNOPSIS diff --git a/doc/man/nvme_aggregate_predictable_lat_event.2 b/doc/man/nvme_aggregate_predictable_lat_event.2 index 39bc4e1..871cf1c 100644 --- a/doc/man/nvme_aggregate_predictable_lat_event.2 +++ b/doc/man/nvme_aggregate_predictable_lat_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_aggregate_predictable_lat_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_aggregate_predictable_lat_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_aggregate_predictable_lat_event \- Predictable Latency Event Aggregate Log Page .SH SYNOPSIS diff --git a/doc/man/nvme_ana_group_desc.2 b/doc/man/nvme_ana_group_desc.2 index 1c93e28..02056c5 100644 --- a/doc/man/nvme_ana_group_desc.2 +++ b/doc/man/nvme_ana_group_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_ana_group_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_ana_group_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_ana_group_desc \- ANA Group Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_ana_log.2 b/doc/man/nvme_ana_log.2 index ea60e03..1a09d31 100644 --- a/doc/man/nvme_ana_log.2 +++ b/doc/man/nvme_ana_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_ana_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_ana_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_ana_log \- Asymmetric Namespace Access Log .SH SYNOPSIS diff --git a/doc/man/nvme_ana_state.2 b/doc/man/nvme_ana_state.2 index fbe76cf..a177ade 100644 --- a/doc/man/nvme_ana_state.2 +++ b/doc/man/nvme_ana_state.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ana_state" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ana_state" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ana_state \- ANA Group Descriptor - Asymmetric Namespace Access State .SH SYNOPSIS diff --git a/doc/man/nvme_apst_entry.2 b/doc/man/nvme_apst_entry.2 index 1472885..13b2077 100644 --- a/doc/man/nvme_apst_entry.2 +++ b/doc/man/nvme_apst_entry.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_apst_entry" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_apst_entry" "October 2022" "API Manual" LINUX .SH NAME enum nvme_apst_entry \- Autonomous Power State Transition .SH SYNOPSIS diff --git a/doc/man/nvme_boot_partition.2 b/doc/man/nvme_boot_partition.2 index e64b3e0..0005b99 100644 --- a/doc/man/nvme_boot_partition.2 +++ b/doc/man/nvme_boot_partition.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_boot_partition" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_boot_partition" "October 2022" "API Manual" LINUX .SH NAME struct nvme_boot_partition \- Boot Partition Log .SH SYNOPSIS diff --git a/doc/man/nvme_capacity_config_desc.2 b/doc/man/nvme_capacity_config_desc.2 index eb4ee6c..f3bd068 100644 --- a/doc/man/nvme_capacity_config_desc.2 +++ b/doc/man/nvme_capacity_config_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_capacity_config_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_capacity_config_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_capacity_config_desc \- Capacity Configuration structure definitions .SH SYNOPSIS diff --git a/doc/man/nvme_capacity_mgmt.2 b/doc/man/nvme_capacity_mgmt.2 index 2345ca0..8dba4a1 100644 --- a/doc/man/nvme_capacity_mgmt.2 +++ b/doc/man/nvme_capacity_mgmt.2 @@ -1,4 +1,4 @@ -.TH "nvme_capacity_mgmt" 9 "nvme_capacity_mgmt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_capacity_mgmt" 9 "nvme_capacity_mgmt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_capacity_mgmt \- Capacity management command .SH SYNOPSIS diff --git a/doc/man/nvme_change_ns_event.2 b/doc/man/nvme_change_ns_event.2 index 5f437c2..7892083 100644 --- a/doc/man/nvme_change_ns_event.2 +++ b/doc/man/nvme_change_ns_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_change_ns_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_change_ns_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_change_ns_event \- Change Namespace Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_channel_config_desc.2 b/doc/man/nvme_channel_config_desc.2 index 5e58ce5..3948070 100644 --- a/doc/man/nvme_channel_config_desc.2 +++ b/doc/man/nvme_channel_config_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_channel_config_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_channel_config_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_channel_config_desc \- Channel Configuration Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_cmb_size.2 b/doc/man/nvme_cmb_size.2 index 0ed5ed0..2166cba 100644 --- a/doc/man/nvme_cmb_size.2 +++ b/doc/man/nvme_cmb_size.2 @@ -1,4 +1,4 @@ -.TH "nvme_cmb_size" 9 "nvme_cmb_size" "August 2022" "libnvme API manual" LINUX +.TH "nvme_cmb_size" 9 "nvme_cmb_size" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_cmb_size \- Calculate size of the controller memory buffer .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_effects.2 b/doc/man/nvme_cmd_effects.2 index efd3c88..7600ea3 100644 --- a/doc/man/nvme_cmd_effects.2 +++ b/doc/man/nvme_cmd_effects.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_effects" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_effects" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_effects \- Commands Supported and Effects .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_effects_log.2 b/doc/man/nvme_cmd_effects_log.2 index 669e86e..83e0a85 100644 --- a/doc/man/nvme_cmd_effects_log.2 +++ b/doc/man/nvme_cmd_effects_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_cmd_effects_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_cmd_effects_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_cmd_effects_log \- Commands Supported and Effects Log .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_format_mset.2 b/doc/man/nvme_cmd_format_mset.2 index aeaa72c..d1cb0eb 100644 --- a/doc/man/nvme_cmd_format_mset.2 +++ b/doc/man/nvme_cmd_format_mset.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_format_mset" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_format_mset" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_format_mset \- Format NVM - Metadata Settings .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_format_pi.2 b/doc/man/nvme_cmd_format_pi.2 index f77640a..87ca2f4 100644 --- a/doc/man/nvme_cmd_format_pi.2 +++ b/doc/man/nvme_cmd_format_pi.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_format_pi" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_format_pi" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_format_pi \- Format NVM - Protection Information .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_format_pil.2 b/doc/man/nvme_cmd_format_pil.2 index 388e6d1..d21373f 100644 --- a/doc/man/nvme_cmd_format_pil.2 +++ b/doc/man/nvme_cmd_format_pil.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_format_pil" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_format_pil" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_format_pil \- Format NVM - Protection Information Location .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_format_ses.2 b/doc/man/nvme_cmd_format_ses.2 index d0acccb..257c7a5 100644 --- a/doc/man/nvme_cmd_format_ses.2 +++ b/doc/man/nvme_cmd_format_ses.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_format_ses" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_format_ses" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_format_ses \- Format NVM - Secure Erase Settings .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_get_log_lid.2 b/doc/man/nvme_cmd_get_log_lid.2 index be8aad4..31ee57c 100644 --- a/doc/man/nvme_cmd_get_log_lid.2 +++ b/doc/man/nvme_cmd_get_log_lid.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_get_log_lid" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_get_log_lid" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_get_log_lid \- Get Log Page -Log Page Identifiers .SH SYNOPSIS diff --git a/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 b/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 index 436a5f0..7ba3d49 100644 --- a/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 +++ b/doc/man/nvme_cmd_get_log_telemetry_host_lsp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_cmd_get_log_telemetry_host_lsp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_cmd_get_log_telemetry_host_lsp" "October 2022" "API Manual" LINUX .SH NAME enum nvme_cmd_get_log_telemetry_host_lsp \- Telemetry Host-Initiated log specific field .SH SYNOPSIS diff --git a/doc/man/nvme_compare.2 b/doc/man/nvme_compare.2 index 7d6d7d2..961d584 100644 --- a/doc/man/nvme_compare.2 +++ b/doc/man/nvme_compare.2 @@ -1,4 +1,4 @@ -.TH "nvme_compare" 9 "nvme_compare" "August 2022" "libnvme API manual" LINUX +.TH "nvme_compare" 9 "nvme_compare" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_compare \- Submit an nvme user compare command .SH SYNOPSIS diff --git a/doc/man/nvme_connect_err.2 b/doc/man/nvme_connect_err.2 index 7b41b4c..0b5e4bc 100644 --- a/doc/man/nvme_connect_err.2 +++ b/doc/man/nvme_connect_err.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_connect_err" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_connect_err" "October 2022" "API Manual" LINUX .SH NAME enum nvme_connect_err \- nvme connect error codes .SH SYNOPSIS diff --git a/doc/man/nvme_constants.2 b/doc/man/nvme_constants.2 index 7f1773c..a79031c 100644 --- a/doc/man/nvme_constants.2 +++ b/doc/man/nvme_constants.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_constants" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_constants" "October 2022" "API Manual" LINUX .SH NAME enum nvme_constants \- A place to stash various constant nvme values .SH SYNOPSIS diff --git a/doc/man/nvme_copy.2 b/doc/man/nvme_copy.2 index eb363e1..71489d2 100644 --- a/doc/man/nvme_copy.2 +++ b/doc/man/nvme_copy.2 @@ -1,4 +1,4 @@ -.TH "nvme_copy" 9 "nvme_copy" "August 2022" "libnvme API manual" LINUX +.TH "nvme_copy" 9 "nvme_copy" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_copy \- Copy command .SH SYNOPSIS diff --git a/doc/man/nvme_copy_range.2 b/doc/man/nvme_copy_range.2 index 9975b1b..fb82d8d 100644 --- a/doc/man/nvme_copy_range.2 +++ b/doc/man/nvme_copy_range.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_copy_range" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_copy_range" "October 2022" "API Manual" LINUX .SH NAME struct nvme_copy_range \- Copy - Source Range Entries Descriptor Format .SH SYNOPSIS diff --git a/doc/man/nvme_copy_range_f1.2 b/doc/man/nvme_copy_range_f1.2 new file mode 100644 index 0000000..f83ef09 --- /dev/null +++ b/doc/man/nvme_copy_range_f1.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "struct nvme_copy_range_f1" "October 2022" "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 index 6b00537..325cb84 100644 --- a/doc/man/nvme_create_ctrl.2 +++ b/doc/man/nvme_create_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_create_ctrl" 9 "nvme_create_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_create_ctrl" 9 "nvme_create_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_create_ctrl \- Allocate an unconnected NVMe controller .SH SYNOPSIS diff --git a/doc/man/nvme_create_root.2 b/doc/man/nvme_create_root.2 index dfe029d..924d7e2 100644 --- a/doc/man/nvme_create_root.2 +++ b/doc/man/nvme_create_root.2 @@ -1,4 +1,4 @@ -.TH "nvme_create_root" 9 "nvme_create_root" "August 2022" "libnvme API manual" LINUX +.TH "nvme_create_root" 9 "nvme_create_root" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_create_root \- Initialize root object .SH SYNOPSIS diff --git a/doc/man/nvme_csi.2 b/doc/man/nvme_csi.2 index 2ee3cd1..c2496dc 100644 --- a/doc/man/nvme_csi.2 +++ b/doc/man/nvme_csi.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_csi" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_csi" "October 2022" "API Manual" LINUX .SH NAME enum nvme_csi \- Defined command set indicators .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_first_ns.2 b/doc/man/nvme_ctrl_first_ns.2 index ae64a28..8e8e4df 100644 --- a/doc/man/nvme_ctrl_first_ns.2 +++ b/doc/man/nvme_ctrl_first_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_first_ns" 9 "nvme_ctrl_first_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_first_ns" 9 "nvme_ctrl_first_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_first_ns \- Start namespace iterator .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_first_path.2 b/doc/man/nvme_ctrl_first_path.2 index 6945c3d..0247898 100644 --- a/doc/man/nvme_ctrl_first_path.2 +++ b/doc/man/nvme_ctrl_first_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_first_path" 9 "nvme_ctrl_first_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_first_path" 9 "nvme_ctrl_first_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_first_path \- Start path iterator .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_for_each_ns.2 b/doc/man/nvme_ctrl_for_each_ns.2 index 3310025..d08adeb 100644 --- a/doc/man/nvme_ctrl_for_each_ns.2 +++ b/doc/man/nvme_ctrl_for_each_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_for_each_ns" 9 "nvme_ctrl_for_each_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_for_each_ns" 9 "nvme_ctrl_for_each_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_for_each_ns \- Traverse namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_for_each_ns_safe.2 b/doc/man/nvme_ctrl_for_each_ns_safe.2 index 7ff6fc3..87862b0 100644 --- a/doc/man/nvme_ctrl_for_each_ns_safe.2 +++ b/doc/man/nvme_ctrl_for_each_ns_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_for_each_ns_safe" 9 "nvme_ctrl_for_each_ns_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_for_each_ns_safe" 9 "nvme_ctrl_for_each_ns_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_for_each_ns_safe \- Traverse namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_for_each_path.2 b/doc/man/nvme_ctrl_for_each_path.2 index 3a2289c..6d6d33f 100644 --- a/doc/man/nvme_ctrl_for_each_path.2 +++ b/doc/man/nvme_ctrl_for_each_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_for_each_path" 9 "nvme_ctrl_for_each_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_for_each_path" 9 "nvme_ctrl_for_each_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_for_each_path \- Traverse paths .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_for_each_path_safe.2 b/doc/man/nvme_ctrl_for_each_path_safe.2 index 8e3dccd..b2f8be4 100644 --- a/doc/man/nvme_ctrl_for_each_path_safe.2 +++ b/doc/man/nvme_ctrl_for_each_path_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_for_each_path_safe" 9 "nvme_ctrl_for_each_path_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_for_each_path_safe" 9 "nvme_ctrl_for_each_path_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_for_each_path_safe \- Traverse paths .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_address.2 b/doc/man/nvme_ctrl_get_address.2 index 7d3536c..f9686c1 100644 --- a/doc/man/nvme_ctrl_get_address.2 +++ b/doc/man/nvme_ctrl_get_address.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_address" 9 "nvme_ctrl_get_address" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_address" 9 "nvme_ctrl_get_address" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_address \- Address string of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_config.2 b/doc/man/nvme_ctrl_get_config.2 index 779ccc8..47269e5 100644 --- a/doc/man/nvme_ctrl_get_config.2 +++ b/doc/man/nvme_ctrl_get_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_config" 9 "nvme_ctrl_get_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_config" 9 "nvme_ctrl_get_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_config \- Fabrics configuration of a controller .SH SYNOPSIS 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..174aa97 --- /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" "October 2022" "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 index 3187eec..a3efd36 100644 --- a/doc/man/nvme_ctrl_get_dhchap_key.2 +++ b/doc/man/nvme_ctrl_get_dhchap_key.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_dhchap_key" 9 "nvme_ctrl_get_dhchap_key" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_dhchap_key" 9 "nvme_ctrl_get_dhchap_key" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_dhchap_key \- Return controller key .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_fd.2 b/doc/man/nvme_ctrl_get_fd.2 index b41ebbc..daf746b 100644 --- a/doc/man/nvme_ctrl_get_fd.2 +++ b/doc/man/nvme_ctrl_get_fd.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_fd" 9 "nvme_ctrl_get_fd" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_fd" 9 "nvme_ctrl_get_fd" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_fd \- Get associated file descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_firmware.2 b/doc/man/nvme_ctrl_get_firmware.2 index 0ceadc6..3e3766c 100644 --- a/doc/man/nvme_ctrl_get_firmware.2 +++ b/doc/man/nvme_ctrl_get_firmware.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_firmware" 9 "nvme_ctrl_get_firmware" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_firmware" 9 "nvme_ctrl_get_firmware" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_firmware \- Firmware string of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_host_iface.2 b/doc/man/nvme_ctrl_get_host_iface.2 index 980ec60..2e98010 100644 --- a/doc/man/nvme_ctrl_get_host_iface.2 +++ b/doc/man/nvme_ctrl_get_host_iface.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_host_iface" 9 "nvme_ctrl_get_host_iface" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_host_iface" 9 "nvme_ctrl_get_host_iface" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_host_iface \- Host interface name of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_host_traddr.2 b/doc/man/nvme_ctrl_get_host_traddr.2 index 8a8967b..6102269 100644 --- a/doc/man/nvme_ctrl_get_host_traddr.2 +++ b/doc/man/nvme_ctrl_get_host_traddr.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_host_traddr" 9 "nvme_ctrl_get_host_traddr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_host_traddr" 9 "nvme_ctrl_get_host_traddr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_host_traddr \- Host transport address of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_model.2 b/doc/man/nvme_ctrl_get_model.2 index 50476c9..3471eb9 100644 --- a/doc/man/nvme_ctrl_get_model.2 +++ b/doc/man/nvme_ctrl_get_model.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_model" 9 "nvme_ctrl_get_model" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_model" 9 "nvme_ctrl_get_model" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_model \- Model of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_name.2 b/doc/man/nvme_ctrl_get_name.2 index 09be716..0c9c5bd 100644 --- a/doc/man/nvme_ctrl_get_name.2 +++ b/doc/man/nvme_ctrl_get_name.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_name" 9 "nvme_ctrl_get_name" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_name" 9 "nvme_ctrl_get_name" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_name \- sysfs name of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_numa_node.2 b/doc/man/nvme_ctrl_get_numa_node.2 index 6b8bc08..6be8e99 100644 --- a/doc/man/nvme_ctrl_get_numa_node.2 +++ b/doc/man/nvme_ctrl_get_numa_node.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_numa_node" 9 "nvme_ctrl_get_numa_node" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_numa_node" 9 "nvme_ctrl_get_numa_node" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_numa_node \- NUMA node of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_queue_count.2 b/doc/man/nvme_ctrl_get_queue_count.2 index f2fc809..8852d84 100644 --- a/doc/man/nvme_ctrl_get_queue_count.2 +++ b/doc/man/nvme_ctrl_get_queue_count.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_queue_count" 9 "nvme_ctrl_get_queue_count" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_queue_count" 9 "nvme_ctrl_get_queue_count" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_queue_count \- Queue count of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_serial.2 b/doc/man/nvme_ctrl_get_serial.2 index c7af106..0af26f4 100644 --- a/doc/man/nvme_ctrl_get_serial.2 +++ b/doc/man/nvme_ctrl_get_serial.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_serial" 9 "nvme_ctrl_get_serial" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_serial" 9 "nvme_ctrl_get_serial" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_serial \- Serial number of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_sqsize.2 b/doc/man/nvme_ctrl_get_sqsize.2 index ef0f407..2ff350d 100644 --- a/doc/man/nvme_ctrl_get_sqsize.2 +++ b/doc/man/nvme_ctrl_get_sqsize.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_sqsize" 9 "nvme_ctrl_get_sqsize" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_sqsize" 9 "nvme_ctrl_get_sqsize" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_sqsize \- SQ size of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_state.2 b/doc/man/nvme_ctrl_get_state.2 index 80b3818..d787758 100644 --- a/doc/man/nvme_ctrl_get_state.2 +++ b/doc/man/nvme_ctrl_get_state.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_state" 9 "nvme_ctrl_get_state" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_state" 9 "nvme_ctrl_get_state" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_state \- Running state of an controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_subsysnqn.2 b/doc/man/nvme_ctrl_get_subsysnqn.2 index 9c3f5ee..3b14394 100644 --- a/doc/man/nvme_ctrl_get_subsysnqn.2 +++ b/doc/man/nvme_ctrl_get_subsysnqn.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_subsysnqn" 9 "nvme_ctrl_get_subsysnqn" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_subsysnqn" 9 "nvme_ctrl_get_subsysnqn" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_subsysnqn \- Subsystem NQN of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_subsystem.2 b/doc/man/nvme_ctrl_get_subsystem.2 index 31f2869..0c0f7ca 100644 --- a/doc/man/nvme_ctrl_get_subsystem.2 +++ b/doc/man/nvme_ctrl_get_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_subsystem" 9 "nvme_ctrl_get_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_subsystem" 9 "nvme_ctrl_get_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_subsystem \- Parent subsystem of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_sysfs_dir.2 b/doc/man/nvme_ctrl_get_sysfs_dir.2 index 12b5eb7..247aada 100644 --- a/doc/man/nvme_ctrl_get_sysfs_dir.2 +++ b/doc/man/nvme_ctrl_get_sysfs_dir.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_sysfs_dir" 9 "nvme_ctrl_get_sysfs_dir" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_sysfs_dir" 9 "nvme_ctrl_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_sysfs_dir \- sysfs directory of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_traddr.2 b/doc/man/nvme_ctrl_get_traddr.2 index 7dca450..ce9c961 100644 --- a/doc/man/nvme_ctrl_get_traddr.2 +++ b/doc/man/nvme_ctrl_get_traddr.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_traddr" 9 "nvme_ctrl_get_traddr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_traddr" 9 "nvme_ctrl_get_traddr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_traddr \- Transport address of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_transport.2 b/doc/man/nvme_ctrl_get_transport.2 index 7134db9..d0b2fb6 100644 --- a/doc/man/nvme_ctrl_get_transport.2 +++ b/doc/man/nvme_ctrl_get_transport.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_transport" 9 "nvme_ctrl_get_transport" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_transport" 9 "nvme_ctrl_get_transport" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_transport \- Transport type of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_get_trsvcid.2 b/doc/man/nvme_ctrl_get_trsvcid.2 index f684a88..b1e6b5a 100644 --- a/doc/man/nvme_ctrl_get_trsvcid.2 +++ b/doc/man/nvme_ctrl_get_trsvcid.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_get_trsvcid" 9 "nvme_ctrl_get_trsvcid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_get_trsvcid" 9 "nvme_ctrl_get_trsvcid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_get_trsvcid \- Transport service identifier of a controller .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_identify.2 b/doc/man/nvme_ctrl_identify.2 index 735d509..ce17f5c 100644 --- a/doc/man/nvme_ctrl_identify.2 +++ b/doc/man/nvme_ctrl_identify.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_identify" 9 "nvme_ctrl_identify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_identify" 9 "nvme_ctrl_identify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_identify \- Issues an 'identify controller' command .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_is_discovered.2 b/doc/man/nvme_ctrl_is_discovered.2 index 1bfe472..d6dd6d5 100644 --- a/doc/man/nvme_ctrl_is_discovered.2 +++ b/doc/man/nvme_ctrl_is_discovered.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_is_discovered" 9 "nvme_ctrl_is_discovered" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_is_discovered" 9 "nvme_ctrl_is_discovered" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_is_discovered \- Returns the value of the 'discovered' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_is_discovery_ctrl.2 b/doc/man/nvme_ctrl_is_discovery_ctrl.2 index 81da033..6ad4d00 100644 --- a/doc/man/nvme_ctrl_is_discovery_ctrl.2 +++ b/doc/man/nvme_ctrl_is_discovery_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_is_discovery_ctrl" 9 "nvme_ctrl_is_discovery_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_is_discovery_ctrl" 9 "nvme_ctrl_is_discovery_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_is_discovery_ctrl \- Check the 'discovery_ctrl' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_is_persistent.2 b/doc/man/nvme_ctrl_is_persistent.2 index a4e4aec..37ca92c 100644 --- a/doc/man/nvme_ctrl_is_persistent.2 +++ b/doc/man/nvme_ctrl_is_persistent.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_is_persistent" 9 "nvme_ctrl_is_persistent" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_is_persistent" 9 "nvme_ctrl_is_persistent" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_is_persistent \- Returns the value of the 'persistent' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_list.2 b/doc/man/nvme_ctrl_list.2 index 264775e..dabdc0c 100644 --- a/doc/man/nvme_ctrl_list.2 +++ b/doc/man/nvme_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_ctrl_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_ctrl_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_ctrl_list \- Controller List .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_metadata_type.2 b/doc/man/nvme_ctrl_metadata_type.2 index b7e36b6..24caeee 100644 --- a/doc/man/nvme_ctrl_metadata_type.2 +++ b/doc/man/nvme_ctrl_metadata_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ctrl_metadata_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ctrl_metadata_type" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ctrl_metadata_type \- Controller Metadata Element Types .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_next_ns.2 b/doc/man/nvme_ctrl_next_ns.2 index 6a6459f..7e98add 100644 --- a/doc/man/nvme_ctrl_next_ns.2 +++ b/doc/man/nvme_ctrl_next_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_next_ns" 9 "nvme_ctrl_next_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_next_ns" 9 "nvme_ctrl_next_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_next_ns \- Next namespace iterator .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_next_path.2 b/doc/man/nvme_ctrl_next_path.2 index 2b76335..2081965 100644 --- a/doc/man/nvme_ctrl_next_path.2 +++ b/doc/man/nvme_ctrl_next_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_next_path" 9 "nvme_ctrl_next_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_next_path" 9 "nvme_ctrl_next_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_next_path \- Next path iterator .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_reset.2 b/doc/man/nvme_ctrl_reset.2 index 0d8ede1..55f084a 100644 --- a/doc/man/nvme_ctrl_reset.2 +++ b/doc/man/nvme_ctrl_reset.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_reset" 9 "nvme_ctrl_reset" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_reset" 9 "nvme_ctrl_reset" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_reset \- Initiate a controller reset .SH SYNOPSIS 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..036c29e --- /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" "October 2022" "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 index 506de41..bcaaf86 100644 --- a/doc/man/nvme_ctrl_set_dhchap_key.2 +++ b/doc/man/nvme_ctrl_set_dhchap_key.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_set_dhchap_key" 9 "nvme_ctrl_set_dhchap_key" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_set_dhchap_key" 9 "nvme_ctrl_set_dhchap_key" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_set_dhchap_key \- Set controller key .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_set_discovered.2 b/doc/man/nvme_ctrl_set_discovered.2 index 4e7bf4c..0565135 100644 --- a/doc/man/nvme_ctrl_set_discovered.2 +++ b/doc/man/nvme_ctrl_set_discovered.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_set_discovered" 9 "nvme_ctrl_set_discovered" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_set_discovered" 9 "nvme_ctrl_set_discovered" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_set_discovered \- Set the 'discovered' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_set_discovery_ctrl.2 b/doc/man/nvme_ctrl_set_discovery_ctrl.2 index d21c93e..a2c6200 100644 --- a/doc/man/nvme_ctrl_set_discovery_ctrl.2 +++ b/doc/man/nvme_ctrl_set_discovery_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_set_discovery_ctrl" 9 "nvme_ctrl_set_discovery_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_set_discovery_ctrl" 9 "nvme_ctrl_set_discovery_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_set_discovery_ctrl \- Set the 'discovery_ctrl' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrl_set_persistent.2 b/doc/man/nvme_ctrl_set_persistent.2 index 5fee767..d86e8d9 100644 --- a/doc/man/nvme_ctrl_set_persistent.2 +++ b/doc/man/nvme_ctrl_set_persistent.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrl_set_persistent" 9 "nvme_ctrl_set_persistent" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrl_set_persistent" 9 "nvme_ctrl_set_persistent" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrl_set_persistent \- Set the 'persistent' flag .SH SYNOPSIS diff --git a/doc/man/nvme_ctrls_filter.2 b/doc/man/nvme_ctrls_filter.2 index 70666bb..498f724 100644 --- a/doc/man/nvme_ctrls_filter.2 +++ b/doc/man/nvme_ctrls_filter.2 @@ -1,4 +1,4 @@ -.TH "nvme_ctrls_filter" 9 "nvme_ctrls_filter" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ctrls_filter" 9 "nvme_ctrls_filter" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ctrls_filter \- Filter for controllers .SH SYNOPSIS diff --git a/doc/man/nvme_data_tfr.2 b/doc/man/nvme_data_tfr.2 new file mode 100644 index 0000000..bf0e99a --- /dev/null +++ b/doc/man/nvme_data_tfr.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvme_data_tfr" "October 2022" "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 index f112ab2..2ca5d98 100644 --- a/doc/man/nvme_default_host.2 +++ b/doc/man/nvme_default_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_default_host" 9 "nvme_default_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_default_host" 9 "nvme_default_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_default_host \- Initializes the default host .SH SYNOPSIS diff --git a/doc/man/nvme_dev_self_test.2 b/doc/man/nvme_dev_self_test.2 index ac994a0..e366b9b 100644 --- a/doc/man/nvme_dev_self_test.2 +++ b/doc/man/nvme_dev_self_test.2 @@ -1,4 +1,4 @@ -.TH "nvme_dev_self_test" 9 "nvme_dev_self_test" "August 2022" "libnvme API manual" LINUX +.TH "nvme_dev_self_test" 9 "nvme_dev_self_test" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_dev_self_test \- Start or abort a self test .SH SYNOPSIS diff --git a/doc/man/nvme_directive_dtype.2 b/doc/man/nvme_directive_dtype.2 index dee8114..8ee7b9c 100644 --- a/doc/man/nvme_directive_dtype.2 +++ b/doc/man/nvme_directive_dtype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_directive_dtype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_directive_dtype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_directive_dtype \- Directive Types .SH SYNOPSIS diff --git a/doc/man/nvme_directive_receive_doper.2 b/doc/man/nvme_directive_receive_doper.2 index 4b00691..03c43ab 100644 --- a/doc/man/nvme_directive_receive_doper.2 +++ b/doc/man/nvme_directive_receive_doper.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_directive_receive_doper" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_directive_receive_doper" "October 2022" "API Manual" LINUX .SH NAME enum nvme_directive_receive_doper \- Directive Receive Directive Operation .SH SYNOPSIS diff --git a/doc/man/nvme_directive_recv.2 b/doc/man/nvme_directive_recv.2 index b3aa7b0..1494ecd 100644 --- a/doc/man/nvme_directive_recv.2 +++ b/doc/man/nvme_directive_recv.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_recv" 9 "nvme_directive_recv" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_recv" 9 "nvme_directive_recv" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_recv \- Receive directive specific data .SH SYNOPSIS diff --git a/doc/man/nvme_directive_recv_identify_parameters.2 b/doc/man/nvme_directive_recv_identify_parameters.2 index 3f8e2f0..828c5b6 100644 --- a/doc/man/nvme_directive_recv_identify_parameters.2 +++ b/doc/man/nvme_directive_recv_identify_parameters.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_recv_identify_parameters" 9 "nvme_directive_recv_identify_parameters" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_recv_identify_parameters" 9 "nvme_directive_recv_identify_parameters" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_recv_identify_parameters \- Directive receive identifier parameters .SH SYNOPSIS diff --git a/doc/man/nvme_directive_recv_stream_allocate.2 b/doc/man/nvme_directive_recv_stream_allocate.2 index 2e7304c..1311585 100644 --- a/doc/man/nvme_directive_recv_stream_allocate.2 +++ b/doc/man/nvme_directive_recv_stream_allocate.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_recv_stream_allocate" 9 "nvme_directive_recv_stream_allocate" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_recv_stream_allocate" 9 "nvme_directive_recv_stream_allocate" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_recv_stream_allocate \- Directive receive stream allocate .SH SYNOPSIS diff --git a/doc/man/nvme_directive_recv_stream_parameters.2 b/doc/man/nvme_directive_recv_stream_parameters.2 index 6e5d77c..179c4a6 100644 --- a/doc/man/nvme_directive_recv_stream_parameters.2 +++ b/doc/man/nvme_directive_recv_stream_parameters.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_recv_stream_parameters" 9 "nvme_directive_recv_stream_parameters" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_recv_stream_parameters" 9 "nvme_directive_recv_stream_parameters" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_recv_stream_parameters \- Directive receive stream parameters .SH SYNOPSIS diff --git a/doc/man/nvme_directive_recv_stream_status.2 b/doc/man/nvme_directive_recv_stream_status.2 index 497bbeb..68101c9 100644 --- a/doc/man/nvme_directive_recv_stream_status.2 +++ b/doc/man/nvme_directive_recv_stream_status.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_recv_stream_status" 9 "nvme_directive_recv_stream_status" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_recv_stream_status" 9 "nvme_directive_recv_stream_status" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_recv_stream_status \- Directive receive stream status .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send.2 b/doc/man/nvme_directive_send.2 index 9fad9ef..74469e3 100644 --- a/doc/man/nvme_directive_send.2 +++ b/doc/man/nvme_directive_send.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_send" 9 "nvme_directive_send" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_send" 9 "nvme_directive_send" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_send \- Send directive command .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send_doper.2 b/doc/man/nvme_directive_send_doper.2 index 48355e4..7e8bd7d 100644 --- a/doc/man/nvme_directive_send_doper.2 +++ b/doc/man/nvme_directive_send_doper.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_directive_send_doper" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_directive_send_doper" "October 2022" "API Manual" LINUX .SH NAME enum nvme_directive_send_doper \- Directive Send Directive Operation .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send_id_endir.2 b/doc/man/nvme_directive_send_id_endir.2 index 3f6f46e..9d47611 100644 --- a/doc/man/nvme_directive_send_id_endir.2 +++ b/doc/man/nvme_directive_send_id_endir.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_send_id_endir" 9 "nvme_directive_send_id_endir" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_send_id_endir" 9 "nvme_directive_send_id_endir" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_send_id_endir \- Directive Send Enable Directive .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send_identify_endir.2 b/doc/man/nvme_directive_send_identify_endir.2 index 83838ef..b4c3d08 100644 --- a/doc/man/nvme_directive_send_identify_endir.2 +++ b/doc/man/nvme_directive_send_identify_endir.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_directive_send_identify_endir" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_directive_send_identify_endir" "October 2022" "API Manual" LINUX .SH NAME enum nvme_directive_send_identify_endir \- Enable Directive .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send_stream_release_identifier.2 b/doc/man/nvme_directive_send_stream_release_identifier.2 index 09cfb41..baa509e 100644 --- a/doc/man/nvme_directive_send_stream_release_identifier.2 +++ b/doc/man/nvme_directive_send_stream_release_identifier.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_send_stream_release_identifier" 9 "nvme_directive_send_stream_release_identifier" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_send_stream_release_identifier" 9 "nvme_directive_send_stream_release_identifier" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_send_stream_release_identifier \- Directive Send Stream release .SH SYNOPSIS diff --git a/doc/man/nvme_directive_send_stream_release_resource.2 b/doc/man/nvme_directive_send_stream_release_resource.2 index 1ddfa74..fbcb609 100644 --- a/doc/man/nvme_directive_send_stream_release_resource.2 +++ b/doc/man/nvme_directive_send_stream_release_resource.2 @@ -1,4 +1,4 @@ -.TH "nvme_directive_send_stream_release_resource" 9 "nvme_directive_send_stream_release_resource" "August 2022" "libnvme API manual" LINUX +.TH "nvme_directive_send_stream_release_resource" 9 "nvme_directive_send_stream_release_resource" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_directive_send_stream_release_resource \- Directive Send Stream release resources .SH SYNOPSIS diff --git a/doc/man/nvme_directive_types.2 b/doc/man/nvme_directive_types.2 index f8ba3c1..944dca7 100644 --- a/doc/man/nvme_directive_types.2 +++ b/doc/man/nvme_directive_types.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_directive_types" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_directive_types" "October 2022" "API Manual" LINUX .SH NAME enum nvme_directive_types \- Directives Supported or Enabled .SH SYNOPSIS diff --git a/doc/man/nvme_disconnect_ctrl.2 b/doc/man/nvme_disconnect_ctrl.2 index be383ad..7e7db99 100644 --- a/doc/man/nvme_disconnect_ctrl.2 +++ b/doc/man/nvme_disconnect_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_disconnect_ctrl" 9 "nvme_disconnect_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_disconnect_ctrl" 9 "nvme_disconnect_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_disconnect_ctrl \- Disconnect a controller .SH SYNOPSIS diff --git a/doc/man/nvme_dsm.2 b/doc/man/nvme_dsm.2 index 2c9e37c..b567d21 100644 --- a/doc/man/nvme_dsm.2 +++ b/doc/man/nvme_dsm.2 @@ -1,4 +1,4 @@ -.TH "nvme_dsm" 9 "nvme_dsm" "August 2022" "libnvme API manual" LINUX +.TH "nvme_dsm" 9 "nvme_dsm" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_dsm \- Send an nvme data set management command .SH SYNOPSIS diff --git a/doc/man/nvme_dsm_attributes.2 b/doc/man/nvme_dsm_attributes.2 index 8f326a1..1c42a94 100644 --- a/doc/man/nvme_dsm_attributes.2 +++ b/doc/man/nvme_dsm_attributes.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_dsm_attributes" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_dsm_attributes" "October 2022" "API Manual" LINUX .SH NAME enum nvme_dsm_attributes \- Dataset Management attributes .SH SYNOPSIS diff --git a/doc/man/nvme_dsm_range.2 b/doc/man/nvme_dsm_range.2 index 04bc88c..8ff7b3c 100644 --- a/doc/man/nvme_dsm_range.2 +++ b/doc/man/nvme_dsm_range.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_dsm_range" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_dsm_range" "October 2022" "API Manual" LINUX .SH NAME struct nvme_dsm_range \- Dataset Management - Range Definition .SH SYNOPSIS diff --git a/doc/man/nvme_dst_stc.2 b/doc/man/nvme_dst_stc.2 index b22649c..9654e64 100644 --- a/doc/man/nvme_dst_stc.2 +++ b/doc/man/nvme_dst_stc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_dst_stc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_dst_stc" "October 2022" "API Manual" LINUX .SH NAME enum nvme_dst_stc \- Action taken by the Device Self-test command .SH SYNOPSIS diff --git a/doc/man/nvme_dump_config.2 b/doc/man/nvme_dump_config.2 index 1403ca5..400da1d 100644 --- a/doc/man/nvme_dump_config.2 +++ b/doc/man/nvme_dump_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_dump_config" 9 "nvme_dump_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_dump_config" 9 "nvme_dump_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_dump_config \- Print the JSON configuration .SH SYNOPSIS diff --git a/doc/man/nvme_dump_tree.2 b/doc/man/nvme_dump_tree.2 index 35c51e5..52b5392 100644 --- a/doc/man/nvme_dump_tree.2 +++ b/doc/man/nvme_dump_tree.2 @@ -1,4 +1,4 @@ -.TH "nvme_dump_tree" 9 "nvme_dump_tree" "August 2022" "libnvme API manual" LINUX +.TH "nvme_dump_tree" 9 "nvme_dump_tree" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_dump_tree \- Dump internal object tree .SH SYNOPSIS diff --git a/doc/man/nvme_eg_critical_warning_flags.2 b/doc/man/nvme_eg_critical_warning_flags.2 index d5a4a8e..e60d99b 100644 --- a/doc/man/nvme_eg_critical_warning_flags.2 +++ b/doc/man/nvme_eg_critical_warning_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_eg_critical_warning_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_eg_critical_warning_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_eg_critical_warning_flags \- Endurance Group Information Log - Critical Warning .SH SYNOPSIS diff --git a/doc/man/nvme_eg_event_aggregate_log.2 b/doc/man/nvme_eg_event_aggregate_log.2 index 7c52e69..7ee2d83 100644 --- a/doc/man/nvme_eg_event_aggregate_log.2 +++ b/doc/man/nvme_eg_event_aggregate_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_eg_event_aggregate_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_eg_event_aggregate_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_eg_event_aggregate_log \- Endurance Group Event Aggregate .SH SYNOPSIS diff --git a/doc/man/nvme_end_grp_chan_desc.2 b/doc/man/nvme_end_grp_chan_desc.2 index d5142ea..d016877 100644 --- a/doc/man/nvme_end_grp_chan_desc.2 +++ b/doc/man/nvme_end_grp_chan_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_end_grp_chan_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_end_grp_chan_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_end_grp_chan_desc \- Endurance Group Channel Configuration Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_end_grp_config_desc.2 b/doc/man/nvme_end_grp_config_desc.2 index 35039a9..947aada 100644 --- a/doc/man/nvme_end_grp_config_desc.2 +++ b/doc/man/nvme_end_grp_config_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_end_grp_config_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_end_grp_config_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_end_grp_config_desc \- Endurance Group Configuration Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_endurance_group_log.2 b/doc/man/nvme_endurance_group_log.2 index e9da166..57dd1d8 100644 --- a/doc/man/nvme_endurance_group_log.2 +++ b/doc/man/nvme_endurance_group_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_endurance_group_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_endurance_group_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_endurance_group_log \- Endurance Group Information Log .SH SYNOPSIS diff --git a/doc/man/nvme_errno_to_string.2 b/doc/man/nvme_errno_to_string.2 index a0aaad5..71fb96a 100644 --- a/doc/man/nvme_errno_to_string.2 +++ b/doc/man/nvme_errno_to_string.2 @@ -1,4 +1,4 @@ -.TH "nvme_errno_to_string" 9 "nvme_errno_to_string" "August 2022" "libnvme API manual" LINUX +.TH "nvme_errno_to_string" 9 "nvme_errno_to_string" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_errno_to_string \- Returns string describing nvme connect failures .SH SYNOPSIS diff --git a/doc/man/nvme_error_log_page.2 b/doc/man/nvme_error_log_page.2 index 8188d83..80a1efa 100644 --- a/doc/man/nvme_error_log_page.2 +++ b/doc/man/nvme_error_log_page.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_error_log_page" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_error_log_page" "October 2022" "API Manual" LINUX .SH NAME struct nvme_error_log_page \- Error Information Log Entry (Log Identifier 01h) .SH SYNOPSIS diff --git a/doc/man/nvme_fabrics_config.2 b/doc/man/nvme_fabrics_config.2 index 72b3021..f0ff8f8 100644 --- a/doc/man/nvme_fabrics_config.2 +++ b/doc/man/nvme_fabrics_config.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_fabrics_config" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_fabrics_config" "October 2022" "API Manual" LINUX .SH NAME struct nvme_fabrics_config \- Defines all linux nvme fabrics initiator options .SH SYNOPSIS diff --git a/doc/man/nvme_fctype.2 b/doc/man/nvme_fctype.2 index 90b5d46..42b1c0c 100644 --- a/doc/man/nvme_fctype.2 +++ b/doc/man/nvme_fctype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_fctype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_fctype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_fctype \- Fabrics Command Types .SH SYNOPSIS diff --git a/doc/man/nvme_feat.2 b/doc/man/nvme_feat.2 index 86cb2f4..6b2e8b3 100644 --- a/doc/man/nvme_feat.2 +++ b/doc/man/nvme_feat.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_feat" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_feat" "October 2022" "API Manual" LINUX .SH NAME enum nvme_feat \- Features Access Shifts/Masks values .SH SYNOPSIS diff --git a/doc/man/nvme_feat_auto_pst.2 b/doc/man/nvme_feat_auto_pst.2 index ef8989d..48ec4c0 100644 --- a/doc/man/nvme_feat_auto_pst.2 +++ b/doc/man/nvme_feat_auto_pst.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_feat_auto_pst" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_feat_auto_pst" "October 2022" "API Manual" LINUX .SH NAME struct nvme_feat_auto_pst \- Autonomous Power State Transition .SH SYNOPSIS diff --git a/doc/man/nvme_feat_host_behavior.2 b/doc/man/nvme_feat_host_behavior.2 index 9949541..c4357ca 100644 --- a/doc/man/nvme_feat_host_behavior.2 +++ b/doc/man/nvme_feat_host_behavior.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_feat_host_behavior" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_feat_host_behavior" "October 2022" "API Manual" LINUX .SH NAME struct nvme_feat_host_behavior \- Host Behavior Support - Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_feat_nswpcfg_state.2 b/doc/man/nvme_feat_nswpcfg_state.2 index d7dc994..408cd21 100644 --- a/doc/man/nvme_feat_nswpcfg_state.2 +++ b/doc/man/nvme_feat_nswpcfg_state.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_feat_nswpcfg_state" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_feat_nswpcfg_state" "October 2022" "API Manual" LINUX .SH NAME enum nvme_feat_nswpcfg_state \- Write Protection - Write Protection State .SH SYNOPSIS diff --git a/doc/man/nvme_feat_plm_window_select.2 b/doc/man/nvme_feat_plm_window_select.2 index 43ffe97..8b11e49 100644 --- a/doc/man/nvme_feat_plm_window_select.2 +++ b/doc/man/nvme_feat_plm_window_select.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_feat_plm_window_select" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_feat_plm_window_select" "October 2022" "API Manual" LINUX .SH NAME enum nvme_feat_plm_window_select \- Predictable Latency Per NVM Set Log .SH SYNOPSIS diff --git a/doc/man/nvme_feat_resv_notify_flags.2 b/doc/man/nvme_feat_resv_notify_flags.2 index d6ccf35..26c7b4f 100644 --- a/doc/man/nvme_feat_resv_notify_flags.2 +++ b/doc/man/nvme_feat_resv_notify_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_feat_resv_notify_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_feat_resv_notify_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_feat_resv_notify_flags \- Reservation Notification Configuration .SH SYNOPSIS diff --git a/doc/man/nvme_feat_tmpthresh_thsel.2 b/doc/man/nvme_feat_tmpthresh_thsel.2 index 2904619..872658f 100644 --- a/doc/man/nvme_feat_tmpthresh_thsel.2 +++ b/doc/man/nvme_feat_tmpthresh_thsel.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_feat_tmpthresh_thsel" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_feat_tmpthresh_thsel" "October 2022" "API Manual" LINUX .SH NAME enum nvme_feat_tmpthresh_thsel \- Temperature Threshold - Threshold Type Select .SH SYNOPSIS diff --git a/doc/man/nvme_features_async_event_config_flags.2 b/doc/man/nvme_features_async_event_config_flags.2 index 4bcea65..1651598 100644 --- a/doc/man/nvme_features_async_event_config_flags.2 +++ b/doc/man/nvme_features_async_event_config_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_features_async_event_config_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_features_async_event_config_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_features_async_event_config_flags \- Asynchronous Event Configuration configuration flags .SH SYNOPSIS diff --git a/doc/man/nvme_features_id.2 b/doc/man/nvme_features_id.2 index b31f69f..c9c4981 100644 --- a/doc/man/nvme_features_id.2 +++ b/doc/man/nvme_features_id.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_features_id" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_features_id" "October 2022" "API Manual" LINUX .SH NAME enum nvme_features_id \- Features - Feature Identifiers .SH SYNOPSIS diff --git a/doc/man/nvme_fid_supported_effects.2 b/doc/man/nvme_fid_supported_effects.2 index 4f80257..37e424b 100644 --- a/doc/man/nvme_fid_supported_effects.2 +++ b/doc/man/nvme_fid_supported_effects.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_fid_supported_effects" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_fid_supported_effects" "October 2022" "API Manual" LINUX .SH NAME enum nvme_fid_supported_effects \- FID Supported and Effects Data Structure definitions .SH SYNOPSIS diff --git a/doc/man/nvme_fid_supported_effects_log.2 b/doc/man/nvme_fid_supported_effects_log.2 index f73269f..992e47e 100644 --- a/doc/man/nvme_fid_supported_effects_log.2 +++ b/doc/man/nvme_fid_supported_effects_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_fid_supported_effects_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_fid_supported_effects_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_fid_supported_effects_log \- Feature Identifiers Supported and Effects .SH SYNOPSIS diff --git a/doc/man/nvme_firmware_slot.2 b/doc/man/nvme_firmware_slot.2 index f091cc1..6715665 100644 --- a/doc/man/nvme_firmware_slot.2 +++ b/doc/man/nvme_firmware_slot.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_firmware_slot" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_firmware_slot" "October 2022" "API Manual" LINUX .SH NAME struct nvme_firmware_slot \- Firmware Slot Information Log .SH SYNOPSIS diff --git a/doc/man/nvme_first_host.2 b/doc/man/nvme_first_host.2 index 0f65bec..b813604 100644 --- a/doc/man/nvme_first_host.2 +++ b/doc/man/nvme_first_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_first_host" 9 "nvme_first_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_first_host" 9 "nvme_first_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_first_host \- Start host iterator .SH SYNOPSIS diff --git a/doc/man/nvme_first_subsystem.2 b/doc/man/nvme_first_subsystem.2 index 62a6d54..dc356e1 100644 --- a/doc/man/nvme_first_subsystem.2 +++ b/doc/man/nvme_first_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_first_subsystem" 9 "nvme_first_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_first_subsystem" 9 "nvme_first_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_first_subsystem \- Start subsystem iterator .SH SYNOPSIS diff --git a/doc/man/nvme_flush.2 b/doc/man/nvme_flush.2 index 4202f41..125874f 100644 --- a/doc/man/nvme_flush.2 +++ b/doc/man/nvme_flush.2 @@ -1,4 +1,4 @@ -.TH "nvme_flush" 9 "nvme_flush" "August 2022" "libnvme API manual" LINUX +.TH "nvme_flush" 9 "nvme_flush" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_flush \- Send an nvme flush command .SH SYNOPSIS diff --git a/doc/man/nvme_for_each_host.2 b/doc/man/nvme_for_each_host.2 index 03a3882..c8db377 100644 --- a/doc/man/nvme_for_each_host.2 +++ b/doc/man/nvme_for_each_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_for_each_host" 9 "nvme_for_each_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_for_each_host" 9 "nvme_for_each_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_for_each_host \- Traverse host list .SH SYNOPSIS diff --git a/doc/man/nvme_for_each_host_safe.2 b/doc/man/nvme_for_each_host_safe.2 index 8b61009..d95ce6f 100644 --- a/doc/man/nvme_for_each_host_safe.2 +++ b/doc/man/nvme_for_each_host_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_for_each_host_safe" 9 "nvme_for_each_host_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_for_each_host_safe" 9 "nvme_for_each_host_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_for_each_host_safe \- Traverse host list .SH SYNOPSIS diff --git a/doc/man/nvme_for_each_subsystem.2 b/doc/man/nvme_for_each_subsystem.2 index 943819b..29e1a04 100644 --- a/doc/man/nvme_for_each_subsystem.2 +++ b/doc/man/nvme_for_each_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_for_each_subsystem" 9 "nvme_for_each_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_for_each_subsystem" 9 "nvme_for_each_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_for_each_subsystem \- Traverse subsystems .SH SYNOPSIS diff --git a/doc/man/nvme_for_each_subsystem_safe.2 b/doc/man/nvme_for_each_subsystem_safe.2 index 5d54aef..9ce4e92 100644 --- a/doc/man/nvme_for_each_subsystem_safe.2 +++ b/doc/man/nvme_for_each_subsystem_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_for_each_subsystem_safe" 9 "nvme_for_each_subsystem_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_for_each_subsystem_safe" 9 "nvme_for_each_subsystem_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_for_each_subsystem_safe \- Traverse subsystems .SH SYNOPSIS diff --git a/doc/man/nvme_format_nvm.2 b/doc/man/nvme_format_nvm.2 index 6733f69..698fe37 100644 --- a/doc/man/nvme_format_nvm.2 +++ b/doc/man/nvme_format_nvm.2 @@ -1,4 +1,4 @@ -.TH "nvme_format_nvm" 9 "nvme_format_nvm" "August 2022" "libnvme API manual" LINUX +.TH "nvme_format_nvm" 9 "nvme_format_nvm" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_format_nvm \- Format nvme namespace(s) .SH SYNOPSIS diff --git a/doc/man/nvme_format_nvm_compln_event.2 b/doc/man/nvme_format_nvm_compln_event.2 index 54b462f..967826e 100644 --- a/doc/man/nvme_format_nvm_compln_event.2 +++ b/doc/man/nvme_format_nvm_compln_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_format_nvm_compln_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_format_nvm_compln_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_format_nvm_compln_event \- Format NVM Completion Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_format_nvm_start_event.2 b/doc/man/nvme_format_nvm_start_event.2 index 0356ae8..681aa10 100644 --- a/doc/man/nvme_format_nvm_start_event.2 +++ b/doc/man/nvme_format_nvm_start_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_format_nvm_start_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_format_nvm_start_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_format_nvm_start_event \- Format NVM Start Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_free_ctrl.2 b/doc/man/nvme_free_ctrl.2 index 9a4f5a0..3d7af4a 100644 --- a/doc/man/nvme_free_ctrl.2 +++ b/doc/man/nvme_free_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_free_ctrl" 9 "nvme_free_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_free_ctrl" 9 "nvme_free_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_free_ctrl \- Free controller .SH SYNOPSIS diff --git a/doc/man/nvme_free_host.2 b/doc/man/nvme_free_host.2 index 3738b31..f61d3c5 100644 --- a/doc/man/nvme_free_host.2 +++ b/doc/man/nvme_free_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_free_host" 9 "nvme_free_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_free_host" 9 "nvme_free_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_free_host \- Free nvme_host_t object .SH SYNOPSIS diff --git a/doc/man/nvme_free_ns.2 b/doc/man/nvme_free_ns.2 index 84dcd16..dcf1325 100644 --- a/doc/man/nvme_free_ns.2 +++ b/doc/man/nvme_free_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_free_ns" 9 "nvme_free_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_free_ns" 9 "nvme_free_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_free_ns \- Free a namespace object .SH SYNOPSIS diff --git a/doc/man/nvme_free_subsystem.2 b/doc/man/nvme_free_subsystem.2 index d437768..dd2354a 100644 --- a/doc/man/nvme_free_subsystem.2 +++ b/doc/man/nvme_free_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_free_subsystem" 9 "nvme_free_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_free_subsystem" 9 "nvme_free_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_free_subsystem \- Free a subsystem .SH SYNOPSIS diff --git a/doc/man/nvme_free_tree.2 b/doc/man/nvme_free_tree.2 index 3bfd358..c2a17dd 100644 --- a/doc/man/nvme_free_tree.2 +++ b/doc/man/nvme_free_tree.2 @@ -1,4 +1,4 @@ -.TH "nvme_free_tree" 9 "nvme_free_tree" "August 2022" "libnvme API manual" LINUX +.TH "nvme_free_tree" 9 "nvme_free_tree" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_free_tree \- Free root object .SH SYNOPSIS diff --git a/doc/man/nvme_fw_commit.2 b/doc/man/nvme_fw_commit.2 index f377419..6228653 100644 --- a/doc/man/nvme_fw_commit.2 +++ b/doc/man/nvme_fw_commit.2 @@ -1,4 +1,4 @@ -.TH "nvme_fw_commit" 9 "nvme_fw_commit" "August 2022" "libnvme API manual" LINUX +.TH "nvme_fw_commit" 9 "nvme_fw_commit" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_fw_commit \- Commit firmware using the specified action .SH SYNOPSIS diff --git a/doc/man/nvme_fw_commit_ca.2 b/doc/man/nvme_fw_commit_ca.2 index adea8e6..5c02ae9 100644 --- a/doc/man/nvme_fw_commit_ca.2 +++ b/doc/man/nvme_fw_commit_ca.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_fw_commit_ca" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_fw_commit_ca" "October 2022" "API Manual" LINUX .SH NAME enum nvme_fw_commit_ca \- Firmware Commit - Commit Action .SH SYNOPSIS diff --git a/doc/man/nvme_fw_commit_event.2 b/doc/man/nvme_fw_commit_event.2 index 76a0629..6800b92 100644 --- a/doc/man/nvme_fw_commit_event.2 +++ b/doc/man/nvme_fw_commit_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_fw_commit_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_fw_commit_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_fw_commit_event \- Firmware Commit Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_fw_download.2 b/doc/man/nvme_fw_download.2 index e889e7a..a665318 100644 --- a/doc/man/nvme_fw_download.2 +++ b/doc/man/nvme_fw_download.2 @@ -1,4 +1,4 @@ -.TH "nvme_fw_download" 9 "nvme_fw_download" "August 2022" "libnvme API manual" LINUX +.TH "nvme_fw_download" 9 "nvme_fw_download" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_fw_download \- Download part or all of a firmware image to the controller .SH SYNOPSIS diff --git a/doc/man/nvme_fw_download_seq.2 b/doc/man/nvme_fw_download_seq.2 index 51c545e..c790221 100644 --- a/doc/man/nvme_fw_download_seq.2 +++ b/doc/man/nvme_fw_download_seq.2 @@ -1,4 +1,4 @@ -.TH "nvme_fw_download_seq" 9 "nvme_fw_download_seq" "August 2022" "libnvme API manual" LINUX +.TH "nvme_fw_download_seq" 9 "nvme_fw_download_seq" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_fw_download_seq \- Firmware download sequence .SH SYNOPSIS diff --git a/doc/man/nvme_gen_dhchap_key.2 b/doc/man/nvme_gen_dhchap_key.2 index c4616ca..19531c9 100644 --- a/doc/man/nvme_gen_dhchap_key.2 +++ b/doc/man/nvme_gen_dhchap_key.2 @@ -1,4 +1,4 @@ -.TH "nvme_gen_dhchap_key" 9 "nvme_gen_dhchap_key" "August 2022" "libnvme API manual" LINUX +.TH "nvme_gen_dhchap_key" 9 "nvme_gen_dhchap_key" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_gen_dhchap_key \- DH-HMAC-CHAP key generation .SH SYNOPSIS diff --git a/doc/man/nvme_get_ana_log_len.2 b/doc/man/nvme_get_ana_log_len.2 index a5856d5..0f47d50 100644 --- a/doc/man/nvme_get_ana_log_len.2 +++ b/doc/man/nvme_get_ana_log_len.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_ana_log_len" 9 "nvme_get_ana_log_len" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_ana_log_len" 9 "nvme_get_ana_log_len" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_ana_log_len \- Retrieve size of the current ANA log .SH SYNOPSIS diff --git a/doc/man/nvme_get_attr.2 b/doc/man/nvme_get_attr.2 index f68365c..f5c273f 100644 --- a/doc/man/nvme_get_attr.2 +++ b/doc/man/nvme_get_attr.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_attr" 9 "nvme_get_attr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_attr" 9 "nvme_get_attr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_attr \- Read sysfs attribute .SH SYNOPSIS diff --git a/doc/man/nvme_get_ctrl_attr.2 b/doc/man/nvme_get_ctrl_attr.2 index 04fb5e1..9c28999 100644 --- a/doc/man/nvme_get_ctrl_attr.2 +++ b/doc/man/nvme_get_ctrl_attr.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_ctrl_attr" 9 "nvme_get_ctrl_attr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_ctrl_attr" 9 "nvme_get_ctrl_attr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_ctrl_attr \- Read controller sysfs attribute .SH SYNOPSIS diff --git a/doc/man/nvme_get_ctrl_telemetry.2 b/doc/man/nvme_get_ctrl_telemetry.2 index 3ac2c8b..33d5c16 100644 --- a/doc/man/nvme_get_ctrl_telemetry.2 +++ b/doc/man/nvme_get_ctrl_telemetry.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_ctrl_telemetry" 9 "nvme_get_ctrl_telemetry" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_ctrl_telemetry" 9 "nvme_get_ctrl_telemetry" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_ctrl_telemetry \- Get controller telemetry log .SH SYNOPSIS diff --git a/doc/man/nvme_get_directive_receive_length.2 b/doc/man/nvme_get_directive_receive_length.2 index 686d7cd..e38aca9 100644 --- a/doc/man/nvme_get_directive_receive_length.2 +++ b/doc/man/nvme_get_directive_receive_length.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_directive_receive_length" 9 "nvme_get_directive_receive_length" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_directive_receive_length" 9 "nvme_get_directive_receive_length" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_directive_receive_length \- Get directive receive length .SH SYNOPSIS diff --git a/doc/man/nvme_get_discovery_args.2 b/doc/man/nvme_get_discovery_args.2 new file mode 100644 index 0000000..d80b614 --- /dev/null +++ b/doc/man/nvme_get_discovery_args.2 @@ -0,0 +1,35 @@ +.TH "libnvme" 9 "struct nvme_get_discovery_args" "October 2022" "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 index e415320..b176a02 100644 --- a/doc/man/nvme_get_feature_length.2 +++ b/doc/man/nvme_get_feature_length.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_feature_length" 9 "nvme_get_feature_length" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_feature_length" 9 "nvme_get_feature_length" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_feature_length \- Retreive the command payload length for a specific feature identifier .SH SYNOPSIS diff --git a/doc/man/nvme_get_feature_length2.2 b/doc/man/nvme_get_feature_length2.2 new file mode 100644 index 0000000..9a3d5a9 --- /dev/null +++ b/doc/man/nvme_get_feature_length2.2 @@ -0,0 +1,24 @@ +.TH "nvme_get_feature_length2" 9 "nvme_get_feature_length2" "October 2022" "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 index bfa165f..98d10ce 100644 --- a/doc/man/nvme_get_features.2 +++ b/doc/man/nvme_get_features.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features" 9 "nvme_get_features" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features" 9 "nvme_get_features" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features \- Retrieve a feature attribute .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_arbitration.2 b/doc/man/nvme_get_features_arbitration.2 index 3dd2755..d179153 100644 --- a/doc/man/nvme_get_features_arbitration.2 +++ b/doc/man/nvme_get_features_arbitration.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_arbitration" 9 "nvme_get_features_arbitration" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_arbitration" 9 "nvme_get_features_arbitration" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_arbitration \- Get arbitration feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_async_event.2 b/doc/man/nvme_get_features_async_event.2 index 136083d..dd32249 100644 --- a/doc/man/nvme_get_features_async_event.2 +++ b/doc/man/nvme_get_features_async_event.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_async_event" 9 "nvme_get_features_async_event" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_async_event" 9 "nvme_get_features_async_event" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_async_event \- Get asynchronous event feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_auto_pst.2 b/doc/man/nvme_get_features_auto_pst.2 index 294185f..3841101 100644 --- a/doc/man/nvme_get_features_auto_pst.2 +++ b/doc/man/nvme_get_features_auto_pst.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_auto_pst" 9 "nvme_get_features_auto_pst" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_auto_pst" 9 "nvme_get_features_auto_pst" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_auto_pst \- Get autonomous power state feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_data.2 b/doc/man/nvme_get_features_data.2 index 5e52115..2091ad6 100644 --- a/doc/man/nvme_get_features_data.2 +++ b/doc/man/nvme_get_features_data.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_data" 9 "nvme_get_features_data" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_data" 9 "nvme_get_features_data" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_data \- Helper function for @nvme_get_features() .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_endurance_event_cfg.2 b/doc/man/nvme_get_features_endurance_event_cfg.2 index 5b75c92..9ccac84 100644 --- a/doc/man/nvme_get_features_endurance_event_cfg.2 +++ b/doc/man/nvme_get_features_endurance_event_cfg.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_endurance_event_cfg" 9 "nvme_get_features_endurance_event_cfg" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_endurance_event_cfg" 9 "nvme_get_features_endurance_event_cfg" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_endurance_event_cfg \- Get endurance event config feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_err_recovery.2 b/doc/man/nvme_get_features_err_recovery.2 index 679f201..a40fe1b 100644 --- a/doc/man/nvme_get_features_err_recovery.2 +++ b/doc/man/nvme_get_features_err_recovery.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_err_recovery" 9 "nvme_get_features_err_recovery" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_err_recovery" 9 "nvme_get_features_err_recovery" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_err_recovery \- Get error recovery feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_hctm.2 b/doc/man/nvme_get_features_hctm.2 index bcdbcd2..ede7b19 100644 --- a/doc/man/nvme_get_features_hctm.2 +++ b/doc/man/nvme_get_features_hctm.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_hctm" 9 "nvme_get_features_hctm" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_hctm" 9 "nvme_get_features_hctm" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_hctm \- Get thermal management feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_host_behavior.2 b/doc/man/nvme_get_features_host_behavior.2 index 541042b..6086336 100644 --- a/doc/man/nvme_get_features_host_behavior.2 +++ b/doc/man/nvme_get_features_host_behavior.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_host_behavior" 9 "nvme_get_features_host_behavior" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_host_behavior" 9 "nvme_get_features_host_behavior" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_host_behavior \- Get host behavior feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_host_id.2 b/doc/man/nvme_get_features_host_id.2 index f162e02..52a611a 100644 --- a/doc/man/nvme_get_features_host_id.2 +++ b/doc/man/nvme_get_features_host_id.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_host_id" 9 "nvme_get_features_host_id" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_host_id" 9 "nvme_get_features_host_id" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_host_id \- Get host id feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_host_mem_buf.2 b/doc/man/nvme_get_features_host_mem_buf.2 index 7a88166..92eaf75 100644 --- a/doc/man/nvme_get_features_host_mem_buf.2 +++ b/doc/man/nvme_get_features_host_mem_buf.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_host_mem_buf" 9 "nvme_get_features_host_mem_buf" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_host_mem_buf" 9 "nvme_get_features_host_mem_buf" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_host_mem_buf \- Get host memory buffer feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_iocs_profile.2 b/doc/man/nvme_get_features_iocs_profile.2 index f1a78fe..6a961a4 100644 --- a/doc/man/nvme_get_features_iocs_profile.2 +++ b/doc/man/nvme_get_features_iocs_profile.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_iocs_profile" 9 "nvme_get_features_iocs_profile" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_iocs_profile" 9 "nvme_get_features_iocs_profile" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_iocs_profile \- Get IOCS profile feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_irq_coalesce.2 b/doc/man/nvme_get_features_irq_coalesce.2 index ade03a8..f09f537 100644 --- a/doc/man/nvme_get_features_irq_coalesce.2 +++ b/doc/man/nvme_get_features_irq_coalesce.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_irq_coalesce" 9 "nvme_get_features_irq_coalesce" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_irq_coalesce" 9 "nvme_get_features_irq_coalesce" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_irq_coalesce \- Get IRQ coalesce feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_irq_config.2 b/doc/man/nvme_get_features_irq_config.2 index 2a6f9d4..f07d1b6 100644 --- a/doc/man/nvme_get_features_irq_config.2 +++ b/doc/man/nvme_get_features_irq_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_irq_config" 9 "nvme_get_features_irq_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_irq_config" 9 "nvme_get_features_irq_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_irq_config \- Get IRQ config feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_kato.2 b/doc/man/nvme_get_features_kato.2 index c9b7e1e..da3130c 100644 --- a/doc/man/nvme_get_features_kato.2 +++ b/doc/man/nvme_get_features_kato.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_kato" 9 "nvme_get_features_kato" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_kato" 9 "nvme_get_features_kato" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_kato \- Get keep alive timeout feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_lba_range.2 b/doc/man/nvme_get_features_lba_range.2 index 861d375..88ac731 100644 --- a/doc/man/nvme_get_features_lba_range.2 +++ b/doc/man/nvme_get_features_lba_range.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_lba_range" 9 "nvme_get_features_lba_range" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_lba_range" 9 "nvme_get_features_lba_range" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_lba_range \- Get LBA range feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_lba_sts_interval.2 b/doc/man/nvme_get_features_lba_sts_interval.2 index 1361e02..2c77cfc 100644 --- a/doc/man/nvme_get_features_lba_sts_interval.2 +++ b/doc/man/nvme_get_features_lba_sts_interval.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_lba_sts_interval" 9 "nvme_get_features_lba_sts_interval" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_lba_sts_interval" 9 "nvme_get_features_lba_sts_interval" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_lba_sts_interval \- Get LBA status information feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_nopsc.2 b/doc/man/nvme_get_features_nopsc.2 index 3ac22cc..7710964 100644 --- a/doc/man/nvme_get_features_nopsc.2 +++ b/doc/man/nvme_get_features_nopsc.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_nopsc" 9 "nvme_get_features_nopsc" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_nopsc" 9 "nvme_get_features_nopsc" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_nopsc \- Get non-operational power state feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_num_queues.2 b/doc/man/nvme_get_features_num_queues.2 index 863638e..4a577a9 100644 --- a/doc/man/nvme_get_features_num_queues.2 +++ b/doc/man/nvme_get_features_num_queues.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_num_queues" 9 "nvme_get_features_num_queues" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_num_queues" 9 "nvme_get_features_num_queues" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_num_queues \- Get number of queues feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_plm_config.2 b/doc/man/nvme_get_features_plm_config.2 index 6911319..ec2f5ce 100644 --- a/doc/man/nvme_get_features_plm_config.2 +++ b/doc/man/nvme_get_features_plm_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_plm_config" 9 "nvme_get_features_plm_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_plm_config" 9 "nvme_get_features_plm_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_plm_config \- Get predictable latency feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_plm_window.2 b/doc/man/nvme_get_features_plm_window.2 index 14095d1..1b653a9 100644 --- a/doc/man/nvme_get_features_plm_window.2 +++ b/doc/man/nvme_get_features_plm_window.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_plm_window" 9 "nvme_get_features_plm_window" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_plm_window" 9 "nvme_get_features_plm_window" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_plm_window \- Get window select feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_power_mgmt.2 b/doc/man/nvme_get_features_power_mgmt.2 index c89fcec..75f7a01 100644 --- a/doc/man/nvme_get_features_power_mgmt.2 +++ b/doc/man/nvme_get_features_power_mgmt.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_power_mgmt" 9 "nvme_get_features_power_mgmt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_power_mgmt" 9 "nvme_get_features_power_mgmt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_power_mgmt \- Get power management feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_resv_mask.2 b/doc/man/nvme_get_features_resv_mask.2 index 815dc8d..059ae3b 100644 --- a/doc/man/nvme_get_features_resv_mask.2 +++ b/doc/man/nvme_get_features_resv_mask.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_resv_mask" 9 "nvme_get_features_resv_mask" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_resv_mask" 9 "nvme_get_features_resv_mask" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_resv_mask \- Get reservation mask feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_resv_persist.2 b/doc/man/nvme_get_features_resv_persist.2 index 3b7315c..5634e9e 100644 --- a/doc/man/nvme_get_features_resv_persist.2 +++ b/doc/man/nvme_get_features_resv_persist.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_resv_persist" 9 "nvme_get_features_resv_persist" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_resv_persist" 9 "nvme_get_features_resv_persist" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_resv_persist \- Get reservation persist feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_rrl.2 b/doc/man/nvme_get_features_rrl.2 index 1cde710..a20b8fc 100644 --- a/doc/man/nvme_get_features_rrl.2 +++ b/doc/man/nvme_get_features_rrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_rrl" 9 "nvme_get_features_rrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_rrl" 9 "nvme_get_features_rrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_rrl \- Get read recovery level feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_sanitize.2 b/doc/man/nvme_get_features_sanitize.2 index 625f014..b5869ec 100644 --- a/doc/man/nvme_get_features_sanitize.2 +++ b/doc/man/nvme_get_features_sanitize.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_sanitize" 9 "nvme_get_features_sanitize" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_sanitize" 9 "nvme_get_features_sanitize" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_sanitize \- Get sanitize feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_sel.2 b/doc/man/nvme_get_features_sel.2 index 2eff9b7..7381831 100644 --- a/doc/man/nvme_get_features_sel.2 +++ b/doc/man/nvme_get_features_sel.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_get_features_sel" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_get_features_sel" "October 2022" "API Manual" LINUX .SH NAME enum nvme_get_features_sel \- Get Features - Select .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_simple.2 b/doc/man/nvme_get_features_simple.2 index 8712cf7..e528114 100644 --- a/doc/man/nvme_get_features_simple.2 +++ b/doc/man/nvme_get_features_simple.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_simple" 9 "nvme_get_features_simple" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_simple" 9 "nvme_get_features_simple" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_simple \- Helper function for @nvme_get_features() .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_sw_progress.2 b/doc/man/nvme_get_features_sw_progress.2 index b3f9d74..745221c 100644 --- a/doc/man/nvme_get_features_sw_progress.2 +++ b/doc/man/nvme_get_features_sw_progress.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_sw_progress" 9 "nvme_get_features_sw_progress" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_sw_progress" 9 "nvme_get_features_sw_progress" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_sw_progress \- Get software progress feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_temp_thresh.2 b/doc/man/nvme_get_features_temp_thresh.2 index 7d6cca8..30d0e97 100644 --- a/doc/man/nvme_get_features_temp_thresh.2 +++ b/doc/man/nvme_get_features_temp_thresh.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_temp_thresh" 9 "nvme_get_features_temp_thresh" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_temp_thresh" 9 "nvme_get_features_temp_thresh" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_temp_thresh \- Get temperature threshold feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_timestamp.2 b/doc/man/nvme_get_features_timestamp.2 index 10518bd..d8c6503 100644 --- a/doc/man/nvme_get_features_timestamp.2 +++ b/doc/man/nvme_get_features_timestamp.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_timestamp" 9 "nvme_get_features_timestamp" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_timestamp" 9 "nvme_get_features_timestamp" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_timestamp \- Get timestamp feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_volatile_wc.2 b/doc/man/nvme_get_features_volatile_wc.2 index 3d05971..76db21e 100644 --- a/doc/man/nvme_get_features_volatile_wc.2 +++ b/doc/man/nvme_get_features_volatile_wc.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_volatile_wc" 9 "nvme_get_features_volatile_wc" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_volatile_wc" 9 "nvme_get_features_volatile_wc" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_volatile_wc \- Get volatile write cache feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_write_atomic.2 b/doc/man/nvme_get_features_write_atomic.2 index 2dbbce3..8d4d814 100644 --- a/doc/man/nvme_get_features_write_atomic.2 +++ b/doc/man/nvme_get_features_write_atomic.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_write_atomic" 9 "nvme_get_features_write_atomic" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_write_atomic" 9 "nvme_get_features_write_atomic" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_write_atomic \- Get write atomic feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_features_write_protect.2 b/doc/man/nvme_get_features_write_protect.2 index 63e81ff..4ad6411 100644 --- a/doc/man/nvme_get_features_write_protect.2 +++ b/doc/man/nvme_get_features_write_protect.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_features_write_protect" 9 "nvme_get_features_write_protect" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_features_write_protect" 9 "nvme_get_features_write_protect" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_features_write_protect \- Get write protect feature .SH SYNOPSIS diff --git a/doc/man/nvme_get_host_telemetry.2 b/doc/man/nvme_get_host_telemetry.2 index 6d78fff..c5df379 100644 --- a/doc/man/nvme_get_host_telemetry.2 +++ b/doc/man/nvme_get_host_telemetry.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_host_telemetry" 9 "nvme_get_host_telemetry" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_host_telemetry" 9 "nvme_get_host_telemetry" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_host_telemetry \- Get host telemetry log .SH SYNOPSIS diff --git a/doc/man/nvme_get_lba_status.2 b/doc/man/nvme_get_lba_status.2 index 3ee965c..cab0c57 100644 --- a/doc/man/nvme_get_lba_status.2 +++ b/doc/man/nvme_get_lba_status.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_lba_status" 9 "nvme_get_lba_status" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_lba_status" 9 "nvme_get_lba_status" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_lba_status \- Retrieve information on possibly unrecoverable LBAs .SH SYNOPSIS diff --git a/doc/man/nvme_get_lba_status_log.2 b/doc/man/nvme_get_lba_status_log.2 index 860e4b8..4490880 100644 --- a/doc/man/nvme_get_lba_status_log.2 +++ b/doc/man/nvme_get_lba_status_log.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_lba_status_log" 9 "nvme_get_lba_status_log" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_lba_status_log" 9 "nvme_get_lba_status_log" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_lba_status_log \- Retrieve the LBA Status log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log.2 b/doc/man/nvme_get_log.2 index 86b5a82..5c9f50c 100644 --- a/doc/man/nvme_get_log.2 +++ b/doc/man/nvme_get_log.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log" 9 "nvme_get_log" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log" 9 "nvme_get_log" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log \- NVMe Admin Get Log command .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_ana.2 b/doc/man/nvme_get_log_ana.2 index f26ee0e..46d0931 100644 --- a/doc/man/nvme_get_log_ana.2 +++ b/doc/man/nvme_get_log_ana.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_ana" 9 "nvme_get_log_ana" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_ana" 9 "nvme_get_log_ana" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_ana \- Retrieve Asymmetric Namespace Access log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_ana_groups.2 b/doc/man/nvme_get_log_ana_groups.2 index 89e7bfa..6f4a07c 100644 --- a/doc/man/nvme_get_log_ana_groups.2 +++ b/doc/man/nvme_get_log_ana_groups.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_ana_groups" 9 "nvme_get_log_ana_groups" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_ana_groups" 9 "nvme_get_log_ana_groups" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_ana_groups \- Retrieve Asymmetric Namespace Access groups only log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_boot_partition.2 b/doc/man/nvme_get_log_boot_partition.2 index d40fba8..b8d65b0 100644 --- a/doc/man/nvme_get_log_boot_partition.2 +++ b/doc/man/nvme_get_log_boot_partition.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_boot_partition" 9 "nvme_get_log_boot_partition" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_boot_partition" 9 "nvme_get_log_boot_partition" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_boot_partition \- Retrieve Boot Partition .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_changed_ns_list.2 b/doc/man/nvme_get_log_changed_ns_list.2 index 1cd36d6..9ce502e 100644 --- a/doc/man/nvme_get_log_changed_ns_list.2 +++ b/doc/man/nvme_get_log_changed_ns_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_changed_ns_list" 9 "nvme_get_log_changed_ns_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_changed_ns_list" 9 "nvme_get_log_changed_ns_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_changed_ns_list \- Retrieve namespace changed list .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_cmd_effects.2 b/doc/man/nvme_get_log_cmd_effects.2 index 8a06c8a..a5a78b0 100644 --- a/doc/man/nvme_get_log_cmd_effects.2 +++ b/doc/man/nvme_get_log_cmd_effects.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_cmd_effects" 9 "nvme_get_log_cmd_effects" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_cmd_effects" 9 "nvme_get_log_cmd_effects" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_cmd_effects \- Retrieve nvme command effects log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_create_telemetry_host.2 b/doc/man/nvme_get_log_create_telemetry_host.2 index c9313b0..feae35b 100644 --- a/doc/man/nvme_get_log_create_telemetry_host.2 +++ b/doc/man/nvme_get_log_create_telemetry_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_create_telemetry_host" 9 "nvme_get_log_create_telemetry_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_create_telemetry_host" 9 "nvme_get_log_create_telemetry_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_create_telemetry_host \- Create host telemetry log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_device_self_test.2 b/doc/man/nvme_get_log_device_self_test.2 index 0daddca..710f0a0 100644 --- a/doc/man/nvme_get_log_device_self_test.2 +++ b/doc/man/nvme_get_log_device_self_test.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_device_self_test" 9 "nvme_get_log_device_self_test" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_device_self_test" 9 "nvme_get_log_device_self_test" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_device_self_test \- Retrieve the device self test log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_discovery.2 b/doc/man/nvme_get_log_discovery.2 index 761dfc6..3954a13 100644 --- a/doc/man/nvme_get_log_discovery.2 +++ b/doc/man/nvme_get_log_discovery.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_discovery" 9 "nvme_get_log_discovery" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_discovery" 9 "nvme_get_log_discovery" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_discovery \- Retrieve Discovery log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_endurance_group.2 b/doc/man/nvme_get_log_endurance_group.2 index 99af510..7690ec7 100644 --- a/doc/man/nvme_get_log_endurance_group.2 +++ b/doc/man/nvme_get_log_endurance_group.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_endurance_group" 9 "nvme_get_log_endurance_group" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_endurance_group" 9 "nvme_get_log_endurance_group" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_endurance_group \- Get Endurance Group log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_endurance_grp_evt.2 b/doc/man/nvme_get_log_endurance_grp_evt.2 index 56eb332..2be5ff3 100644 --- a/doc/man/nvme_get_log_endurance_grp_evt.2 +++ b/doc/man/nvme_get_log_endurance_grp_evt.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_endurance_grp_evt" 9 "nvme_get_log_endurance_grp_evt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_endurance_grp_evt" 9 "nvme_get_log_endurance_grp_evt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_endurance_grp_evt \- Retrieve Rotational Media Information .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_error.2 b/doc/man/nvme_get_log_error.2 index a923da1..09bdd32 100644 --- a/doc/man/nvme_get_log_error.2 +++ b/doc/man/nvme_get_log_error.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_error" 9 "nvme_get_log_error" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_error" 9 "nvme_get_log_error" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_error \- Retrieve nvme error log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_fid_supported_effects.2 b/doc/man/nvme_get_log_fid_supported_effects.2 index 9944914..7b4b8e5 100644 --- a/doc/man/nvme_get_log_fid_supported_effects.2 +++ b/doc/man/nvme_get_log_fid_supported_effects.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_fid_supported_effects" 9 "nvme_get_log_fid_supported_effects" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_fid_supported_effects" 9 "nvme_get_log_fid_supported_effects" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_fid_supported_effects \- Retrieve Feature Identifiers Supported and Effects .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_fw_slot.2 b/doc/man/nvme_get_log_fw_slot.2 index bc52c58..2792ba6 100644 --- a/doc/man/nvme_get_log_fw_slot.2 +++ b/doc/man/nvme_get_log_fw_slot.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_fw_slot" 9 "nvme_get_log_fw_slot" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_fw_slot" 9 "nvme_get_log_fw_slot" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_fw_slot \- Retrieves the controller firmware log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_lba_status.2 b/doc/man/nvme_get_log_lba_status.2 index 8e23341..723e6b1 100644 --- a/doc/man/nvme_get_log_lba_status.2 +++ b/doc/man/nvme_get_log_lba_status.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_lba_status" 9 "nvme_get_log_lba_status" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_lba_status" 9 "nvme_get_log_lba_status" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_lba_status \- Retrieve LBA Status .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_media_unit_stat.2 b/doc/man/nvme_get_log_media_unit_stat.2 index 7480e08..117034b 100644 --- a/doc/man/nvme_get_log_media_unit_stat.2 +++ b/doc/man/nvme_get_log_media_unit_stat.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_media_unit_stat" 9 "nvme_get_log_media_unit_stat" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_media_unit_stat" 9 "nvme_get_log_media_unit_stat" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_media_unit_stat \- Retrieve Media Unit Status .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_mi_cmd_supported_effects.2 b/doc/man/nvme_get_log_mi_cmd_supported_effects.2 index 23abcbe..c153f1d 100644 --- a/doc/man/nvme_get_log_mi_cmd_supported_effects.2 +++ b/doc/man/nvme_get_log_mi_cmd_supported_effects.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_mi_cmd_supported_effects" 9 "nvme_get_log_mi_cmd_supported_effects" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_mi_cmd_supported_effects" 9 "nvme_get_log_mi_cmd_supported_effects" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_mi_cmd_supported_effects \- displays the MI Commands Supported by the controller .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_page.2 b/doc/man/nvme_get_log_page.2 index 773645c..bff7063 100644 --- a/doc/man/nvme_get_log_page.2 +++ b/doc/man/nvme_get_log_page.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_page" 9 "nvme_get_log_page" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_page" 9 "nvme_get_log_page" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_page \- Get log page data .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_persistent_event.2 b/doc/man/nvme_get_log_persistent_event.2 index c1d215f..168e4e9 100644 --- a/doc/man/nvme_get_log_persistent_event.2 +++ b/doc/man/nvme_get_log_persistent_event.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_persistent_event" 9 "nvme_get_log_persistent_event" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_persistent_event" 9 "nvme_get_log_persistent_event" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_persistent_event \- Retrieve Persistent Event Log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_predictable_lat_event.2 b/doc/man/nvme_get_log_predictable_lat_event.2 index 09ff289..ca8a071 100644 --- a/doc/man/nvme_get_log_predictable_lat_event.2 +++ b/doc/man/nvme_get_log_predictable_lat_event.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_predictable_lat_event" 9 "nvme_get_log_predictable_lat_event" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_predictable_lat_event" 9 "nvme_get_log_predictable_lat_event" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_predictable_lat_event \- Retrieve Predictable Latency Event Aggregate Log Page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_predictable_lat_nvmset.2 b/doc/man/nvme_get_log_predictable_lat_nvmset.2 index f0525cf..653e807 100644 --- a/doc/man/nvme_get_log_predictable_lat_nvmset.2 +++ b/doc/man/nvme_get_log_predictable_lat_nvmset.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_predictable_lat_nvmset" 9 "nvme_get_log_predictable_lat_nvmset" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_predictable_lat_nvmset" 9 "nvme_get_log_predictable_lat_nvmset" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_predictable_lat_nvmset \- Predictable Latency Per NVM Set .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_reservation.2 b/doc/man/nvme_get_log_reservation.2 index 21032c4..ec14ee4 100644 --- a/doc/man/nvme_get_log_reservation.2 +++ b/doc/man/nvme_get_log_reservation.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_reservation" 9 "nvme_get_log_reservation" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_reservation" 9 "nvme_get_log_reservation" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_reservation \- Retrieve Reservation Notification .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_sanitize.2 b/doc/man/nvme_get_log_sanitize.2 index 2b4afa4..bc935bd 100644 --- a/doc/man/nvme_get_log_sanitize.2 +++ b/doc/man/nvme_get_log_sanitize.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_sanitize" 9 "nvme_get_log_sanitize" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_sanitize" 9 "nvme_get_log_sanitize" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_sanitize \- Retrieve Sanitize Status .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_smart.2 b/doc/man/nvme_get_log_smart.2 index 5d3f74f..3f232ad 100644 --- a/doc/man/nvme_get_log_smart.2 +++ b/doc/man/nvme_get_log_smart.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_smart" 9 "nvme_get_log_smart" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_smart" 9 "nvme_get_log_smart" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_smart \- Retrieve nvme smart log .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_support_cap_config_list.2 b/doc/man/nvme_get_log_support_cap_config_list.2 index a7239ba..f0a94a3 100644 --- a/doc/man/nvme_get_log_support_cap_config_list.2 +++ b/doc/man/nvme_get_log_support_cap_config_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_support_cap_config_list" 9 "nvme_get_log_support_cap_config_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_support_cap_config_list" 9 "nvme_get_log_support_cap_config_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_support_cap_config_list \- Retrieve Supported Capacity Configuration List .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_supported_log_pages.2 b/doc/man/nvme_get_log_supported_log_pages.2 index 2e32b04..832a566 100644 --- a/doc/man/nvme_get_log_supported_log_pages.2 +++ b/doc/man/nvme_get_log_supported_log_pages.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_supported_log_pages" 9 "nvme_get_log_supported_log_pages" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_supported_log_pages" 9 "nvme_get_log_supported_log_pages" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_supported_log_pages \- Retrieve nmve supported log pages .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_telemetry_ctrl.2 b/doc/man/nvme_get_log_telemetry_ctrl.2 index 4039917..110dab0 100644 --- a/doc/man/nvme_get_log_telemetry_ctrl.2 +++ b/doc/man/nvme_get_log_telemetry_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_telemetry_ctrl" 9 "nvme_get_log_telemetry_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_telemetry_ctrl" 9 "nvme_get_log_telemetry_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_telemetry_ctrl \- Get Telemetry Controller-Initiated log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_telemetry_host.2 b/doc/man/nvme_get_log_telemetry_host.2 index 43bc5dc..56cabae 100644 --- a/doc/man/nvme_get_log_telemetry_host.2 +++ b/doc/man/nvme_get_log_telemetry_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_telemetry_host" 9 "nvme_get_log_telemetry_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_telemetry_host" 9 "nvme_get_log_telemetry_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_telemetry_host \- Get Telemetry Host-Initiated log page .SH SYNOPSIS diff --git a/doc/man/nvme_get_log_zns_changed_zones.2 b/doc/man/nvme_get_log_zns_changed_zones.2 index 1b2f440..10906fa 100644 --- a/doc/man/nvme_get_log_zns_changed_zones.2 +++ b/doc/man/nvme_get_log_zns_changed_zones.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_log_zns_changed_zones" 9 "nvme_get_log_zns_changed_zones" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_log_zns_changed_zones" 9 "nvme_get_log_zns_changed_zones" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_log_zns_changed_zones \- Retrieve list of zones that have changed .SH SYNOPSIS diff --git a/doc/man/nvme_get_logical_block_size.2 b/doc/man/nvme_get_logical_block_size.2 index 66fdf64..5a86abb 100644 --- a/doc/man/nvme_get_logical_block_size.2 +++ b/doc/man/nvme_get_logical_block_size.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_logical_block_size" 9 "nvme_get_logical_block_size" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_logical_block_size" 9 "nvme_get_logical_block_size" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_logical_block_size \- Retrieve block size .SH SYNOPSIS diff --git a/doc/man/nvme_get_new_host_telemetry.2 b/doc/man/nvme_get_new_host_telemetry.2 index 3766f3c..90f3210 100644 --- a/doc/man/nvme_get_new_host_telemetry.2 +++ b/doc/man/nvme_get_new_host_telemetry.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_new_host_telemetry" 9 "nvme_get_new_host_telemetry" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_new_host_telemetry" 9 "nvme_get_new_host_telemetry" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_new_host_telemetry \- Get new host telemetry log .SH SYNOPSIS diff --git a/doc/man/nvme_get_ns_attr.2 b/doc/man/nvme_get_ns_attr.2 index 5b5abb6..bf9977d 100644 --- a/doc/man/nvme_get_ns_attr.2 +++ b/doc/man/nvme_get_ns_attr.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_ns_attr" 9 "nvme_get_ns_attr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_ns_attr" 9 "nvme_get_ns_attr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_ns_attr \- Read namespace sysfs attribute .SH SYNOPSIS diff --git a/doc/man/nvme_get_nsid.2 b/doc/man/nvme_get_nsid.2 index d0b4a9c..ece18ec 100644 --- a/doc/man/nvme_get_nsid.2 +++ b/doc/man/nvme_get_nsid.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_nsid" 9 "nvme_get_nsid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_nsid" 9 "nvme_get_nsid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_nsid \- Retrieve the NSID from a namespace file descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_get_path_attr.2 b/doc/man/nvme_get_path_attr.2 index ca6dce4..e7044a4 100644 --- a/doc/man/nvme_get_path_attr.2 +++ b/doc/man/nvme_get_path_attr.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_path_attr" 9 "nvme_get_path_attr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_path_attr" 9 "nvme_get_path_attr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_path_attr \- Read path sysfs attribute .SH SYNOPSIS diff --git a/doc/man/nvme_get_property.2 b/doc/man/nvme_get_property.2 index 4f2c040..bad5b54 100644 --- a/doc/man/nvme_get_property.2 +++ b/doc/man/nvme_get_property.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_property" 9 "nvme_get_property" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_property" 9 "nvme_get_property" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_property \- Get a controller property .SH SYNOPSIS diff --git a/doc/man/nvme_get_subsys_attr.2 b/doc/man/nvme_get_subsys_attr.2 index a9cf272..39d632d 100644 --- a/doc/man/nvme_get_subsys_attr.2 +++ b/doc/man/nvme_get_subsys_attr.2 @@ -1,4 +1,4 @@ -.TH "nvme_get_subsys_attr" 9 "nvme_get_subsys_attr" "August 2022" "libnvme API manual" LINUX +.TH "nvme_get_subsys_attr" 9 "nvme_get_subsys_attr" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_get_subsys_attr \- Read subsystem sysfs attribute .SH SYNOPSIS diff --git a/doc/man/nvme_hmac_alg.2 b/doc/man/nvme_hmac_alg.2 index e478574..e2699d9 100644 --- a/doc/man/nvme_hmac_alg.2 +++ b/doc/man/nvme_hmac_alg.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_hmac_alg" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_hmac_alg" "October 2022" "API Manual" LINUX .SH NAME enum nvme_hmac_alg \- HMAC algorithm .SH SYNOPSIS diff --git a/doc/man/nvme_host_behavior_support.2 b/doc/man/nvme_host_behavior_support.2 index 8c22a36..dc6f2c9 100644 --- a/doc/man/nvme_host_behavior_support.2 +++ b/doc/man/nvme_host_behavior_support.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_host_behavior_support" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_host_behavior_support" "October 2022" "API Manual" LINUX .SH NAME enum nvme_host_behavior_support \- Enable Advanced Command .SH SYNOPSIS diff --git a/doc/man/nvme_host_get_dhchap_key.2 b/doc/man/nvme_host_get_dhchap_key.2 index 657436f..5eabfd3 100644 --- a/doc/man/nvme_host_get_dhchap_key.2 +++ b/doc/man/nvme_host_get_dhchap_key.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_get_dhchap_key" 9 "nvme_host_get_dhchap_key" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_get_dhchap_key" 9 "nvme_host_get_dhchap_key" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_get_dhchap_key \- Return host key .SH SYNOPSIS diff --git a/doc/man/nvme_host_get_hostid.2 b/doc/man/nvme_host_get_hostid.2 index 58db781..afa6178 100644 --- a/doc/man/nvme_host_get_hostid.2 +++ b/doc/man/nvme_host_get_hostid.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_get_hostid" 9 "nvme_host_get_hostid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_get_hostid" 9 "nvme_host_get_hostid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_get_hostid \- Host ID of an nvme_host_t object .SH SYNOPSIS diff --git a/doc/man/nvme_host_get_hostnqn.2 b/doc/man/nvme_host_get_hostnqn.2 index d554904..0c897d6 100644 --- a/doc/man/nvme_host_get_hostnqn.2 +++ b/doc/man/nvme_host_get_hostnqn.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_get_hostnqn" 9 "nvme_host_get_hostnqn" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_get_hostnqn" 9 "nvme_host_get_hostnqn" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_get_hostnqn \- Host NQN of an nvme_host_t object .SH SYNOPSIS diff --git a/doc/man/nvme_host_get_hostsymname.2 b/doc/man/nvme_host_get_hostsymname.2 index b22d56e..c021b56 100644 --- a/doc/man/nvme_host_get_hostsymname.2 +++ b/doc/man/nvme_host_get_hostsymname.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_get_hostsymname" 9 "nvme_host_get_hostsymname" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_get_hostsymname" 9 "nvme_host_get_hostsymname" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_get_hostsymname \- Get the host's symbolic name .SH SYNOPSIS diff --git a/doc/man/nvme_host_get_root.2 b/doc/man/nvme_host_get_root.2 index c405fb4..29a74b0 100644 --- a/doc/man/nvme_host_get_root.2 +++ b/doc/man/nvme_host_get_root.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_get_root" 9 "nvme_host_get_root" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_get_root" 9 "nvme_host_get_root" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_get_root \- Returns nvme_root_t object .SH SYNOPSIS diff --git a/doc/man/nvme_host_mem_buf_attrs.2 b/doc/man/nvme_host_mem_buf_attrs.2 index abf2cdd..9d4da55 100644 --- a/doc/man/nvme_host_mem_buf_attrs.2 +++ b/doc/man/nvme_host_mem_buf_attrs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_host_mem_buf_attrs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_host_mem_buf_attrs" "October 2022" "API Manual" LINUX .SH NAME struct nvme_host_mem_buf_attrs \- Host Memory Buffer - Attributes Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_host_metadata.2 b/doc/man/nvme_host_metadata.2 index 213d87b..c329d95 100644 --- a/doc/man/nvme_host_metadata.2 +++ b/doc/man/nvme_host_metadata.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_host_metadata" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_host_metadata" "October 2022" "API Manual" LINUX .SH NAME struct nvme_host_metadata \- Host Metadata Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_host_set_dhchap_key.2 b/doc/man/nvme_host_set_dhchap_key.2 index 5e6fbf9..96704fa 100644 --- a/doc/man/nvme_host_set_dhchap_key.2 +++ b/doc/man/nvme_host_set_dhchap_key.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_set_dhchap_key" 9 "nvme_host_set_dhchap_key" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_set_dhchap_key" 9 "nvme_host_set_dhchap_key" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_set_dhchap_key \- set host key .SH SYNOPSIS diff --git a/doc/man/nvme_host_set_hostsymname.2 b/doc/man/nvme_host_set_hostsymname.2 index d7822cf..f8b3725 100644 --- a/doc/man/nvme_host_set_hostsymname.2 +++ b/doc/man/nvme_host_set_hostsymname.2 @@ -1,4 +1,4 @@ -.TH "nvme_host_set_hostsymname" 9 "nvme_host_set_hostsymname" "August 2022" "libnvme API manual" LINUX +.TH "nvme_host_set_hostsymname" 9 "nvme_host_set_hostsymname" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_host_set_hostsymname \- Set the host's symbolic name .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl.2 b/doc/man/nvme_id_ctrl.2 index e057d7c..9d0661f 100644 --- a/doc/man/nvme_id_ctrl.2 +++ b/doc/man/nvme_id_ctrl.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_ctrl" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_ctrl" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_ctrl \- Identify Controller data structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_anacap.2 b/doc/man/nvme_id_ctrl_anacap.2 index fdb83d9..7046e5c 100644 --- a/doc/man/nvme_id_ctrl_anacap.2 +++ b/doc/man/nvme_id_ctrl_anacap.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_anacap" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_anacap" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_anacap \- This field indicates the capabilities associated with Asymmetric Namespace Access Reporting. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_apsta.2 b/doc/man/nvme_id_ctrl_apsta.2 index 7e88fcf..bf40d5d 100644 --- a/doc/man/nvme_id_ctrl_apsta.2 +++ b/doc/man/nvme_id_ctrl_apsta.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_apsta" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_apsta" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_apsta \- Flags indicating the attributes of the autonomous power state transition feature. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_avscc.2 b/doc/man/nvme_id_ctrl_avscc.2 index 08bd8b8..138534e 100644 --- a/doc/man/nvme_id_ctrl_avscc.2 +++ b/doc/man/nvme_id_ctrl_avscc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_avscc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_avscc" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_avscc \- Flags indicating the configuration settings for Admin Vendor Specific command handling. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_cmic.2 b/doc/man/nvme_id_ctrl_cmic.2 index 86cdb6c..4a9c640 100644 --- a/doc/man/nvme_id_ctrl_cmic.2 +++ b/doc/man/nvme_id_ctrl_cmic.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_cmic" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_cmic" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_cntrltype.2 b/doc/man/nvme_id_ctrl_cntrltype.2 index b65bbfa..49af016 100644 --- a/doc/man/nvme_id_ctrl_cntrltype.2 +++ b/doc/man/nvme_id_ctrl_cntrltype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_cntrltype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_cntrltype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_cntrltype \- Controller types .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_cqes.2 b/doc/man/nvme_id_ctrl_cqes.2 index 18e0612..a5d39b3 100644 --- a/doc/man/nvme_id_ctrl_cqes.2 +++ b/doc/man/nvme_id_ctrl_cqes.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_cqes" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_cqes" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_ctratt.2 b/doc/man/nvme_id_ctrl_ctratt.2 index a2ee992..3e98d88 100644 --- a/doc/man/nvme_id_ctrl_ctratt.2 +++ b/doc/man/nvme_id_ctrl_ctratt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_ctratt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_ctratt" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_ctratt \- Controller attributes .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_dctype.2 b/doc/man/nvme_id_ctrl_dctype.2 index 2a993cd..c7ac74b 100644 --- a/doc/man/nvme_id_ctrl_dctype.2 +++ b/doc/man/nvme_id_ctrl_dctype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_dctype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_dctype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_dctype \- Discovery Controller types .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_dsto.2 b/doc/man/nvme_id_ctrl_dsto.2 index 885ba57..7d365bb 100644 --- a/doc/man/nvme_id_ctrl_dsto.2 +++ b/doc/man/nvme_id_ctrl_dsto.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_dsto" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_dsto" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_fcatt.2 b/doc/man/nvme_id_ctrl_fcatt.2 index 458f68b..1642213 100644 --- a/doc/man/nvme_id_ctrl_fcatt.2 +++ b/doc/man/nvme_id_ctrl_fcatt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_fcatt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_fcatt" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_fna.2 b/doc/man/nvme_id_ctrl_fna.2 index 31a97bc..edbd3d6 100644 --- a/doc/man/nvme_id_ctrl_fna.2 +++ b/doc/man/nvme_id_ctrl_fna.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_fna" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_fna" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_fna \- This field indicates attributes for the Format NVM command. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_frmw.2 b/doc/man/nvme_id_ctrl_frmw.2 index 02d4fad..533dbf8 100644 --- a/doc/man/nvme_id_ctrl_frmw.2 +++ b/doc/man/nvme_id_ctrl_frmw.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_frmw" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_frmw" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_fuses.2 b/doc/man/nvme_id_ctrl_fuses.2 index 2d2ce70..272c604 100644 --- a/doc/man/nvme_id_ctrl_fuses.2 +++ b/doc/man/nvme_id_ctrl_fuses.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_fuses" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_fuses" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_fuses \- This field indicates the fused operations that the controller supports. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_hctm.2 b/doc/man/nvme_id_ctrl_hctm.2 index b247be0..9d1106c 100644 --- a/doc/man/nvme_id_ctrl_hctm.2 +++ b/doc/man/nvme_id_ctrl_hctm.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_hctm" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_hctm" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_hctm \- Flags indicate the attributes of the host controlled thermal management feature .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_lpa.2 b/doc/man/nvme_id_ctrl_lpa.2 index 1bfc611..fc29d73 100644 --- a/doc/man/nvme_id_ctrl_lpa.2 +++ b/doc/man/nvme_id_ctrl_lpa.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_lpa" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_lpa" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_mec.2 b/doc/man/nvme_id_ctrl_mec.2 index f0b6f3f..f26c443 100644 --- a/doc/man/nvme_id_ctrl_mec.2 +++ b/doc/man/nvme_id_ctrl_mec.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_mec" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_mec" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_nvm.2 b/doc/man/nvme_id_ctrl_nvm.2 index 28060bd..4639578 100644 --- a/doc/man/nvme_id_ctrl_nvm.2 +++ b/doc/man/nvme_id_ctrl_nvm.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_ctrl_nvm" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_ctrl_nvm" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_ctrl_nvm \- I/O Command Set Specific Identify Controller data structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_nvmsr.2 b/doc/man/nvme_id_ctrl_nvmsr.2 index a851626..52e2581 100644 --- a/doc/man/nvme_id_ctrl_nvmsr.2 +++ b/doc/man/nvme_id_ctrl_nvmsr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_nvmsr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_nvmsr" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_nvscc.2 b/doc/man/nvme_id_ctrl_nvscc.2 index a5bf117..a04d003 100644 --- a/doc/man/nvme_id_ctrl_nvscc.2 +++ b/doc/man/nvme_id_ctrl_nvscc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_nvscc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_nvscc" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_nvscc \- This field indicates the configuration settings for NVM Vendor Specific command handling. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_nwpc.2 b/doc/man/nvme_id_ctrl_nwpc.2 index 48699d1..05d915c 100644 --- a/doc/man/nvme_id_ctrl_nwpc.2 +++ b/doc/man/nvme_id_ctrl_nwpc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_nwpc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_nwpc" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_oacs.2 b/doc/man/nvme_id_ctrl_oacs.2 index f06c95a..b67818f 100644 --- a/doc/man/nvme_id_ctrl_oacs.2 +++ b/doc/man/nvme_id_ctrl_oacs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_oacs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_oacs" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_oaes.2 b/doc/man/nvme_id_ctrl_oaes.2 index 7257cb4..9b065b2 100644 --- a/doc/man/nvme_id_ctrl_oaes.2 +++ b/doc/man/nvme_id_ctrl_oaes.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_oaes" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_oaes" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_oaes \- Optional Asynchronous Events Supported .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_ofcs.2 b/doc/man/nvme_id_ctrl_ofcs.2 index b93374e..e3c8a47 100644 --- a/doc/man/nvme_id_ctrl_ofcs.2 +++ b/doc/man/nvme_id_ctrl_ofcs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_ofcs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_ofcs" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_ofcs \- Indicate whether the controller supports optional fabric commands. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_oncs.2 b/doc/man/nvme_id_ctrl_oncs.2 index e912516..011fc5c 100644 --- a/doc/man/nvme_id_ctrl_oncs.2 +++ b/doc/man/nvme_id_ctrl_oncs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_oncs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_oncs" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_rpmbs.2 b/doc/man/nvme_id_ctrl_rpmbs.2 index 6dfcdd2..52ff266 100644 --- a/doc/man/nvme_id_ctrl_rpmbs.2 +++ b/doc/man/nvme_id_ctrl_rpmbs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_rpmbs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_rpmbs" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_sanicap.2 b/doc/man/nvme_id_ctrl_sanicap.2 index bf9ad69..1a6456f 100644 --- a/doc/man/nvme_id_ctrl_sanicap.2 +++ b/doc/man/nvme_id_ctrl_sanicap.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_sanicap" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_sanicap" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_sanicap \- Indicates attributes for sanitize operations. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_sgls.2 b/doc/man/nvme_id_ctrl_sgls.2 index a486713..fdfba05 100644 --- a/doc/man/nvme_id_ctrl_sgls.2 +++ b/doc/man/nvme_id_ctrl_sgls.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_sgls" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_sgls" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_sqes.2 b/doc/man/nvme_id_ctrl_sqes.2 index 9358f77..4135fe8 100644 --- a/doc/man/nvme_id_ctrl_sqes.2 +++ b/doc/man/nvme_id_ctrl_sqes.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_sqes" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_sqes" "October 2022" "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 diff --git a/doc/man/nvme_id_ctrl_vwc.2 b/doc/man/nvme_id_ctrl_vwc.2 index ea196f3..3a36864 100644 --- a/doc/man/nvme_id_ctrl_vwc.2 +++ b/doc/man/nvme_id_ctrl_vwc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_vwc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_vwc" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ctrl_vwc \- Volatile write cache .SH SYNOPSIS diff --git a/doc/man/nvme_id_ctrl_vwci.2 b/doc/man/nvme_id_ctrl_vwci.2 index e0b075c..53283c9 100644 --- a/doc/man/nvme_id_ctrl_vwci.2 +++ b/doc/man/nvme_id_ctrl_vwci.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ctrl_vwci" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ctrl_vwci" "October 2022" "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 diff --git a/doc/man/nvme_id_directives.2 b/doc/man/nvme_id_directives.2 index f04d12f..63267f6 100644 --- a/doc/man/nvme_id_directives.2 +++ b/doc/man/nvme_id_directives.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_directives" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_directives" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_directives \- Identify Directive - Return Parameters Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_domain_attr.2 b/doc/man/nvme_id_domain_attr.2 index f660cb8..1998ba3 100644 --- a/doc/man/nvme_id_domain_attr.2 +++ b/doc/man/nvme_id_domain_attr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_domain_attr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_domain_attr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_domain_attr \- Domain Attributes Entry .SH SYNOPSIS diff --git a/doc/man/nvme_id_domain_list.2 b/doc/man/nvme_id_domain_list.2 index d8dfb11..95b0a99 100644 --- a/doc/man/nvme_id_domain_list.2 +++ b/doc/man/nvme_id_domain_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_domain_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_domain_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_domain_list \- Domain List .SH SYNOPSIS diff --git a/doc/man/nvme_id_endurance_group_list.2 b/doc/man/nvme_id_endurance_group_list.2 index 88317bf..94cd512 100644 --- a/doc/man/nvme_id_endurance_group_list.2 +++ b/doc/man/nvme_id_endurance_group_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_endurance_group_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_endurance_group_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_endurance_group_list \- Endurance Group List .SH SYNOPSIS diff --git a/doc/man/nvme_id_independent_id_ns.2 b/doc/man/nvme_id_independent_id_ns.2 index 9dce1b2..704ed39 100644 --- a/doc/man/nvme_id_independent_id_ns.2 +++ b/doc/man/nvme_id_independent_id_ns.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_independent_id_ns" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_independent_id_ns" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_independent_id_ns \- Identify - I/O Command Set Independent Identify Namespace Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_iocs.2 b/doc/man/nvme_id_iocs.2 index c691f14..4145e17 100644 --- a/doc/man/nvme_id_iocs.2 +++ b/doc/man/nvme_id_iocs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_iocs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_iocs" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_iocs \- NVMe Identify IO Command Set data structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns.2 b/doc/man/nvme_id_ns.2 index 6431f8e..ce284d8 100644 --- a/doc/man/nvme_id_ns.2 +++ b/doc/man/nvme_id_ns.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_ns" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_ns" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_ns \- Identify Namespace data structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns_attr.2 b/doc/man/nvme_id_ns_attr.2 index e56f122..324faf0 100644 --- a/doc/man/nvme_id_ns_attr.2 +++ b/doc/man/nvme_id_ns_attr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_attr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_attr" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ns_attr \- Specifies attributes of the namespace. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns_dlfeat.2 b/doc/man/nvme_id_ns_dlfeat.2 index 749fa36..6d98a2a 100644 --- a/doc/man/nvme_id_ns_dlfeat.2 +++ b/doc/man/nvme_id_ns_dlfeat.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_dlfeat" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_dlfeat" "October 2022" "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 diff --git a/doc/man/nvme_id_ns_dpc.2 b/doc/man/nvme_id_ns_dpc.2 index 40093ed..57faa6f 100644 --- a/doc/man/nvme_id_ns_dpc.2 +++ b/doc/man/nvme_id_ns_dpc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_dpc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_dpc" "October 2022" "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 diff --git a/doc/man/nvme_id_ns_dps.2 b/doc/man/nvme_id_ns_dps.2 index bc7c1a6..ebd45d5 100644 --- a/doc/man/nvme_id_ns_dps.2 +++ b/doc/man/nvme_id_ns_dps.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_dps" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_dps" "October 2022" "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 diff --git a/doc/man/nvme_id_ns_flbas.2 b/doc/man/nvme_id_ns_flbas.2 index c65b5de..4d55384 100644 --- a/doc/man/nvme_id_ns_flbas.2 +++ b/doc/man/nvme_id_ns_flbas.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_flbas" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_flbas" "October 2022" "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 diff --git a/doc/man/nvme_id_ns_granularity_desc.2 b/doc/man/nvme_id_ns_granularity_desc.2 index 96303bf..1a3c8f3 100644 --- a/doc/man/nvme_id_ns_granularity_desc.2 +++ b/doc/man/nvme_id_ns_granularity_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_ns_granularity_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_ns_granularity_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_ns_granularity_desc \- Namespace Granularity Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns_granularity_list.2 b/doc/man/nvme_id_ns_granularity_list.2 index 5245b1a..d4da19d 100644 --- a/doc/man/nvme_id_ns_granularity_list.2 +++ b/doc/man/nvme_id_ns_granularity_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_ns_granularity_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_ns_granularity_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_ns_granularity_list \- Namespace Granularity List .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns_mc.2 b/doc/man/nvme_id_ns_mc.2 index 21bb73b..129614a 100644 --- a/doc/man/nvme_id_ns_mc.2 +++ b/doc/man/nvme_id_ns_mc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_mc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_mc" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ns_mc \- This field indicates the capabilities for metadata. .SH SYNOPSIS diff --git a/doc/man/nvme_id_ns_nmic.2 b/doc/man/nvme_id_ns_nmic.2 index f4400e9..b27318e 100644 --- a/doc/man/nvme_id_ns_nmic.2 +++ b/doc/man/nvme_id_ns_nmic.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_nmic" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_nmic" "October 2022" "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 diff --git a/doc/man/nvme_id_ns_rescap.2 b/doc/man/nvme_id_ns_rescap.2 index 8fc112f..ccdeecd 100644 --- a/doc/man/nvme_id_ns_rescap.2 +++ b/doc/man/nvme_id_ns_rescap.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_ns_rescap" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_ns_rescap" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_ns_rescap \- This field indicates the reservation capabilities of the namespace. .SH SYNOPSIS diff --git a/doc/man/nvme_id_nsfeat.2 b/doc/man/nvme_id_nsfeat.2 index 7499cd2..881ee8f 100644 --- a/doc/man/nvme_id_nsfeat.2 +++ b/doc/man/nvme_id_nsfeat.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_nsfeat" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_nsfeat" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_nsfeat \- This field defines features of the namespace. .SH SYNOPSIS diff --git a/doc/man/nvme_id_nvmset_list.2 b/doc/man/nvme_id_nvmset_list.2 index 90be349..6646458 100644 --- a/doc/man/nvme_id_nvmset_list.2 +++ b/doc/man/nvme_id_nvmset_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_nvmset_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_nvmset_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_nvmset_list \- NVM set list .SH SYNOPSIS diff --git a/doc/man/nvme_id_psd.2 b/doc/man/nvme_id_psd.2 index c45e0ce..3e4864d 100644 --- a/doc/man/nvme_id_psd.2 +++ b/doc/man/nvme_id_psd.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_psd" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_psd" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_psd \- Power Management data structure .SH SYNOPSIS diff --git a/doc/man/nvme_id_uuid.2 b/doc/man/nvme_id_uuid.2 index 933719d..41ca728 100644 --- a/doc/man/nvme_id_uuid.2 +++ b/doc/man/nvme_id_uuid.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_id_uuid" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_id_uuid" "October 2022" "API Manual" LINUX .SH NAME enum nvme_id_uuid \- Identifier Association .SH SYNOPSIS diff --git a/doc/man/nvme_id_uuid_list.2 b/doc/man/nvme_id_uuid_list.2 index 56a0957..2243279 100644 --- a/doc/man/nvme_id_uuid_list.2 +++ b/doc/man/nvme_id_uuid_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_uuid_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_uuid_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_uuid_list \- UUID list .SH SYNOPSIS diff --git a/doc/man/nvme_id_uuid_list_entry.2 b/doc/man/nvme_id_uuid_list_entry.2 index 9486ff4..c194b78 100644 --- a/doc/man/nvme_id_uuid_list_entry.2 +++ b/doc/man/nvme_id_uuid_list_entry.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_id_uuid_list_entry" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_id_uuid_list_entry" "October 2022" "API Manual" LINUX .SH NAME struct nvme_id_uuid_list_entry \- UUID List Entry .SH SYNOPSIS diff --git a/doc/man/nvme_identify.2 b/doc/man/nvme_identify.2 index 10cfa3d..b0cf067 100644 --- a/doc/man/nvme_identify.2 +++ b/doc/man/nvme_identify.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify" 9 "nvme_identify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify" 9 "nvme_identify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify \- Send the NVMe Identify command .SH SYNOPSIS diff --git a/doc/man/nvme_identify_active_ns_list.2 b/doc/man/nvme_identify_active_ns_list.2 index d82faac..8f9b412 100644 --- a/doc/man/nvme_identify_active_ns_list.2 +++ b/doc/man/nvme_identify_active_ns_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_active_ns_list" 9 "nvme_identify_active_ns_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_active_ns_list" 9 "nvme_identify_active_ns_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_active_ns_list \- Retrieves active namespaces id list .SH SYNOPSIS diff --git a/doc/man/nvme_identify_active_ns_list_csi.2 b/doc/man/nvme_identify_active_ns_list_csi.2 index 226a8bb..a87020c 100644 --- a/doc/man/nvme_identify_active_ns_list_csi.2 +++ b/doc/man/nvme_identify_active_ns_list_csi.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_active_ns_list_csi" 9 "nvme_identify_active_ns_list_csi" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_active_ns_list_csi" 9 "nvme_identify_active_ns_list_csi" "October 2022" "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 diff --git a/doc/man/nvme_identify_allocated_ns.2 b/doc/man/nvme_identify_allocated_ns.2 index cec9f1c..b4766ff 100644 --- a/doc/man/nvme_identify_allocated_ns.2 +++ b/doc/man/nvme_identify_allocated_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_allocated_ns" 9 "nvme_identify_allocated_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_allocated_ns" 9 "nvme_identify_allocated_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_allocated_ns \- Same as nvme_identify_ns, but only for allocated namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_identify_allocated_ns_list.2 b/doc/man/nvme_identify_allocated_ns_list.2 index 4741560..15d9129 100644 --- a/doc/man/nvme_identify_allocated_ns_list.2 +++ b/doc/man/nvme_identify_allocated_ns_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_allocated_ns_list" 9 "nvme_identify_allocated_ns_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_allocated_ns_list" 9 "nvme_identify_allocated_ns_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_allocated_ns_list \- Retrieves allocated namespace id list .SH SYNOPSIS diff --git a/doc/man/nvme_identify_allocated_ns_list_csi.2 b/doc/man/nvme_identify_allocated_ns_list_csi.2 index 1c5b69e..a444b33 100644 --- a/doc/man/nvme_identify_allocated_ns_list_csi.2 +++ b/doc/man/nvme_identify_allocated_ns_list_csi.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_allocated_ns_list_csi" 9 "nvme_identify_allocated_ns_list_csi" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_allocated_ns_list_csi" 9 "nvme_identify_allocated_ns_list_csi" "October 2022" "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 diff --git a/doc/man/nvme_identify_cns.2 b/doc/man/nvme_identify_cns.2 index 6d1f707..1d11ffb 100644 --- a/doc/man/nvme_identify_cns.2 +++ b/doc/man/nvme_identify_cns.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_identify_cns" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_identify_cns" "October 2022" "API Manual" LINUX .SH NAME enum nvme_identify_cns \- Identify - CNS Values .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ctrl.2 b/doc/man/nvme_identify_ctrl.2 index e88ead4..606831b 100644 --- a/doc/man/nvme_identify_ctrl.2 +++ b/doc/man/nvme_identify_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ctrl" 9 "nvme_identify_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ctrl" 9 "nvme_identify_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ctrl \- Retrieves nvme identify controller .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ctrl_csi.2 b/doc/man/nvme_identify_ctrl_csi.2 index 0563678..9d8bd03 100644 --- a/doc/man/nvme_identify_ctrl_csi.2 +++ b/doc/man/nvme_identify_ctrl_csi.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ctrl_csi" 9 "nvme_identify_ctrl_csi" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ctrl_csi" 9 "nvme_identify_ctrl_csi" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ctrl_csi \- I/O command set specific Identify Controller data .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ctrl_list.2 b/doc/man/nvme_identify_ctrl_list.2 index 7a8f42d..3019f20 100644 --- a/doc/man/nvme_identify_ctrl_list.2 +++ b/doc/man/nvme_identify_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ctrl_list" 9 "nvme_identify_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ctrl_list" 9 "nvme_identify_ctrl_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ctrl_list \- Retrieves identify controller list .SH SYNOPSIS diff --git a/doc/man/nvme_identify_domain_list.2 b/doc/man/nvme_identify_domain_list.2 index bb6d659..18ec2e9 100644 --- a/doc/man/nvme_identify_domain_list.2 +++ b/doc/man/nvme_identify_domain_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_domain_list" 9 "nvme_identify_domain_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_domain_list" 9 "nvme_identify_domain_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_domain_list \- Domain list data .SH SYNOPSIS diff --git a/doc/man/nvme_identify_endurance_group_list.2 b/doc/man/nvme_identify_endurance_group_list.2 index 3fa011b..188dde4 100644 --- a/doc/man/nvme_identify_endurance_group_list.2 +++ b/doc/man/nvme_identify_endurance_group_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_endurance_group_list" 9 "nvme_identify_endurance_group_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_endurance_group_list" 9 "nvme_identify_endurance_group_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_endurance_group_list \- Endurance group list data .SH SYNOPSIS diff --git a/doc/man/nvme_identify_independent_identify_ns.2 b/doc/man/nvme_identify_independent_identify_ns.2 index 4e3db91..e9d4070 100644 --- a/doc/man/nvme_identify_independent_identify_ns.2 +++ b/doc/man/nvme_identify_independent_identify_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_independent_identify_ns" 9 "nvme_identify_independent_identify_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_independent_identify_ns" 9 "nvme_identify_independent_identify_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_independent_identify_ns \- I/O command set independent Identify namespace data .SH SYNOPSIS diff --git a/doc/man/nvme_identify_iocs.2 b/doc/man/nvme_identify_iocs.2 index edc64db..fdbd644 100644 --- a/doc/man/nvme_identify_iocs.2 +++ b/doc/man/nvme_identify_iocs.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_iocs" 9 "nvme_identify_iocs" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_iocs" 9 "nvme_identify_iocs" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_iocs \- I/O command set data structure .SH SYNOPSIS 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 index ac16543..6bddd4c 100644 --- a/doc/man/nvme_identify_iocs_ns_csi_user_data_format.2 +++ b/doc/man/nvme_identify_iocs_ns_csi_user_data_format.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_iocs_ns_csi_user_data_format" 9 "nvme_identify_iocs_ns_csi_user_data_format" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_iocs_ns_csi_user_data_format" 9 "nvme_identify_iocs_ns_csi_user_data_format" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_iocs_ns_csi_user_data_format \- Identify I/O command set namespace data structure .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ns.2 b/doc/man/nvme_identify_ns.2 index 39fd911..fa03c1d 100644 --- a/doc/man/nvme_identify_ns.2 +++ b/doc/man/nvme_identify_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ns" 9 "nvme_identify_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ns" 9 "nvme_identify_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ns \- Retrieves nvme identify namespace .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ns_csi.2 b/doc/man/nvme_identify_ns_csi.2 index e41e276..0d6437e 100644 --- a/doc/man/nvme_identify_ns_csi.2 +++ b/doc/man/nvme_identify_ns_csi.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ns_csi" 9 "nvme_identify_ns_csi" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ns_csi" 9 "nvme_identify_ns_csi" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ns_csi \- I/O command set specific identify namespace data .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ns_csi_user_data_format.2 b/doc/man/nvme_identify_ns_csi_user_data_format.2 index a8d85ae..f34c5f8 100644 --- a/doc/man/nvme_identify_ns_csi_user_data_format.2 +++ b/doc/man/nvme_identify_ns_csi_user_data_format.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ns_csi_user_data_format" 9 "nvme_identify_ns_csi_user_data_format" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ns_csi_user_data_format" 9 "nvme_identify_ns_csi_user_data_format" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ns_csi_user_data_format \- Identify namespace user data format .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ns_descs.2 b/doc/man/nvme_identify_ns_descs.2 index ac1a1f6..5f00ec1 100644 --- a/doc/man/nvme_identify_ns_descs.2 +++ b/doc/man/nvme_identify_ns_descs.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ns_descs" 9 "nvme_identify_ns_descs" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ns_descs" 9 "nvme_identify_ns_descs" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ns_descs \- Retrieves namespace descriptor list .SH SYNOPSIS diff --git a/doc/man/nvme_identify_ns_granularity.2 b/doc/man/nvme_identify_ns_granularity.2 index 01efee4..5361386 100644 --- a/doc/man/nvme_identify_ns_granularity.2 +++ b/doc/man/nvme_identify_ns_granularity.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_ns_granularity" 9 "nvme_identify_ns_granularity" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_ns_granularity" 9 "nvme_identify_ns_granularity" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_ns_granularity \- Retrieves namespace granularity identification .SH SYNOPSIS diff --git a/doc/man/nvme_identify_nsid_ctrl_list.2 b/doc/man/nvme_identify_nsid_ctrl_list.2 index dc38f35..7eb5d07 100644 --- a/doc/man/nvme_identify_nsid_ctrl_list.2 +++ b/doc/man/nvme_identify_nsid_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_nsid_ctrl_list" 9 "nvme_identify_nsid_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_nsid_ctrl_list" 9 "nvme_identify_nsid_ctrl_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_nsid_ctrl_list \- Retrieves controller list attached to an nsid .SH SYNOPSIS diff --git a/doc/man/nvme_identify_nvmset_list.2 b/doc/man/nvme_identify_nvmset_list.2 index e653bd8..139a20e 100644 --- a/doc/man/nvme_identify_nvmset_list.2 +++ b/doc/man/nvme_identify_nvmset_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_nvmset_list" 9 "nvme_identify_nvmset_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_nvmset_list" 9 "nvme_identify_nvmset_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_nvmset_list \- Retrieves NVM Set List .SH SYNOPSIS diff --git a/doc/man/nvme_identify_primary_ctrl.2 b/doc/man/nvme_identify_primary_ctrl.2 index 96ad2d7..6b725cb 100644 --- a/doc/man/nvme_identify_primary_ctrl.2 +++ b/doc/man/nvme_identify_primary_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_primary_ctrl" 9 "nvme_identify_primary_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_primary_ctrl" 9 "nvme_identify_primary_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_primary_ctrl \- Retrieve NVMe Primary Controller identification .SH SYNOPSIS diff --git a/doc/man/nvme_identify_secondary_ctrl_list.2 b/doc/man/nvme_identify_secondary_ctrl_list.2 index 1bc358b..354f1f0 100644 --- a/doc/man/nvme_identify_secondary_ctrl_list.2 +++ b/doc/man/nvme_identify_secondary_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_secondary_ctrl_list" 9 "nvme_identify_secondary_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_secondary_ctrl_list" 9 "nvme_identify_secondary_ctrl_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_secondary_ctrl_list \- Retrieves secondary controller list .SH SYNOPSIS diff --git a/doc/man/nvme_identify_uuid.2 b/doc/man/nvme_identify_uuid.2 index d7a23c1..ff81c15 100644 --- a/doc/man/nvme_identify_uuid.2 +++ b/doc/man/nvme_identify_uuid.2 @@ -1,4 +1,4 @@ -.TH "nvme_identify_uuid" 9 "nvme_identify_uuid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_identify_uuid" 9 "nvme_identify_uuid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_identify_uuid \- Retrieves device's UUIDs .SH SYNOPSIS diff --git a/doc/man/nvme_init_copy_range.2 b/doc/man/nvme_init_copy_range.2 index cc68ce8..7a3e786 100644 --- a/doc/man/nvme_init_copy_range.2 +++ b/doc/man/nvme_init_copy_range.2 @@ -1,4 +1,4 @@ -.TH "nvme_init_copy_range" 9 "nvme_init_copy_range" "August 2022" "libnvme API manual" LINUX +.TH "nvme_init_copy_range" 9 "nvme_init_copy_range" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_init_copy_range \- Constructs a copy range structure .SH SYNOPSIS 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..2f2f3ad --- /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" "October 2022" "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 index c3d1a19..941281c 100644 --- a/doc/man/nvme_init_ctrl.2 +++ b/doc/man/nvme_init_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_init_ctrl" 9 "nvme_init_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_init_ctrl" 9 "nvme_init_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_init_ctrl \- Initialize nvme_ctrl_t object for an existing controller. .SH SYNOPSIS diff --git a/doc/man/nvme_init_ctrl_list.2 b/doc/man/nvme_init_ctrl_list.2 index 9dd3b92..44cf66c 100644 --- a/doc/man/nvme_init_ctrl_list.2 +++ b/doc/man/nvme_init_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_init_ctrl_list" 9 "nvme_init_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_init_ctrl_list" 9 "nvme_init_ctrl_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_init_ctrl_list \- Initialize an nvme_ctrl_list structure from an array. .SH SYNOPSIS diff --git a/doc/man/nvme_init_dsm_range.2 b/doc/man/nvme_init_dsm_range.2 index 57bdb3d..b7d7b69 100644 --- a/doc/man/nvme_init_dsm_range.2 +++ b/doc/man/nvme_init_dsm_range.2 @@ -1,4 +1,4 @@ -.TH "nvme_init_dsm_range" 9 "nvme_init_dsm_range" "August 2022" "libnvme API manual" LINUX +.TH "nvme_init_dsm_range" 9 "nvme_init_dsm_range" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_init_dsm_range \- Constructs a data set range structure .SH SYNOPSIS diff --git a/doc/man/nvme_init_logging.2 b/doc/man/nvme_init_logging.2 index 626c541..f33d25b 100644 --- a/doc/man/nvme_init_logging.2 +++ b/doc/man/nvme_init_logging.2 @@ -1,4 +1,4 @@ -.TH "nvme_init_logging" 9 "nvme_init_logging" "August 2022" "libnvme API manual" LINUX +.TH "nvme_init_logging" 9 "nvme_init_logging" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_init_logging \- Initialize logging .SH SYNOPSIS diff --git a/doc/man/nvme_io.2 b/doc/man/nvme_io.2 index 64c0fc7..bb357b2 100644 --- a/doc/man/nvme_io.2 +++ b/doc/man/nvme_io.2 @@ -1,4 +1,4 @@ -.TH "nvme_io" 9 "nvme_io" "August 2022" "libnvme API manual" LINUX +.TH "nvme_io" 9 "nvme_io" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_io \- Submit an nvme user I/O command .SH SYNOPSIS diff --git a/doc/man/nvme_io_control_flags.2 b/doc/man/nvme_io_control_flags.2 index 72a2074..791f45b 100644 --- a/doc/man/nvme_io_control_flags.2 +++ b/doc/man/nvme_io_control_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_io_control_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_io_control_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_io_control_flags \- I/O control flags .SH SYNOPSIS diff --git a/doc/man/nvme_io_dsm_flags.2 b/doc/man/nvme_io_dsm_flags.2 index adeadd3..fdab16c 100644 --- a/doc/man/nvme_io_dsm_flags.2 +++ b/doc/man/nvme_io_dsm_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_io_dsm_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_io_dsm_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_io_dsm_flags \- Dataset Management flags .SH SYNOPSIS diff --git a/doc/man/nvme_io_opcode.2 b/doc/man/nvme_io_opcode.2 index cbdde5e..492161f 100644 --- a/doc/man/nvme_io_opcode.2 +++ b/doc/man/nvme_io_opcode.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_io_opcode" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_io_opcode" "October 2022" "API Manual" LINUX .SH NAME enum nvme_io_opcode \- Opcodes for I/O Commands .SH SYNOPSIS diff --git a/doc/man/nvme_io_passthru.2 b/doc/man/nvme_io_passthru.2 index 127a45b..ffb19fc 100644 --- a/doc/man/nvme_io_passthru.2 +++ b/doc/man/nvme_io_passthru.2 @@ -1,4 +1,4 @@ -.TH "nvme_io_passthru" 9 "nvme_io_passthru" "August 2022" "libnvme API manual" LINUX +.TH "nvme_io_passthru" 9 "nvme_io_passthru" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_io_passthru \- Submit an nvme io passthrough command .SH SYNOPSIS diff --git a/doc/man/nvme_io_passthru64.2 b/doc/man/nvme_io_passthru64.2 new file mode 100644 index 0000000..30e0378 --- /dev/null +++ b/doc/man/nvme_io_passthru64.2 @@ -0,0 +1,71 @@ +.TH "nvme_io_passthru64" 9 "nvme_io_passthru64" "October 2022" "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..e23f562 --- /dev/null +++ b/doc/man/nvme_is_64bit_reg.2 @@ -0,0 +1,16 @@ +.TH "nvme_is_64bit_reg" 9 "nvme_is_64bit_reg" "October 2022" "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 index 6e9226a..6d935be 100644 --- a/doc/man/nvme_lba_range_type.2 +++ b/doc/man/nvme_lba_range_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_range_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_range_type" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_range_type \- LBA Range Type .SH SYNOPSIS diff --git a/doc/man/nvme_lba_range_type_entry.2 b/doc/man/nvme_lba_range_type_entry.2 index d504531..f6bf43e 100644 --- a/doc/man/nvme_lba_range_type_entry.2 +++ b/doc/man/nvme_lba_range_type_entry.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_range_type_entry" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_range_type_entry" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_range_type_entry \- LBA Range Type - Data Structure Entry .SH SYNOPSIS diff --git a/doc/man/nvme_lba_rd.2 b/doc/man/nvme_lba_rd.2 index c808846..d6e02ed 100644 --- a/doc/man/nvme_lba_rd.2 +++ b/doc/man/nvme_lba_rd.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_rd" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_rd" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_rd \- LBA Range Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_lba_status.2 b/doc/man/nvme_lba_status.2 index 935895b..629460b 100644 --- a/doc/man/nvme_lba_status.2 +++ b/doc/man/nvme_lba_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_status" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_status \- LBA Status Descriptor List .SH SYNOPSIS diff --git a/doc/man/nvme_lba_status_atype.2 b/doc/man/nvme_lba_status_atype.2 index ca8e5fa..1f42175 100644 --- a/doc/man/nvme_lba_status_atype.2 +++ b/doc/man/nvme_lba_status_atype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_lba_status_atype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_lba_status_atype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_lba_status_atype \- Potentially Unrecoverable LBAs .SH SYNOPSIS diff --git a/doc/man/nvme_lba_status_desc.2 b/doc/man/nvme_lba_status_desc.2 index 3deacaa..73aab2e 100644 --- a/doc/man/nvme_lba_status_desc.2 +++ b/doc/man/nvme_lba_status_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_status_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_status_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_status_desc \- LBA Status Descriptor Entry .SH SYNOPSIS diff --git a/doc/man/nvme_lba_status_log.2 b/doc/man/nvme_lba_status_log.2 index 42b6a16..c2d1e5d 100644 --- a/doc/man/nvme_lba_status_log.2 +++ b/doc/man/nvme_lba_status_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lba_status_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lba_status_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lba_status_log \- LBA Status Information Log .SH SYNOPSIS diff --git a/doc/man/nvme_lbaf.2 b/doc/man/nvme_lbaf.2 index c9ac6c7..cf946ab 100644 --- a/doc/man/nvme_lbaf.2 +++ b/doc/man/nvme_lbaf.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lbaf" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lbaf" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lbaf \- LBA Format Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_lbaf_rp.2 b/doc/man/nvme_lbaf_rp.2 index 1c8eb23..3d13eea 100644 --- a/doc/man/nvme_lbaf_rp.2 +++ b/doc/man/nvme_lbaf_rp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_lbaf_rp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_lbaf_rp" "October 2022" "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 diff --git a/doc/man/nvme_lbart.2 b/doc/man/nvme_lbart.2 index 5293177..32a6296 100644 --- a/doc/man/nvme_lbart.2 +++ b/doc/man/nvme_lbart.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_lbart" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_lbart" "October 2022" "API Manual" LINUX .SH NAME enum nvme_lbart \- LBA Range Type - Data Structure Entry .SH SYNOPSIS diff --git a/doc/man/nvme_lbas_ns_element.2 b/doc/man/nvme_lbas_ns_element.2 index 02e9585..dc8043e 100644 --- a/doc/man/nvme_lbas_ns_element.2 +++ b/doc/man/nvme_lbas_ns_element.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_lbas_ns_element" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_lbas_ns_element" "October 2022" "API Manual" LINUX .SH NAME struct nvme_lbas_ns_element \- LBA Status Log Namespace Element .SH SYNOPSIS diff --git a/doc/man/nvme_lockdown.2 b/doc/man/nvme_lockdown.2 index 9712d48..775bd6b 100644 --- a/doc/man/nvme_lockdown.2 +++ b/doc/man/nvme_lockdown.2 @@ -1,4 +1,4 @@ -.TH "nvme_lockdown" 9 "nvme_lockdown" "August 2022" "libnvme API manual" LINUX +.TH "nvme_lockdown" 9 "nvme_lockdown" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_lockdown \- Issue lockdown command .SH SYNOPSIS diff --git a/doc/man/nvme_log_ana_lsp.2 b/doc/man/nvme_log_ana_lsp.2 index 1de2b0f..3e1df4a 100644 --- a/doc/man/nvme_log_ana_lsp.2 +++ b/doc/man/nvme_log_ana_lsp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_log_ana_lsp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_log_ana_lsp" "October 2022" "API Manual" LINUX .SH NAME enum nvme_log_ana_lsp \- Asymmetric Namespace Access - Return Groups Only .SH SYNOPSIS diff --git a/doc/man/nvme_lookup_ctrl.2 b/doc/man/nvme_lookup_ctrl.2 index 2db83fa..0d400ea 100644 --- a/doc/man/nvme_lookup_ctrl.2 +++ b/doc/man/nvme_lookup_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_lookup_ctrl" 9 "nvme_lookup_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_lookup_ctrl" 9 "nvme_lookup_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_lookup_ctrl \- Lookup nvme_ctrl_t object .SH SYNOPSIS diff --git a/doc/man/nvme_lookup_host.2 b/doc/man/nvme_lookup_host.2 index 6aec444..47b6239 100644 --- a/doc/man/nvme_lookup_host.2 +++ b/doc/man/nvme_lookup_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_lookup_host" 9 "nvme_lookup_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_lookup_host" 9 "nvme_lookup_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_lookup_host \- Lookup nvme_host_t object .SH SYNOPSIS diff --git a/doc/man/nvme_lookup_subsystem.2 b/doc/man/nvme_lookup_subsystem.2 index 1cf6464..4adc5cb 100644 --- a/doc/man/nvme_lookup_subsystem.2 +++ b/doc/man/nvme_lookup_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_lookup_subsystem" 9 "nvme_lookup_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_lookup_subsystem" 9 "nvme_lookup_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_lookup_subsystem \- Lookup nvme_subsystem_t object .SH SYNOPSIS diff --git a/doc/man/nvme_media_unit_config_desc.2 b/doc/man/nvme_media_unit_config_desc.2 index 83f9a83..e39bb39 100644 --- a/doc/man/nvme_media_unit_config_desc.2 +++ b/doc/man/nvme_media_unit_config_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_media_unit_config_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_media_unit_config_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_media_unit_config_desc \- Media Unit Configuration Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_media_unit_stat_desc.2 b/doc/man/nvme_media_unit_stat_desc.2 index dfc216e..9f381b8 100644 --- a/doc/man/nvme_media_unit_stat_desc.2 +++ b/doc/man/nvme_media_unit_stat_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_media_unit_stat_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_media_unit_stat_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_media_unit_stat_desc \- Media Unit Status Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_media_unit_stat_log.2 b/doc/man/nvme_media_unit_stat_log.2 index c20f444..f23ea35 100644 --- a/doc/man/nvme_media_unit_stat_log.2 +++ b/doc/man/nvme_media_unit_stat_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_media_unit_stat_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_media_unit_stat_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_media_unit_stat_log \- Media Unit Status .SH SYNOPSIS diff --git a/doc/man/nvme_metadata_element_desc.2 b/doc/man/nvme_metadata_element_desc.2 index 5da55c4..62356e4 100644 --- a/doc/man/nvme_metadata_element_desc.2 +++ b/doc/man/nvme_metadata_element_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_metadata_element_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_metadata_element_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_metadata_element_desc \- Metadata Element Descriptor .SH SYNOPSIS 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..95550ee --- /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" "October 2022" "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..d7ac6ac --- /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" "October 2022" "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..9faf329 --- /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" "October 2022" "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..4b57744 --- /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" "October 2022" "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 index 1727124..f52c668 100644 --- a/doc/man/nvme_mi_admin_get_log.2 +++ b/doc/man/nvme_mi_admin_get_log.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_get_log" 9 "nvme_mi_admin_get_log" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_get_log" 9 "nvme_mi_admin_get_log" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_get_log \- Retrieve log page data from controller .SH SYNOPSIS @@ -21,4 +21,5 @@ to fit within MI message-size limits. See: \fIstruct nvme_get_log_args\fP .SH "RETURN" -0 on success, non-zero on failure +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..b5bd512 --- /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" "October 2022" "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..2aae5b2 --- /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" "October 2022" "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..8c4238f --- /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" "October 2022" "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..a95b090 --- /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" "October 2022" "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..1aa24f6 --- /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" "October 2022" "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..47cfccc --- /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" "October 2022" "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..d05eb67 --- /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" "October 2022" "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..056bb2b --- /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" "October 2022" "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..4b3fe59 --- /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" "October 2022" "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..c0556a1 --- /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" "October 2022" "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..eac5d66 --- /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" "October 2022" "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..999c1eb --- /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" "October 2022" "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..d4e3952 --- /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" "October 2022" "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..d2bd99e --- /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" "October 2022" "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..05706f7 --- /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" "October 2022" "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..11df378 --- /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" "October 2022" "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..aa53c90 --- /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" "October 2022" "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..c2e9f56 --- /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" "October 2022" "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..5315b41 --- /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" "October 2022" "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..44c4ef2 --- /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" "October 2022" "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..b457c53 --- /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" "October 2022" "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..1db47a6 --- /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" "October 2022" "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..4110313 --- /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" "October 2022" "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..9effb5e --- /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" "October 2022" "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..0912736 --- /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" "October 2022" "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..7478fd3 --- /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" "October 2022" "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..eb64be4 --- /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" "October 2022" "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..9b2b78a --- /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" "October 2022" "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..6976fe4 --- /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" "October 2022" "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 index 1d95814..2080bd7 100644 --- a/doc/man/nvme_mi_admin_identify.2 +++ b/doc/man/nvme_mi_admin_identify.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_identify" 9 "nvme_mi_admin_identify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_identify" 9 "nvme_mi_admin_identify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_identify \- Perform an Admin identify command. .SH SYNOPSIS @@ -20,4 +20,5 @@ controller) is not a full \fINVME_IDENTIFY_DATA_SIZE\fP. See: \fIstruct nvme_identify_args\fP .SH "RETURN" -0 on success, non-zero on failure +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..bfd7a90 --- /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" "October 2022" "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..b588c34 --- /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" "October 2022" "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..d29553a --- /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" "October 2022" "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 index 9cb882b..314c047 100644 --- a/doc/man/nvme_mi_admin_identify_cns_nsid.2 +++ b/doc/man/nvme_mi_admin_identify_cns_nsid.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_identify_cns_nsid" 9 "nvme_mi_admin_identify_cns_nsid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_identify_cns_nsid" 9 "nvme_mi_admin_identify_cns_nsid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_identify_cns_nsid \- Perform an Admin identify command using specific CNS/NSID parameters. .SH SYNOPSIS @@ -26,4 +26,5 @@ Stores the identify data in \fIdata\fP, which is expected to be a buffer of 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" -0 on success, non-zero on failure +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 index 8f82ff4..f3ed411 100644 --- a/doc/man/nvme_mi_admin_identify_ctrl.2 +++ b/doc/man/nvme_mi_admin_identify_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_identify_ctrl" 9 "nvme_mi_admin_identify_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_identify_ctrl" 9 "nvme_mi_admin_identify_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_identify_ctrl \- Perform an Admin identify for a controller .SH SYNOPSIS @@ -20,4 +20,5 @@ fully populated on success. See: \fIstruct nvme_id_ctrl\fP .SH "RETURN" -0 on success, non-zero on failure +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 index 477401e..d223cb0 100644 --- a/doc/man/nvme_mi_admin_identify_ctrl_list.2 +++ b/doc/man/nvme_mi_admin_identify_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_identify_ctrl_list" 9 "nvme_mi_admin_identify_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_identify_ctrl_list" 9 "nvme_mi_admin_identify_ctrl_list" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_identify_ctrl_list \- Perform an Admin identify for a controller list. .SH SYNOPSIS @@ -23,4 +23,5 @@ fully populated on success. See: \fIstruct nvme_ctrl_list\fP .SH "RETURN" -0 on success, non-zero on failure +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..233be5b --- /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" "October 2022" "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..b937a84 --- /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" "October 2022" "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..7077442 --- /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" "October 2022" "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 index 8e9f867..c2d64ae 100644 --- a/doc/man/nvme_mi_admin_identify_partial.2 +++ b/doc/man/nvme_mi_admin_identify_partial.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_identify_partial" 9 "nvme_mi_admin_identify_partial" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_identify_partial" 9 "nvme_mi_admin_identify_partial" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_identify_partial \- Perform an Admin identify command, and retrieve partial response data. .SH SYNOPSIS @@ -33,4 +33,5 @@ yet supported by libnvme-mi, please contact the maintainers. See: \fIstruct nvme_identify_args\fP .SH "RETURN" -0 on success, non-zero on failure +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..4c89791 --- /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" "October 2022" "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..9773676 --- /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" "October 2022" "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..19fe15a --- /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" "October 2022" "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..96cd691 --- /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" "October 2022" "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..a413f9b --- /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" "October 2022" "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 index 3e6bf4a..97d7927 100644 --- a/doc/man/nvme_mi_admin_req_hdr.2 +++ b/doc/man/nvme_mi_admin_req_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_admin_req_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_admin_req_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_admin_req_hdr \- Admin command request header. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_admin_resp_hdr.2 b/doc/man/nvme_mi_admin_resp_hdr.2 index e8f3f28..fb26a90 100644 --- a/doc/man/nvme_mi_admin_resp_hdr.2 +++ b/doc/man/nvme_mi_admin_resp_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_admin_resp_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_admin_resp_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_admin_resp_hdr \- Admin command response header. .SH SYNOPSIS 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..3f2ea2c --- /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" "October 2022" "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 index 8fc0dc7..ec3abcd 100644 --- a/doc/man/nvme_mi_admin_security_recv.2 +++ b/doc/man/nvme_mi_admin_security_recv.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_security_recv" 9 "nvme_mi_admin_security_recv" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_security_recv" 9 "nvme_mi_admin_security_recv" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_security_recv \- Perform a Security Receive command on a controller. .SH SYNOPSIS @@ -21,4 +21,5 @@ comply with specification limits. See: \fIstruct nvme_get_log_args\fP .SH "RETURN" -0 on success, non-zero on failure +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 index bad47f0..7aad612 100644 --- a/doc/man/nvme_mi_admin_security_send.2 +++ b/doc/man/nvme_mi_admin_security_send.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_security_send" 9 "nvme_mi_admin_security_send" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_security_send" 9 "nvme_mi_admin_security_send" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_security_send \- Perform a Security Send command on a controller. .SH SYNOPSIS @@ -21,4 +21,5 @@ comply with specification limits. See: \fIstruct nvme_get_log_args\fP .SH "RETURN" -0 on success, non-zero on failure +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 index 3f3edba..9cccd8b 100644 --- a/doc/man/nvme_mi_admin_xfer.2 +++ b/doc/man/nvme_mi_admin_xfer.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_admin_xfer" 9 "nvme_mi_admin_xfer" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_admin_xfer" 9 "nvme_mi_admin_xfer" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_admin_xfer \- Raw admin transfer interface. .SH SYNOPSIS @@ -38,4 +38,5 @@ 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" -0 on success, non-zero on failure. +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 index 94d8836..d51b676 100644 --- a/doc/man/nvme_mi_ccs.2 +++ b/doc/man/nvme_mi_ccs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_ccs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_ccs" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_ccs \- Get State Control Primitive Success Response Fields - Control Primitive Specific Response .SH SYNOPSIS diff --git a/doc/man/nvme_mi_close.2 b/doc/man/nvme_mi_close.2 index dd31f5e..99b372d 100644 --- a/doc/man/nvme_mi_close.2 +++ b/doc/man/nvme_mi_close.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_close" 9 "nvme_mi_close" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_close" 9 "nvme_mi_close" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_close \- Close an endpoint connection and release resources, including controller objects. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_close_ctrl.2 b/doc/man/nvme_mi_close_ctrl.2 index 40b17ba..0da3444 100644 --- a/doc/man/nvme_mi_close_ctrl.2 +++ b/doc/man/nvme_mi_close_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_close_ctrl" 9 "nvme_mi_close_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_close_ctrl" 9 "nvme_mi_close_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_close_ctrl \- free a controller .SH SYNOPSIS diff --git a/doc/man/nvme_mi_cmd_supported_effects.2 b/doc/man/nvme_mi_cmd_supported_effects.2 index 2ec0907..1c92f22 100644 --- a/doc/man/nvme_mi_cmd_supported_effects.2 +++ b/doc/man/nvme_mi_cmd_supported_effects.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_cmd_supported_effects" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_cmd_supported_effects" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_cmd_supported_effects \- MI Command Supported and Effects Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_cmd_supported_effects_log.2 b/doc/man/nvme_mi_cmd_supported_effects_log.2 index c6c76fd..2c31034 100644 --- a/doc/man/nvme_mi_cmd_supported_effects_log.2 +++ b/doc/man/nvme_mi_cmd_supported_effects_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_cmd_supported_effects_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_cmd_supported_effects_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_cmd_supported_effects_log \- NVMe-MI Commands Supported and Effects Log .SH SYNOPSIS diff --git a/doc/man/nvme_mi_config_id.2 b/doc/man/nvme_mi_config_id.2 index f8f46ce..e1f9623 100644 --- a/doc/man/nvme_mi_config_id.2 +++ b/doc/man/nvme_mi_config_id.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_config_id" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_config_id" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_config_id \- NVMe-MI Configuration identifier. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_config_smbus_freq.2 b/doc/man/nvme_mi_config_smbus_freq.2 index 19a5ca6..f32d02a 100644 --- a/doc/man/nvme_mi_config_smbus_freq.2 +++ b/doc/man/nvme_mi_config_smbus_freq.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_config_smbus_freq" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_config_smbus_freq" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_config_smbus_freq \- SMBus/I2C frequency values .SH SYNOPSIS diff --git a/doc/man/nvme_mi_create_root.2 b/doc/man/nvme_mi_create_root.2 index 22d420e..36af0a8 100644 --- a/doc/man/nvme_mi_create_root.2 +++ b/doc/man/nvme_mi_create_root.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_create_root" 9 "nvme_mi_create_root" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_create_root" 9 "nvme_mi_create_root" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_create_root \- Create top-level MI (root) handle. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_csts.2 b/doc/man/nvme_mi_csts.2 index 32508e9..e60ee88 100644 --- a/doc/man/nvme_mi_csts.2 +++ b/doc/man/nvme_mi_csts.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_csts" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_csts" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_csts \- Controller Health Data Structure (CHDS) - Controller Status (CSTS) .SH SYNOPSIS diff --git a/doc/man/nvme_mi_ctrl_health_status.2 b/doc/man/nvme_mi_ctrl_health_status.2 index db5f1e9..3618dee 100644 --- a/doc/man/nvme_mi_ctrl_health_status.2 +++ b/doc/man/nvme_mi_ctrl_health_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_ctrl_health_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_ctrl_health_status" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_ctrl_health_status \- Controller Health Data Structure (CHDS) .SH SYNOPSIS diff --git a/doc/man/nvme_mi_cwarn.2 b/doc/man/nvme_mi_cwarn.2 index f8bec97..cfc6e6f 100644 --- a/doc/man/nvme_mi_cwarn.2 +++ b/doc/man/nvme_mi_cwarn.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_cwarn" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_cwarn" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_cwarn \- Controller Health Data Structure (CHDS) - Critical Warning (CWARN) .SH SYNOPSIS diff --git a/doc/man/nvme_mi_dtyp.2 b/doc/man/nvme_mi_dtyp.2 index 62a1010..72433cd 100644 --- a/doc/man/nvme_mi_dtyp.2 +++ b/doc/man/nvme_mi_dtyp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_dtyp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_dtyp" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_dtyp \- Data Structure Type field. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_elem.2 b/doc/man/nvme_mi_elem.2 index ef87653..9b63108 100644 --- a/doc/man/nvme_mi_elem.2 +++ b/doc/man/nvme_mi_elem.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_elem" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_elem" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_elem \- Element Descriptor Types .SH SYNOPSIS diff --git a/doc/man/nvme_mi_free_root.2 b/doc/man/nvme_mi_free_root.2 index e3b839b..f27be6c 100644 --- a/doc/man/nvme_mi_free_root.2 +++ b/doc/man/nvme_mi_free_root.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_free_root" 9 "nvme_mi_free_root" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_free_root" 9 "nvme_mi_free_root" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_free_root \- Free root object. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_init_ctrl.2 b/doc/man/nvme_mi_init_ctrl.2 index 5f43179..cd555a8 100644 --- a/doc/man/nvme_mi_init_ctrl.2 +++ b/doc/man/nvme_mi_init_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_init_ctrl" 9 "nvme_mi_init_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_init_ctrl" 9 "nvme_mi_init_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_init_ctrl \- initialise a NVMe controller. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_message_type.2 b/doc/man/nvme_mi_message_type.2 index a3f826f..0d0aa0a 100644 --- a/doc/man/nvme_mi_message_type.2 +++ b/doc/man/nvme_mi_message_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_message_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_message_type" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_message_type \- NVMe-MI message type field. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_mi_opcode.2 b/doc/man/nvme_mi_mi_opcode.2 index 366fcdf..85690b4 100644 --- a/doc/man/nvme_mi_mi_opcode.2 +++ b/doc/man/nvme_mi_mi_opcode.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_mi_opcode" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_mi_opcode" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_mi_opcode \- Operation code for supported NVMe-MI commands. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 b/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 index 830fda1..288b63a 100644 --- a/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 +++ b/doc/man/nvme_mi_mi_read_mi_data_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_mi_read_mi_data_ctrl" 9 "nvme_mi_mi_read_mi_data_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_mi_read_mi_data_ctrl" 9 "nvme_mi_mi_read_mi_data_ctrl" "October 2022" "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 @@ -19,4 +19,5 @@ controller with ID \fIctrlid\fP. See \fIstruct nvme_mi_read_ctrl_info\fP. .SH "RETURN" -0 on success, non-zero on failure. +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 index 69de67f..5d88fa8 100644 --- a/doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2 +++ b/doc/man/nvme_mi_mi_read_mi_data_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_mi_read_mi_data_ctrl_list" 9 "nvme_mi_mi_read_mi_data_ctrl_list" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_mi_read_mi_data_ctrl_list" 9 "nvme_mi_mi_read_mi_data_ctrl_list" "October 2022" "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 @@ -19,4 +19,5 @@ equal to \fIstart_ctrlid\fP. See \fIstruct nvme_ctrl_list\fP. .SH "RETURN" -0 on success, non-zero on failure. +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 index b72b283..4d56bf0 100644 --- a/doc/man/nvme_mi_mi_read_mi_data_port.2 +++ b/doc/man/nvme_mi_mi_read_mi_data_port.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_mi_read_mi_data_port" 9 "nvme_mi_mi_read_mi_data_port" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_mi_read_mi_data_port" 9 "nvme_mi_mi_read_mi_data_port" "October 2022" "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 @@ -20,4 +20,5 @@ range of port IDs. See \fIstruct nvme_mi_read_port_info\fP. .SH "RETURN" -0 on success, non-zero on failure. +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 index 69c028e..685399e 100644 --- a/doc/man/nvme_mi_mi_read_mi_data_subsys.2 +++ b/doc/man/nvme_mi_mi_read_mi_data_subsys.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_mi_read_mi_data_subsys" 9 "nvme_mi_mi_read_mi_data_subsys" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_mi_read_mi_data_subsys" 9 "nvme_mi_mi_read_mi_data_subsys" "October 2022" "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 @@ -14,4 +14,5 @@ subsystem information to populate Retrieves the Subsystem information - number of external ports and NVMe version information. See \fIstruct nvme_mi_read_nvm_ss_info\fP. .SH "RETURN" -0 on success, non-zero on failure. +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 index 422a075..29cd019 100644 --- a/doc/man/nvme_mi_mi_req_hdr.2 +++ b/doc/man/nvme_mi_mi_req_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_mi_req_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_mi_req_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_mi_req_hdr \- MI request message header. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_mi_resp_hdr.2 b/doc/man/nvme_mi_mi_resp_hdr.2 index 0b93adb..c330b1b 100644 --- a/doc/man/nvme_mi_mi_resp_hdr.2 +++ b/doc/man/nvme_mi_mi_resp_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_mi_resp_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_mi_resp_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_mi_resp_hdr \- MI response message header. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 b/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 index 6730250..198744f 100644 --- a/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 +++ b/doc/man/nvme_mi_mi_subsystem_health_status_poll.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_mi_subsystem_health_status_poll" 9 "nvme_mi_mi_subsystem_health_status_poll" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_mi_subsystem_health_status_poll" 9 "nvme_mi_mi_subsystem_health_status_poll" "October 2022" "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 @@ -20,4 +20,5 @@ 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" -0 on success, non-zero on failure. +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 index dac89e7..19e863b 100644 --- a/doc/man/nvme_mi_msg_hdr.2 +++ b/doc/man/nvme_mi_msg_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_msg_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_msg_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_msg_hdr \- General MI message header. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_msg_resp.2 b/doc/man/nvme_mi_msg_resp.2 index 6196b3d..d0fd332 100644 --- a/doc/man/nvme_mi_msg_resp.2 +++ b/doc/man/nvme_mi_msg_resp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_msg_resp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_msg_resp" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_msg_resp \- Generic response type. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_nvm_ss_health_status.2 b/doc/man/nvme_mi_nvm_ss_health_status.2 index 62e1014..4c3e829 100644 --- a/doc/man/nvme_mi_nvm_ss_health_status.2 +++ b/doc/man/nvme_mi_nvm_ss_health_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_nvm_ss_health_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_nvm_ss_health_status" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_nvm_ss_health_status \- Subsystem Management Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_open_mctp.2 b/doc/man/nvme_mi_open_mctp.2 index 307b0b1..df239fb 100644 --- a/doc/man/nvme_mi_open_mctp.2 +++ b/doc/man/nvme_mi_open_mctp.2 @@ -1,4 +1,4 @@ -.TH "nvme_mi_open_mctp" 9 "nvme_mi_open_mctp" "August 2022" "libnvme API manual" LINUX +.TH "nvme_mi_open_mctp" 9 "nvme_mi_open_mctp" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_mi_open_mctp \- Create an endpoint using a MCTP connection. .SH SYNOPSIS diff --git a/doc/man/nvme_mi_osc.2 b/doc/man/nvme_mi_osc.2 index 2105e3d..447786f 100644 --- a/doc/man/nvme_mi_osc.2 +++ b/doc/man/nvme_mi_osc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_osc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_osc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_osc \- Optionally Supported Command Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_port_pcie.2 b/doc/man/nvme_mi_port_pcie.2 index e5e760a..09825fe 100644 --- a/doc/man/nvme_mi_port_pcie.2 +++ b/doc/man/nvme_mi_port_pcie.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_port_pcie" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_port_pcie" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_port_pcie \- PCIe Port Specific Data .SH SYNOPSIS diff --git a/doc/man/nvme_mi_port_smb.2 b/doc/man/nvme_mi_port_smb.2 index f3a5319..c11e3dd 100644 --- a/doc/man/nvme_mi_port_smb.2 +++ b/doc/man/nvme_mi_port_smb.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_port_smb" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_port_smb" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_port_smb \- SMBus Port Specific Data .SH SYNOPSIS diff --git a/doc/man/nvme_mi_read_ctrl_info.2 b/doc/man/nvme_mi_read_ctrl_info.2 index 16b06d1..830e7f8 100644 --- a/doc/man/nvme_mi_read_ctrl_info.2 +++ b/doc/man/nvme_mi_read_ctrl_info.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_read_ctrl_info" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_read_ctrl_info" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_read_ctrl_info \- Controller Information Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_read_nvm_ss_info.2 b/doc/man/nvme_mi_read_nvm_ss_info.2 index 581f8da..a761e7d 100644 --- a/doc/man/nvme_mi_read_nvm_ss_info.2 +++ b/doc/man/nvme_mi_read_nvm_ss_info.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_read_nvm_ss_info" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_read_nvm_ss_info" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_read_nvm_ss_info \- NVM Subsystem Information Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_read_port_info.2 b/doc/man/nvme_mi_read_port_info.2 index 4c00a67..831aff7 100644 --- a/doc/man/nvme_mi_read_port_info.2 +++ b/doc/man/nvme_mi_read_port_info.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_read_port_info" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_read_port_info" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_read_port_info \- Port Information Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_read_sc_list.2 b/doc/man/nvme_mi_read_sc_list.2 index f7f6096..c3fa251 100644 --- a/doc/man/nvme_mi_read_sc_list.2 +++ b/doc/man/nvme_mi_read_sc_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_read_sc_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_read_sc_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_read_sc_list \- Management Endpoint Buffer Supported Command List Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_mi_resp_status.2 b/doc/man/nvme_mi_resp_status.2 index a46bafc..e0b79c9 100644 --- a/doc/man/nvme_mi_resp_status.2 +++ b/doc/man/nvme_mi_resp_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_mi_resp_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_mi_resp_status" "October 2022" "API Manual" LINUX .SH NAME enum nvme_mi_resp_status \- values for the response status field .SH SYNOPSIS 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..a65a85f --- /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" "October 2022" "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 index 8f65e06..79188a8 100644 --- a/doc/man/nvme_mi_vpd_hdr.2 +++ b/doc/man/nvme_mi_vpd_hdr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_hdr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_hdr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_hdr \- Vital Product Data Common Header .SH SYNOPSIS diff --git a/doc/man/nvme_mi_vpd_mr_common.2 b/doc/man/nvme_mi_vpd_mr_common.2 index b88a43f..95195c3 100644 --- a/doc/man/nvme_mi_vpd_mr_common.2 +++ b/doc/man/nvme_mi_vpd_mr_common.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_mr_common" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_mr_common" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_mr_common \- NVMe MultiRecord Area .SH SYNOPSIS diff --git a/doc/man/nvme_mi_vpd_mra.2 b/doc/man/nvme_mi_vpd_mra.2 index b9d192b..76c1dda 100644 --- a/doc/man/nvme_mi_vpd_mra.2 +++ b/doc/man/nvme_mi_vpd_mra.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_mra" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_mra" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_mra \- NVMe MultiRecord Area .SH SYNOPSIS diff --git a/doc/man/nvme_mi_vpd_ppmra.2 b/doc/man/nvme_mi_vpd_ppmra.2 index 0065676..7d2050e 100644 --- a/doc/man/nvme_mi_vpd_ppmra.2 +++ b/doc/man/nvme_mi_vpd_ppmra.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_ppmra" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_ppmra" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_ppmra \- NVMe PCIe Port MultiRecord Area .SH SYNOPSIS diff --git a/doc/man/nvme_mi_vpd_telem.2 b/doc/man/nvme_mi_vpd_telem.2 index c8f236b..22524e4 100644 --- a/doc/man/nvme_mi_vpd_telem.2 +++ b/doc/man/nvme_mi_vpd_telem.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_telem" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_telem" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_telem \- Vital Product Data Element Descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_mi_vpd_tra.2 b/doc/man/nvme_mi_vpd_tra.2 index 4164d87..25aa2b6 100644 --- a/doc/man/nvme_mi_vpd_tra.2 +++ b/doc/man/nvme_mi_vpd_tra.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_mi_vpd_tra" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_mi_vpd_tra" "October 2022" "API Manual" LINUX .SH NAME struct nvme_mi_vpd_tra \- Vital Product Data Topology MultiRecord .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_attach_ctrls.2 b/doc/man/nvme_namespace_attach_ctrls.2 index 862e7a1..f03a0d3 100644 --- a/doc/man/nvme_namespace_attach_ctrls.2 +++ b/doc/man/nvme_namespace_attach_ctrls.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_attach_ctrls" 9 "nvme_namespace_attach_ctrls" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_attach_ctrls" 9 "nvme_namespace_attach_ctrls" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_attach_ctrls \- Attach namespace to controller(s) .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_detach_ctrls.2 b/doc/man/nvme_namespace_detach_ctrls.2 index 4c8a5ee..a98170f 100644 --- a/doc/man/nvme_namespace_detach_ctrls.2 +++ b/doc/man/nvme_namespace_detach_ctrls.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_detach_ctrls" 9 "nvme_namespace_detach_ctrls" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_detach_ctrls" 9 "nvme_namespace_detach_ctrls" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_detach_ctrls \- Detach namespace from controller(s) .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_filter.2 b/doc/man/nvme_namespace_filter.2 index 89fb9f2..d74e862 100644 --- a/doc/man/nvme_namespace_filter.2 +++ b/doc/man/nvme_namespace_filter.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_filter" 9 "nvme_namespace_filter" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_filter" 9 "nvme_namespace_filter" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_filter \- Filter for namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_first_path.2 b/doc/man/nvme_namespace_first_path.2 index 0bb322d..f3ea1dc 100644 --- a/doc/man/nvme_namespace_first_path.2 +++ b/doc/man/nvme_namespace_first_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_first_path" 9 "nvme_namespace_first_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_first_path" 9 "nvme_namespace_first_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_first_path \- Start path iterator .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_for_each_path.2 b/doc/man/nvme_namespace_for_each_path.2 index c08b29c..a8e104a 100644 --- a/doc/man/nvme_namespace_for_each_path.2 +++ b/doc/man/nvme_namespace_for_each_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_for_each_path" 9 "nvme_namespace_for_each_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_for_each_path" 9 "nvme_namespace_for_each_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_for_each_path \- Traverse paths .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_for_each_path_safe.2 b/doc/man/nvme_namespace_for_each_path_safe.2 index 53e0e5a..a2e932c 100644 --- a/doc/man/nvme_namespace_for_each_path_safe.2 +++ b/doc/man/nvme_namespace_for_each_path_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_for_each_path_safe" 9 "nvme_namespace_for_each_path_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_for_each_path_safe" 9 "nvme_namespace_for_each_path_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_for_each_path_safe \- Traverse paths .SH SYNOPSIS diff --git a/doc/man/nvme_namespace_next_path.2 b/doc/man/nvme_namespace_next_path.2 index 635ac93..6606597 100644 --- a/doc/man/nvme_namespace_next_path.2 +++ b/doc/man/nvme_namespace_next_path.2 @@ -1,4 +1,4 @@ -.TH "nvme_namespace_next_path" 9 "nvme_namespace_next_path" "August 2022" "libnvme API manual" LINUX +.TH "nvme_namespace_next_path" 9 "nvme_namespace_next_path" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_namespace_next_path \- Next path iterator .SH SYNOPSIS diff --git a/doc/man/nvme_nd_ns_fpi.2 b/doc/man/nvme_nd_ns_fpi.2 index a0c7d16..320b2c0 100644 --- a/doc/man/nvme_nd_ns_fpi.2 +++ b/doc/man/nvme_nd_ns_fpi.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_nd_ns_fpi" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_nd_ns_fpi" "October 2022" "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 diff --git a/doc/man/nvme_next_host.2 b/doc/man/nvme_next_host.2 index 94ad79e..f084378 100644 --- a/doc/man/nvme_next_host.2 +++ b/doc/man/nvme_next_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_next_host" 9 "nvme_next_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_next_host" 9 "nvme_next_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_next_host \- Next host iterator .SH SYNOPSIS diff --git a/doc/man/nvme_next_subsystem.2 b/doc/man/nvme_next_subsystem.2 index 89e6fa7..55459ea 100644 --- a/doc/man/nvme_next_subsystem.2 +++ b/doc/man/nvme_next_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_next_subsystem" 9 "nvme_next_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_next_subsystem" 9 "nvme_next_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_next_subsystem \- Next subsystem iterator .SH SYNOPSIS diff --git a/doc/man/nvme_ns_attach.2 b/doc/man/nvme_ns_attach.2 index 9f88cdc..fc2d0f5 100644 --- a/doc/man/nvme_ns_attach.2 +++ b/doc/man/nvme_ns_attach.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_attach" 9 "nvme_ns_attach" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_attach" 9 "nvme_ns_attach" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_attach \- Attach or detach namespace to controller(s) .SH SYNOPSIS diff --git a/doc/man/nvme_ns_attach_ctrls.2 b/doc/man/nvme_ns_attach_ctrls.2 index 29b70f0..621a497 100644 --- a/doc/man/nvme_ns_attach_ctrls.2 +++ b/doc/man/nvme_ns_attach_ctrls.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_attach_ctrls" 9 "nvme_ns_attach_ctrls" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_attach_ctrls" 9 "nvme_ns_attach_ctrls" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_attach_ctrls \- Attach namespace to controllers .SH SYNOPSIS diff --git a/doc/man/nvme_ns_attach_sel.2 b/doc/man/nvme_ns_attach_sel.2 index 02e6d8f..ec2586b 100644 --- a/doc/man/nvme_ns_attach_sel.2 +++ b/doc/man/nvme_ns_attach_sel.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ns_attach_sel" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ns_attach_sel" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ns_attach_sel \- Namespace Attachment - Select .SH SYNOPSIS diff --git a/doc/man/nvme_ns_compare.2 b/doc/man/nvme_ns_compare.2 index ff0a0c0..e6858fb 100644 --- a/doc/man/nvme_ns_compare.2 +++ b/doc/man/nvme_ns_compare.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_compare" 9 "nvme_ns_compare" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_compare" 9 "nvme_ns_compare" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_compare \- Compare data on a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_detach_ctrls.2 b/doc/man/nvme_ns_detach_ctrls.2 index 93b37f1..aa0da79 100644 --- a/doc/man/nvme_ns_detach_ctrls.2 +++ b/doc/man/nvme_ns_detach_ctrls.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_detach_ctrls" 9 "nvme_ns_detach_ctrls" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_detach_ctrls" 9 "nvme_ns_detach_ctrls" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_detach_ctrls \- Detach namespace from controllers .SH SYNOPSIS diff --git a/doc/man/nvme_ns_flush.2 b/doc/man/nvme_ns_flush.2 index 8c3e340..88ef5f1 100644 --- a/doc/man/nvme_ns_flush.2 +++ b/doc/man/nvme_ns_flush.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_flush" 9 "nvme_ns_flush" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_flush" 9 "nvme_ns_flush" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_flush \- Flush data to a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_csi.2 b/doc/man/nvme_ns_get_csi.2 index c862bc7..1f48d89 100644 --- a/doc/man/nvme_ns_get_csi.2 +++ b/doc/man/nvme_ns_get_csi.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_csi" 9 "nvme_ns_get_csi" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_csi" 9 "nvme_ns_get_csi" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_csi \- Command set identifier of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_ctrl.2 b/doc/man/nvme_ns_get_ctrl.2 index a4262ef..04d7405 100644 --- a/doc/man/nvme_ns_get_ctrl.2 +++ b/doc/man/nvme_ns_get_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_ctrl" 9 "nvme_ns_get_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_ctrl" 9 "nvme_ns_get_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_ctrl \- &nvme_ctrl_t of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_eui64.2 b/doc/man/nvme_ns_get_eui64.2 new file mode 100644 index 0000000..0e2d46a --- /dev/null +++ b/doc/man/nvme_ns_get_eui64.2 @@ -0,0 +1,11 @@ +.TH "nvme_ns_get_eui64" 9 "nvme_ns_get_eui64" "October 2022" "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 index 29d90ab..21f89c4 100644 --- a/doc/man/nvme_ns_get_fd.2 +++ b/doc/man/nvme_ns_get_fd.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_fd" 9 "nvme_ns_get_fd" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_fd" 9 "nvme_ns_get_fd" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_fd \- Get associated file descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_firmware.2 b/doc/man/nvme_ns_get_firmware.2 index 0511f75..c9a6a7e 100644 --- a/doc/man/nvme_ns_get_firmware.2 +++ b/doc/man/nvme_ns_get_firmware.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_firmware" 9 "nvme_ns_get_firmware" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_firmware" 9 "nvme_ns_get_firmware" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_firmware \- Firmware string of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_generic_name.2 b/doc/man/nvme_ns_get_generic_name.2 index 3e5065e..5c0fe36 100644 --- a/doc/man/nvme_ns_get_generic_name.2 +++ b/doc/man/nvme_ns_get_generic_name.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_generic_name" 9 "nvme_ns_get_generic_name" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_generic_name" 9 "nvme_ns_get_generic_name" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_generic_name \- Returns name of generic namespace chardev. .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_lba_count.2 b/doc/man/nvme_ns_get_lba_count.2 index 40f9eb3..1827dcd 100644 --- a/doc/man/nvme_ns_get_lba_count.2 +++ b/doc/man/nvme_ns_get_lba_count.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_lba_count" 9 "nvme_ns_get_lba_count" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_lba_count" 9 "nvme_ns_get_lba_count" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_lba_count \- LBA count of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_lba_size.2 b/doc/man/nvme_ns_get_lba_size.2 index 9845e91..ca1c6bc 100644 --- a/doc/man/nvme_ns_get_lba_size.2 +++ b/doc/man/nvme_ns_get_lba_size.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_lba_size" 9 "nvme_ns_get_lba_size" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_lba_size" 9 "nvme_ns_get_lba_size" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_lba_size \- LBA size of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_lba_util.2 b/doc/man/nvme_ns_get_lba_util.2 index 805185a..c35b360 100644 --- a/doc/man/nvme_ns_get_lba_util.2 +++ b/doc/man/nvme_ns_get_lba_util.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_lba_util" 9 "nvme_ns_get_lba_util" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_lba_util" 9 "nvme_ns_get_lba_util" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_lba_util \- LBA utilization of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_meta_size.2 b/doc/man/nvme_ns_get_meta_size.2 index 2a40073..4bd0940 100644 --- a/doc/man/nvme_ns_get_meta_size.2 +++ b/doc/man/nvme_ns_get_meta_size.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_meta_size" 9 "nvme_ns_get_meta_size" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_meta_size" 9 "nvme_ns_get_meta_size" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_meta_size \- Metadata size of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_model.2 b/doc/man/nvme_ns_get_model.2 index ffa16f9..223ff01 100644 --- a/doc/man/nvme_ns_get_model.2 +++ b/doc/man/nvme_ns_get_model.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_model" 9 "nvme_ns_get_model" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_model" 9 "nvme_ns_get_model" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_model \- Model of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_name.2 b/doc/man/nvme_ns_get_name.2 index b4f4172..c25bd93 100644 --- a/doc/man/nvme_ns_get_name.2 +++ b/doc/man/nvme_ns_get_name.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_name" 9 "nvme_ns_get_name" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_name" 9 "nvme_ns_get_name" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_name \- sysfs name of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_nguid.2 b/doc/man/nvme_ns_get_nguid.2 index 2c240b1..cecd646 100644 --- a/doc/man/nvme_ns_get_nguid.2 +++ b/doc/man/nvme_ns_get_nguid.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_nguid" 9 "nvme_ns_get_nguid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_nguid" 9 "nvme_ns_get_nguid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_nguid \- 128-bit nguid of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_nsid.2 b/doc/man/nvme_ns_get_nsid.2 index 30ee3c9..0212042 100644 --- a/doc/man/nvme_ns_get_nsid.2 +++ b/doc/man/nvme_ns_get_nsid.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_nsid" 9 "nvme_ns_get_nsid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_nsid" 9 "nvme_ns_get_nsid" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_nsid \- NSID of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_serial.2 b/doc/man/nvme_ns_get_serial.2 index 49d3f6f..4ab27b3 100644 --- a/doc/man/nvme_ns_get_serial.2 +++ b/doc/man/nvme_ns_get_serial.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_serial" 9 "nvme_ns_get_serial" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_serial" 9 "nvme_ns_get_serial" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_serial \- Serial number of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_subsystem.2 b/doc/man/nvme_ns_get_subsystem.2 index ca9ef5b..2d20ba9 100644 --- a/doc/man/nvme_ns_get_subsystem.2 +++ b/doc/man/nvme_ns_get_subsystem.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_subsystem" 9 "nvme_ns_get_subsystem" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_subsystem" 9 "nvme_ns_get_subsystem" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_subsystem \- &nvme_subsystem_t of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_sysfs_dir.2 b/doc/man/nvme_ns_get_sysfs_dir.2 index ac6fcfe..51ff7de 100644 --- a/doc/man/nvme_ns_get_sysfs_dir.2 +++ b/doc/man/nvme_ns_get_sysfs_dir.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_get_sysfs_dir" 9 "nvme_ns_get_sysfs_dir" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_sysfs_dir" 9 "nvme_ns_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_get_sysfs_dir \- sysfs directory of a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_get_uuid.2 b/doc/man/nvme_ns_get_uuid.2 index 8215345..b471d55 100644 --- a/doc/man/nvme_ns_get_uuid.2 +++ b/doc/man/nvme_ns_get_uuid.2 @@ -1,10 +1,10 @@ -.TH "nvme_ns_get_uuid" 9 "nvme_ns_get_uuid" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_get_uuid" 9 "nvme_ns_get_uuid" "October 2022" "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 "uuid_t out " ");" +.BI "unsigned char out[NVME_UUID_LEN] " ");" .SH ARGUMENTS .IP "n" 12 Namespace instance diff --git a/doc/man/nvme_ns_id_desc.2 b/doc/man/nvme_ns_id_desc.2 index f2ea76a..a8a7567 100644 --- a/doc/man/nvme_ns_id_desc.2 +++ b/doc/man/nvme_ns_id_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_ns_id_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_ns_id_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_ns_id_desc \- Namespace identifier type descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_ns_id_desc_nidt.2 b/doc/man/nvme_ns_id_desc_nidt.2 index 5cfb1d7..7177ccb 100644 --- a/doc/man/nvme_ns_id_desc_nidt.2 +++ b/doc/man/nvme_ns_id_desc_nidt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ns_id_desc_nidt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ns_id_desc_nidt" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ns_id_desc_nidt \- Known namespace identifier types .SH SYNOPSIS diff --git a/doc/man/nvme_ns_identify.2 b/doc/man/nvme_ns_identify.2 index 2375306..5e522a0 100644 --- a/doc/man/nvme_ns_identify.2 +++ b/doc/man/nvme_ns_identify.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_identify" 9 "nvme_ns_identify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_identify" 9 "nvme_ns_identify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_identify \- Issue an 'identify namespace' command .SH SYNOPSIS diff --git a/doc/man/nvme_ns_identify_descs.2 b/doc/man/nvme_ns_identify_descs.2 index 98d77b9..a727935 100644 --- a/doc/man/nvme_ns_identify_descs.2 +++ b/doc/man/nvme_ns_identify_descs.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_identify_descs" 9 "nvme_ns_identify_descs" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_identify_descs" 9 "nvme_ns_identify_descs" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_identify_descs \- Issue an 'identify descriptors' command .SH SYNOPSIS diff --git a/doc/man/nvme_ns_list.2 b/doc/man/nvme_ns_list.2 index 6443a71..8e3f787 100644 --- a/doc/man/nvme_ns_list.2 +++ b/doc/man/nvme_ns_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_ns_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_ns_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_ns_list \- Namespace List .SH SYNOPSIS diff --git a/doc/man/nvme_ns_metadata_type.2 b/doc/man/nvme_ns_metadata_type.2 index cc10b8d..8d874a8 100644 --- a/doc/man/nvme_ns_metadata_type.2 +++ b/doc/man/nvme_ns_metadata_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ns_metadata_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ns_metadata_type" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ns_metadata_type \- Namespace Metadata Element Types .SH SYNOPSIS diff --git a/doc/man/nvme_ns_mgmt.2 b/doc/man/nvme_ns_mgmt.2 index 3013a2e..04d3e51 100644 --- a/doc/man/nvme_ns_mgmt.2 +++ b/doc/man/nvme_ns_mgmt.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_mgmt" 9 "nvme_ns_mgmt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_mgmt" 9 "nvme_ns_mgmt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_mgmt \- Issue a Namespace management command .SH SYNOPSIS diff --git a/doc/man/nvme_ns_mgmt_create.2 b/doc/man/nvme_ns_mgmt_create.2 index 7060941..896332c 100644 --- a/doc/man/nvme_ns_mgmt_create.2 +++ b/doc/man/nvme_ns_mgmt_create.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_mgmt_create" 9 "nvme_ns_mgmt_create" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_mgmt_create" 9 "nvme_ns_mgmt_create" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_mgmt_create \- Create a non attached namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_mgmt_delete.2 b/doc/man/nvme_ns_mgmt_delete.2 index 4993ed4..b60654b 100644 --- a/doc/man/nvme_ns_mgmt_delete.2 +++ b/doc/man/nvme_ns_mgmt_delete.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_mgmt_delete" 9 "nvme_ns_mgmt_delete" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_mgmt_delete" 9 "nvme_ns_mgmt_delete" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_mgmt_delete \- Delete a non attached namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_mgmt_sel.2 b/doc/man/nvme_ns_mgmt_sel.2 index 4d76f29..947ca7b 100644 --- a/doc/man/nvme_ns_mgmt_sel.2 +++ b/doc/man/nvme_ns_mgmt_sel.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ns_mgmt_sel" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ns_mgmt_sel" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ns_mgmt_sel \- Namespace Management - Select .SH SYNOPSIS diff --git a/doc/man/nvme_ns_read.2 b/doc/man/nvme_ns_read.2 index 9e5386e..682ca14 100644 --- a/doc/man/nvme_ns_read.2 +++ b/doc/man/nvme_ns_read.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_read" 9 "nvme_ns_read" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_read" 9 "nvme_ns_read" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_read \- Read from a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_rescan.2 b/doc/man/nvme_ns_rescan.2 index 0db76a0..a483c0b 100644 --- a/doc/man/nvme_ns_rescan.2 +++ b/doc/man/nvme_ns_rescan.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_rescan" 9 "nvme_ns_rescan" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_rescan" 9 "nvme_ns_rescan" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_rescan \- Initiate a controller rescan .SH SYNOPSIS diff --git a/doc/man/nvme_ns_verify.2 b/doc/man/nvme_ns_verify.2 index 0a37121..48ce2fc 100644 --- a/doc/man/nvme_ns_verify.2 +++ b/doc/man/nvme_ns_verify.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_verify" 9 "nvme_ns_verify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_verify" 9 "nvme_ns_verify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_verify \- Verify data on a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_write.2 b/doc/man/nvme_ns_write.2 index 5944967..b671d37 100644 --- a/doc/man/nvme_ns_write.2 +++ b/doc/man/nvme_ns_write.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_write" 9 "nvme_ns_write" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_write" 9 "nvme_ns_write" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_write \- Write to a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_ns_write_protect_cfg.2 b/doc/man/nvme_ns_write_protect_cfg.2 index f6f7e46..0987434 100644 --- a/doc/man/nvme_ns_write_protect_cfg.2 +++ b/doc/man/nvme_ns_write_protect_cfg.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_ns_write_protect_cfg" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_ns_write_protect_cfg" "October 2022" "API Manual" LINUX .SH NAME enum nvme_ns_write_protect_cfg \- Write Protection - Write Protection State .SH SYNOPSIS diff --git a/doc/man/nvme_ns_write_uncorrectable.2 b/doc/man/nvme_ns_write_uncorrectable.2 index b4280d7..944b953 100644 --- a/doc/man/nvme_ns_write_uncorrectable.2 +++ b/doc/man/nvme_ns_write_uncorrectable.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_write_uncorrectable" 9 "nvme_ns_write_uncorrectable" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_write_uncorrectable" 9 "nvme_ns_write_uncorrectable" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_write_uncorrectable \- Issus a 'write uncorrectable' command .SH SYNOPSIS diff --git a/doc/man/nvme_ns_write_zeros.2 b/doc/man/nvme_ns_write_zeros.2 index 2354329..132c83a 100644 --- a/doc/man/nvme_ns_write_zeros.2 +++ b/doc/man/nvme_ns_write_zeros.2 @@ -1,4 +1,4 @@ -.TH "nvme_ns_write_zeros" 9 "nvme_ns_write_zeros" "August 2022" "libnvme API manual" LINUX +.TH "nvme_ns_write_zeros" 9 "nvme_ns_write_zeros" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_ns_write_zeros \- Write zeros to a namespace .SH SYNOPSIS diff --git a/doc/man/nvme_nss_hw_err_event.2 b/doc/man/nvme_nss_hw_err_event.2 index 870bc84..ad38206 100644 --- a/doc/man/nvme_nss_hw_err_event.2 +++ b/doc/man/nvme_nss_hw_err_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_nss_hw_err_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_nss_hw_err_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_nss_hw_err_event \- NVM Subsystem Hardware Error Event .SH SYNOPSIS diff --git a/doc/man/nvme_nvm_id_ns.2 b/doc/man/nvme_nvm_id_ns.2 index 14e150a..8bfc16f 100644 --- a/doc/man/nvme_nvm_id_ns.2 +++ b/doc/man/nvme_nvm_id_ns.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_nvm_id_ns" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_nvm_id_ns" "October 2022" "API Manual" LINUX .SH NAME struct nvme_nvm_id_ns \- NVME Command Set I/O Command Set Specific Identify Namespace Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_nvm_id_ns_elbaf.2 b/doc/man/nvme_nvm_id_ns_elbaf.2 index f5e89ac..8e466dd 100644 --- a/doc/man/nvme_nvm_id_ns_elbaf.2 +++ b/doc/man/nvme_nvm_id_ns_elbaf.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_nvm_id_ns_elbaf" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_nvm_id_ns_elbaf" "October 2022" "API Manual" LINUX .SH NAME enum nvme_nvm_id_ns_elbaf \- This field indicates the extended LBA format .SH SYNOPSIS diff --git a/doc/man/nvme_nvm_identify_ctrl.2 b/doc/man/nvme_nvm_identify_ctrl.2 index 93083bf..541143f 100644 --- a/doc/man/nvme_nvm_identify_ctrl.2 +++ b/doc/man/nvme_nvm_identify_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_nvm_identify_ctrl" 9 "nvme_nvm_identify_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_nvm_identify_ctrl" 9 "nvme_nvm_identify_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_nvm_identify_ctrl \- Identify controller data .SH SYNOPSIS diff --git a/doc/man/nvme_nvmeset_pl_status.2 b/doc/man/nvme_nvmeset_pl_status.2 index b8ab7e9..fbb2ea4 100644 --- a/doc/man/nvme_nvmeset_pl_status.2 +++ b/doc/man/nvme_nvmeset_pl_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_nvmeset_pl_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_nvmeset_pl_status" "October 2022" "API Manual" LINUX .SH NAME enum nvme_nvmeset_pl_status \- Predictable Latency Per NVM Set Log - Status .SH SYNOPSIS diff --git a/doc/man/nvme_nvmset_attr.2 b/doc/man/nvme_nvmset_attr.2 index d985812..92210da 100644 --- a/doc/man/nvme_nvmset_attr.2 +++ b/doc/man/nvme_nvmset_attr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_nvmset_attr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_nvmset_attr" "October 2022" "API Manual" LINUX .SH NAME struct nvme_nvmset_attr \- NVM Set Attributes Entry .SH SYNOPSIS diff --git a/doc/man/nvme_nvmset_pl_events.2 b/doc/man/nvme_nvmset_pl_events.2 index 2243280..7f74421 100644 --- a/doc/man/nvme_nvmset_pl_events.2 +++ b/doc/man/nvme_nvmset_pl_events.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_nvmset_pl_events" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_nvmset_pl_events" "October 2022" "API Manual" LINUX .SH NAME enum nvme_nvmset_pl_events \- Predictable Latency Per NVM Set Log - Event Type .SH SYNOPSIS diff --git a/doc/man/nvme_nvmset_predictable_lat_log.2 b/doc/man/nvme_nvmset_predictable_lat_log.2 index 85432d9..ec9994b 100644 --- a/doc/man/nvme_nvmset_predictable_lat_log.2 +++ b/doc/man/nvme_nvmset_predictable_lat_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_nvmset_predictable_lat_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_nvmset_predictable_lat_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_nvmset_predictable_lat_log \- Predictable Latency Mode - Deterministic Threshold Configuration Data .SH SYNOPSIS diff --git a/doc/man/nvme_open.2 b/doc/man/nvme_open.2 index cb10cbe..370f86c 100644 --- a/doc/man/nvme_open.2 +++ b/doc/man/nvme_open.2 @@ -1,4 +1,4 @@ -.TH "nvme_open" 9 "nvme_open" "August 2022" "libnvme API manual" LINUX +.TH "nvme_open" 9 "nvme_open" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_open \- Open an nvme controller or namespace device .SH SYNOPSIS diff --git a/doc/man/nvme_passthru_cmd.2 b/doc/man/nvme_passthru_cmd.2 index b73ff94..7528ccc 100644 --- a/doc/man/nvme_passthru_cmd.2 +++ b/doc/man/nvme_passthru_cmd.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_passthru_cmd" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_passthru_cmd" "October 2022" "API Manual" LINUX .SH NAME struct nvme_passthru_cmd \- nvme passthrough command structure .SH SYNOPSIS diff --git a/doc/man/nvme_passthru_cmd64.2 b/doc/man/nvme_passthru_cmd64.2 new file mode 100644 index 0000000..82de2f7 --- /dev/null +++ b/doc/man/nvme_passthru_cmd64.2 @@ -0,0 +1,87 @@ +.TH "libnvme" 9 "struct nvme_passthru_cmd64" "October 2022" "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 index ab63ffd..d99f00f 100644 --- a/doc/man/nvme_path_get_ana_state.2 +++ b/doc/man/nvme_path_get_ana_state.2 @@ -1,4 +1,4 @@ -.TH "nvme_path_get_ana_state" 9 "nvme_path_get_ana_state" "August 2022" "libnvme API manual" LINUX +.TH "nvme_path_get_ana_state" 9 "nvme_path_get_ana_state" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_path_get_ana_state \- ANA state of an nvme_path_t object .SH SYNOPSIS diff --git a/doc/man/nvme_path_get_ctrl.2 b/doc/man/nvme_path_get_ctrl.2 index 1db55a9..d486718 100644 --- a/doc/man/nvme_path_get_ctrl.2 +++ b/doc/man/nvme_path_get_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_path_get_ctrl" 9 "nvme_path_get_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_path_get_ctrl" 9 "nvme_path_get_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_path_get_ctrl \- Parent controller of an nvme_path_t object .SH SYNOPSIS diff --git a/doc/man/nvme_path_get_name.2 b/doc/man/nvme_path_get_name.2 index 9aa970e..4c8f4b4 100644 --- a/doc/man/nvme_path_get_name.2 +++ b/doc/man/nvme_path_get_name.2 @@ -1,4 +1,4 @@ -.TH "nvme_path_get_name" 9 "nvme_path_get_name" "August 2022" "libnvme API manual" LINUX +.TH "nvme_path_get_name" 9 "nvme_path_get_name" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_path_get_name \- sysfs name of an &nvme_path_t object .SH SYNOPSIS diff --git a/doc/man/nvme_path_get_ns.2 b/doc/man/nvme_path_get_ns.2 index 3a91217..fbd9629 100644 --- a/doc/man/nvme_path_get_ns.2 +++ b/doc/man/nvme_path_get_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_path_get_ns" 9 "nvme_path_get_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_path_get_ns" 9 "nvme_path_get_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_path_get_ns \- Parent namespace of an nvme_path_t object .SH SYNOPSIS diff --git a/doc/man/nvme_path_get_sysfs_dir.2 b/doc/man/nvme_path_get_sysfs_dir.2 index 1bdad2a..4c7e01a 100644 --- a/doc/man/nvme_path_get_sysfs_dir.2 +++ b/doc/man/nvme_path_get_sysfs_dir.2 @@ -1,4 +1,4 @@ -.TH "nvme_path_get_sysfs_dir" 9 "nvme_path_get_sysfs_dir" "August 2022" "libnvme API manual" LINUX +.TH "nvme_path_get_sysfs_dir" 9 "nvme_path_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_path_get_sysfs_dir \- sysfs directory of an nvme_path_t object .SH SYNOPSIS diff --git a/doc/man/nvme_paths_filter.2 b/doc/man/nvme_paths_filter.2 index 10b7f86..1825634 100644 --- a/doc/man/nvme_paths_filter.2 +++ b/doc/man/nvme_paths_filter.2 @@ -1,4 +1,4 @@ -.TH "nvme_paths_filter" 9 "nvme_paths_filter" "August 2022" "libnvme API manual" LINUX +.TH "nvme_paths_filter" 9 "nvme_paths_filter" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_paths_filter \- Filter for paths .SH SYNOPSIS diff --git a/doc/man/nvme_persistent_event_entry.2 b/doc/man/nvme_persistent_event_entry.2 index 36effd1..9a7e795 100644 --- a/doc/man/nvme_persistent_event_entry.2 +++ b/doc/man/nvme_persistent_event_entry.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_persistent_event_entry" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_persistent_event_entry" "October 2022" "API Manual" LINUX .SH NAME struct nvme_persistent_event_entry \- Persistent Event .SH SYNOPSIS diff --git a/doc/man/nvme_persistent_event_log.2 b/doc/man/nvme_persistent_event_log.2 index 1bd69af..59d4866 100644 --- a/doc/man/nvme_persistent_event_log.2 +++ b/doc/man/nvme_persistent_event_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_persistent_event_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_persistent_event_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_persistent_event_log \- Persistent Event Log .SH SYNOPSIS diff --git a/doc/man/nvme_persistent_event_types.2 b/doc/man/nvme_persistent_event_types.2 index cad8aac..2b96a9b 100644 --- a/doc/man/nvme_persistent_event_types.2 +++ b/doc/man/nvme_persistent_event_types.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_persistent_event_types" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_persistent_event_types" "October 2022" "API Manual" LINUX .SH NAME enum nvme_persistent_event_types \- Persistent event log events .SH SYNOPSIS diff --git a/doc/man/nvme_pevent_log_action.2 b/doc/man/nvme_pevent_log_action.2 index 7eaebb7..2373336 100644 --- a/doc/man/nvme_pevent_log_action.2 +++ b/doc/man/nvme_pevent_log_action.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_pevent_log_action" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_pevent_log_action" "October 2022" "API Manual" LINUX .SH NAME enum nvme_pevent_log_action \- Persistent Event Log - Action .SH SYNOPSIS diff --git a/doc/man/nvme_plm_config.2 b/doc/man/nvme_plm_config.2 index 7d33cc9..7aad2e1 100644 --- a/doc/man/nvme_plm_config.2 +++ b/doc/man/nvme_plm_config.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_plm_config" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_plm_config" "October 2022" "API Manual" LINUX .SH NAME struct nvme_plm_config \- Predictable Latency Mode - Deterministic Threshold Configuration Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_pmr_size.2 b/doc/man/nvme_pmr_size.2 index 94a95f1..6c35194 100644 --- a/doc/man/nvme_pmr_size.2 +++ b/doc/man/nvme_pmr_size.2 @@ -1,4 +1,4 @@ -.TH "nvme_pmr_size" 9 "nvme_pmr_size" "August 2022" "libnvme API manual" LINUX +.TH "nvme_pmr_size" 9 "nvme_pmr_size" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_pmr_size \- Calculate size of persistent memory region elasticity buffer .SH SYNOPSIS diff --git a/doc/man/nvme_pmr_throughput.2 b/doc/man/nvme_pmr_throughput.2 index 3390e32..807caac 100644 --- a/doc/man/nvme_pmr_throughput.2 +++ b/doc/man/nvme_pmr_throughput.2 @@ -1,4 +1,4 @@ -.TH "nvme_pmr_throughput" 9 "nvme_pmr_throughput" "August 2022" "libnvme API manual" LINUX +.TH "nvme_pmr_throughput" 9 "nvme_pmr_throughput" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_pmr_throughput \- Calculate throughput of persistent memory buffer .SH SYNOPSIS diff --git a/doc/man/nvme_power_on_reset_info_list.2 b/doc/man/nvme_power_on_reset_info_list.2 index 7f67adb..ff6d5eb 100644 --- a/doc/man/nvme_power_on_reset_info_list.2 +++ b/doc/man/nvme_power_on_reset_info_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_power_on_reset_info_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_power_on_reset_info_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_power_on_reset_info_list \- Controller Reset Information .SH SYNOPSIS diff --git a/doc/man/nvme_primary_ctrl_cap.2 b/doc/man/nvme_primary_ctrl_cap.2 index b47dc0d..da6a296 100644 --- a/doc/man/nvme_primary_ctrl_cap.2 +++ b/doc/man/nvme_primary_ctrl_cap.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_primary_ctrl_cap" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_primary_ctrl_cap" "October 2022" "API Manual" LINUX .SH NAME struct nvme_primary_ctrl_cap \- Identify - Controller Capabilities Structure .SH SYNOPSIS diff --git a/doc/man/nvme_psd_flags.2 b/doc/man/nvme_psd_flags.2 index b14551a..aa92507 100644 --- a/doc/man/nvme_psd_flags.2 +++ b/doc/man/nvme_psd_flags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_psd_flags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_psd_flags" "October 2022" "API Manual" LINUX .SH NAME enum nvme_psd_flags \- Possible flag values in nvme power state descriptor .SH SYNOPSIS diff --git a/doc/man/nvme_psd_power_scale.2 b/doc/man/nvme_psd_power_scale.2 index 3548b5c..2b95fc2 100644 --- a/doc/man/nvme_psd_power_scale.2 +++ b/doc/man/nvme_psd_power_scale.2 @@ -1,4 +1,4 @@ -.TH "nvme_psd_power_scale" 9 "nvme_psd_power_scale" "August 2022" "libnvme API manual" LINUX +.TH "nvme_psd_power_scale" 9 "nvme_psd_power_scale" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_psd_power_scale \- power scale occupies the upper 3 bits .SH SYNOPSIS diff --git a/doc/man/nvme_psd_ps.2 b/doc/man/nvme_psd_ps.2 index 66473b7..4efe647 100644 --- a/doc/man/nvme_psd_ps.2 +++ b/doc/man/nvme_psd_ps.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_psd_ps" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_psd_ps" "October 2022" "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 diff --git a/doc/man/nvme_psd_workload.2 b/doc/man/nvme_psd_workload.2 index 61f01d3..82f1566 100644 --- a/doc/man/nvme_psd_workload.2 +++ b/doc/man/nvme_psd_workload.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_psd_workload" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_psd_workload" "October 2022" "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 diff --git a/doc/man/nvme_read.2 b/doc/man/nvme_read.2 index b709003..bfd8bd1 100644 --- a/doc/man/nvme_read.2 +++ b/doc/man/nvme_read.2 @@ -1,4 +1,4 @@ -.TH "nvme_read" 9 "nvme_read" "August 2022" "libnvme API manual" LINUX +.TH "nvme_read" 9 "nvme_read" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_read \- Submit an nvme user read command .SH SYNOPSIS diff --git a/doc/man/nvme_read_config.2 b/doc/man/nvme_read_config.2 index 06b1651..a262cb3 100644 --- a/doc/man/nvme_read_config.2 +++ b/doc/man/nvme_read_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_read_config" 9 "nvme_read_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_read_config" 9 "nvme_read_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_read_config \- Read NVMe JSON configuration file .SH SYNOPSIS diff --git a/doc/man/nvme_refresh_topology.2 b/doc/man/nvme_refresh_topology.2 index 291b788..6d71be0 100644 --- a/doc/man/nvme_refresh_topology.2 +++ b/doc/man/nvme_refresh_topology.2 @@ -1,4 +1,4 @@ -.TH "nvme_refresh_topology" 9 "nvme_refresh_topology" "August 2022" "libnvme API manual" LINUX +.TH "nvme_refresh_topology" 9 "nvme_refresh_topology" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_refresh_topology \- Refresh nvme_root_t object contents .SH SYNOPSIS diff --git a/doc/man/nvme_register_offsets.2 b/doc/man/nvme_register_offsets.2 index 708d743..eb29c1b 100644 --- a/doc/man/nvme_register_offsets.2 +++ b/doc/man/nvme_register_offsets.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_register_offsets" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_register_offsets" "October 2022" "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 diff --git a/doc/man/nvme_registered_ctrl.2 b/doc/man/nvme_registered_ctrl.2 index 3a8f24a..bb0054f 100644 --- a/doc/man/nvme_registered_ctrl.2 +++ b/doc/man/nvme_registered_ctrl.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_registered_ctrl" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_registered_ctrl" "October 2022" "API Manual" LINUX .SH NAME struct nvme_registered_ctrl \- Registered Controller Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_registered_ctrl_ext.2 b/doc/man/nvme_registered_ctrl_ext.2 index 92a591e..12825b4 100644 --- a/doc/man/nvme_registered_ctrl_ext.2 +++ b/doc/man/nvme_registered_ctrl_ext.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_registered_ctrl_ext" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_registered_ctrl_ext" "October 2022" "API Manual" LINUX .SH NAME struct nvme_registered_ctrl_ext \- Registered Controller Extended Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_rescan_ctrl.2 b/doc/man/nvme_rescan_ctrl.2 index a100e3a..f4ab5ec 100644 --- a/doc/man/nvme_rescan_ctrl.2 +++ b/doc/man/nvme_rescan_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_rescan_ctrl" 9 "nvme_rescan_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_rescan_ctrl" 9 "nvme_rescan_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_rescan_ctrl \- Rescan an existing controller .SH SYNOPSIS diff --git a/doc/man/nvme_resv_acquire.2 b/doc/man/nvme_resv_acquire.2 index d31c092..4374637 100644 --- a/doc/man/nvme_resv_acquire.2 +++ b/doc/man/nvme_resv_acquire.2 @@ -1,4 +1,4 @@ -.TH "nvme_resv_acquire" 9 "nvme_resv_acquire" "August 2022" "libnvme API manual" LINUX +.TH "nvme_resv_acquire" 9 "nvme_resv_acquire" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_resv_acquire \- Send an nvme reservation acquire .SH SYNOPSIS diff --git a/doc/man/nvme_resv_cptpl.2 b/doc/man/nvme_resv_cptpl.2 index 1b6c032..30ea56a 100644 --- a/doc/man/nvme_resv_cptpl.2 +++ b/doc/man/nvme_resv_cptpl.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_cptpl" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_cptpl" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_cptpl \- Reservation Register - Change Persist Through Power Loss State .SH SYNOPSIS diff --git a/doc/man/nvme_resv_notification_log.2 b/doc/man/nvme_resv_notification_log.2 index 166ab06..de2b0c3 100644 --- a/doc/man/nvme_resv_notification_log.2 +++ b/doc/man/nvme_resv_notification_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_resv_notification_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_resv_notification_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_resv_notification_log \- Reservation Notification Log .SH SYNOPSIS diff --git a/doc/man/nvme_resv_notify_rnlpt.2 b/doc/man/nvme_resv_notify_rnlpt.2 index 9d0953e..2f3d25b 100644 --- a/doc/man/nvme_resv_notify_rnlpt.2 +++ b/doc/man/nvme_resv_notify_rnlpt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_notify_rnlpt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_notify_rnlpt" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_notify_rnlpt \- Reservation Notification Log - Reservation Notification Log Page Type .SH SYNOPSIS diff --git a/doc/man/nvme_resv_racqa.2 b/doc/man/nvme_resv_racqa.2 index cb86632..94351c0 100644 --- a/doc/man/nvme_resv_racqa.2 +++ b/doc/man/nvme_resv_racqa.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_racqa" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_racqa" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_racqa \- Reservation Acquire - Reservation Acquire Action .SH SYNOPSIS diff --git a/doc/man/nvme_resv_register.2 b/doc/man/nvme_resv_register.2 index ad3da93..1fdfc18 100644 --- a/doc/man/nvme_resv_register.2 +++ b/doc/man/nvme_resv_register.2 @@ -1,4 +1,4 @@ -.TH "nvme_resv_register" 9 "nvme_resv_register" "August 2022" "libnvme API manual" LINUX +.TH "nvme_resv_register" 9 "nvme_resv_register" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_resv_register \- Send an nvme reservation register .SH SYNOPSIS diff --git a/doc/man/nvme_resv_release.2 b/doc/man/nvme_resv_release.2 index 8dd34d1..cb02096 100644 --- a/doc/man/nvme_resv_release.2 +++ b/doc/man/nvme_resv_release.2 @@ -1,4 +1,4 @@ -.TH "nvme_resv_release" 9 "nvme_resv_release" "August 2022" "libnvme API manual" LINUX +.TH "nvme_resv_release" 9 "nvme_resv_release" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_resv_release \- Send an nvme reservation release .SH SYNOPSIS diff --git a/doc/man/nvme_resv_report.2 b/doc/man/nvme_resv_report.2 index a1b9d3b..2760676 100644 --- a/doc/man/nvme_resv_report.2 +++ b/doc/man/nvme_resv_report.2 @@ -1,4 +1,4 @@ -.TH "nvme_resv_report" 9 "nvme_resv_report" "August 2022" "libnvme API manual" LINUX +.TH "nvme_resv_report" 9 "nvme_resv_report" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_resv_report \- Send an nvme reservation report .SH SYNOPSIS diff --git a/doc/man/nvme_resv_rrega.2 b/doc/man/nvme_resv_rrega.2 index dc0d5c4..08996f9 100644 --- a/doc/man/nvme_resv_rrega.2 +++ b/doc/man/nvme_resv_rrega.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_rrega" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_rrega" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_rrega \- Reservation Register - Reservation Register Action .SH SYNOPSIS diff --git a/doc/man/nvme_resv_rrela.2 b/doc/man/nvme_resv_rrela.2 index 75c79e5..7017723 100644 --- a/doc/man/nvme_resv_rrela.2 +++ b/doc/man/nvme_resv_rrela.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_rrela" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_rrela" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_rrela \- Reservation Release - Reservation Release Action .SH SYNOPSIS diff --git a/doc/man/nvme_resv_rtype.2 b/doc/man/nvme_resv_rtype.2 index 2354ceb..0e4d392 100644 --- a/doc/man/nvme_resv_rtype.2 +++ b/doc/man/nvme_resv_rtype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_resv_rtype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_resv_rtype" "October 2022" "API Manual" LINUX .SH NAME enum nvme_resv_rtype \- Reservation Type Encoding .SH SYNOPSIS diff --git a/doc/man/nvme_resv_status.2 b/doc/man/nvme_resv_status.2 index 20ebfec..241452c 100644 --- a/doc/man/nvme_resv_status.2 +++ b/doc/man/nvme_resv_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_resv_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_resv_status" "October 2022" "API Manual" LINUX .SH NAME struct nvme_resv_status \- Reservation Status Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_compln_event.2 b/doc/man/nvme_sanitize_compln_event.2 index 8ac2be6..f3c4251 100644 --- a/doc/man/nvme_sanitize_compln_event.2 +++ b/doc/man/nvme_sanitize_compln_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_sanitize_compln_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_sanitize_compln_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_sanitize_compln_event \- Sanitize Completion Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_log_page.2 b/doc/man/nvme_sanitize_log_page.2 index f04ceb9..c7fdbd7 100644 --- a/doc/man/nvme_sanitize_log_page.2 +++ b/doc/man/nvme_sanitize_log_page.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_sanitize_log_page" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_sanitize_log_page" "October 2022" "API Manual" LINUX .SH NAME struct nvme_sanitize_log_page \- Sanitize Status (Log Identifier 81h) .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_nvm.2 b/doc/man/nvme_sanitize_nvm.2 index f711c8d..823ee49 100644 --- a/doc/man/nvme_sanitize_nvm.2 +++ b/doc/man/nvme_sanitize_nvm.2 @@ -1,4 +1,4 @@ -.TH "nvme_sanitize_nvm" 9 "nvme_sanitize_nvm" "August 2022" "libnvme API manual" LINUX +.TH "nvme_sanitize_nvm" 9 "nvme_sanitize_nvm" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_sanitize_nvm \- Start a sanitize operation .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_sanact.2 b/doc/man/nvme_sanitize_sanact.2 index 3eb397e..668d08f 100644 --- a/doc/man/nvme_sanitize_sanact.2 +++ b/doc/man/nvme_sanitize_sanact.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_sanitize_sanact" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_sanitize_sanact" "October 2022" "API Manual" LINUX .SH NAME enum nvme_sanitize_sanact \- Sanitize Action .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_sstat.2 b/doc/man/nvme_sanitize_sstat.2 index e9e66ea..c2c0781 100644 --- a/doc/man/nvme_sanitize_sstat.2 +++ b/doc/man/nvme_sanitize_sstat.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_sanitize_sstat" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_sanitize_sstat" "October 2022" "API Manual" LINUX .SH NAME enum nvme_sanitize_sstat \- Sanitize Status (SSTAT) .SH SYNOPSIS diff --git a/doc/man/nvme_sanitize_start_event.2 b/doc/man/nvme_sanitize_start_event.2 index a092ca3..6813fee 100644 --- a/doc/man/nvme_sanitize_start_event.2 +++ b/doc/man/nvme_sanitize_start_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_sanitize_start_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_sanitize_start_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_sanitize_start_event \- Sanitize Start Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_scan.2 b/doc/man/nvme_scan.2 index 9821468..e4bb31c 100644 --- a/doc/man/nvme_scan.2 +++ b/doc/man/nvme_scan.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan" 9 "nvme_scan" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan" 9 "nvme_scan" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan \- Scan NVMe topology .SH SYNOPSIS diff --git a/doc/man/nvme_scan_ctrl.2 b/doc/man/nvme_scan_ctrl.2 index 594136b..4d324ed 100644 --- a/doc/man/nvme_scan_ctrl.2 +++ b/doc/man/nvme_scan_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_ctrl" 9 "nvme_scan_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_ctrl" 9 "nvme_scan_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_ctrl \- Scan on a controller .SH SYNOPSIS diff --git a/doc/man/nvme_scan_ctrl_namespace_paths.2 b/doc/man/nvme_scan_ctrl_namespace_paths.2 index 7ab944f..81cd4c0 100644 --- a/doc/man/nvme_scan_ctrl_namespace_paths.2 +++ b/doc/man/nvme_scan_ctrl_namespace_paths.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_ctrl_namespace_paths" 9 "nvme_scan_ctrl_namespace_paths" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_ctrl_namespace_paths" 9 "nvme_scan_ctrl_namespace_paths" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_ctrl_namespace_paths \- Scan for namespace paths in a controller .SH SYNOPSIS diff --git a/doc/man/nvme_scan_ctrl_namespaces.2 b/doc/man/nvme_scan_ctrl_namespaces.2 index ecfe99c..2426c05 100644 --- a/doc/man/nvme_scan_ctrl_namespaces.2 +++ b/doc/man/nvme_scan_ctrl_namespaces.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_ctrl_namespaces" 9 "nvme_scan_ctrl_namespaces" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_ctrl_namespaces" 9 "nvme_scan_ctrl_namespaces" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_ctrl_namespaces \- Scan for namespaces in a controller .SH SYNOPSIS diff --git a/doc/man/nvme_scan_ctrls.2 b/doc/man/nvme_scan_ctrls.2 index 6708e4f..25fd677 100644 --- a/doc/man/nvme_scan_ctrls.2 +++ b/doc/man/nvme_scan_ctrls.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_ctrls" 9 "nvme_scan_ctrls" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_ctrls" 9 "nvme_scan_ctrls" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_ctrls \- Scan for controllers .SH SYNOPSIS diff --git a/doc/man/nvme_scan_namespace.2 b/doc/man/nvme_scan_namespace.2 index f7cfc5f..2e2fb61 100644 --- a/doc/man/nvme_scan_namespace.2 +++ b/doc/man/nvme_scan_namespace.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_namespace" 9 "nvme_scan_namespace" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_namespace" 9 "nvme_scan_namespace" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_namespace \- scan namespace based on sysfs name .SH SYNOPSIS diff --git a/doc/man/nvme_scan_subsystem_namespaces.2 b/doc/man/nvme_scan_subsystem_namespaces.2 index cf45aa0..8d7b208 100644 --- a/doc/man/nvme_scan_subsystem_namespaces.2 +++ b/doc/man/nvme_scan_subsystem_namespaces.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_subsystem_namespaces" 9 "nvme_scan_subsystem_namespaces" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_subsystem_namespaces" 9 "nvme_scan_subsystem_namespaces" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_subsystem_namespaces \- Scan for namespaces in a subsystem .SH SYNOPSIS diff --git a/doc/man/nvme_scan_subsystems.2 b/doc/man/nvme_scan_subsystems.2 index da59ebd..00bc922 100644 --- a/doc/man/nvme_scan_subsystems.2 +++ b/doc/man/nvme_scan_subsystems.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_subsystems" 9 "nvme_scan_subsystems" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_subsystems" 9 "nvme_scan_subsystems" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_subsystems \- Scan for subsystems .SH SYNOPSIS diff --git a/doc/man/nvme_scan_topology.2 b/doc/man/nvme_scan_topology.2 index 7155564..c548138 100644 --- a/doc/man/nvme_scan_topology.2 +++ b/doc/man/nvme_scan_topology.2 @@ -1,4 +1,4 @@ -.TH "nvme_scan_topology" 9 "nvme_scan_topology" "August 2022" "libnvme API manual" LINUX +.TH "nvme_scan_topology" 9 "nvme_scan_topology" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_scan_topology \- Scan NVMe topology and apply filter .SH SYNOPSIS diff --git a/doc/man/nvme_secondary_ctrl.2 b/doc/man/nvme_secondary_ctrl.2 index 2bce294..40c1601 100644 --- a/doc/man/nvme_secondary_ctrl.2 +++ b/doc/man/nvme_secondary_ctrl.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_secondary_ctrl" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_secondary_ctrl" "October 2022" "API Manual" LINUX .SH NAME struct nvme_secondary_ctrl \- Secondary Controller Entry .SH SYNOPSIS diff --git a/doc/man/nvme_secondary_ctrl_list.2 b/doc/man/nvme_secondary_ctrl_list.2 index 2b8b773..42a0510 100644 --- a/doc/man/nvme_secondary_ctrl_list.2 +++ b/doc/man/nvme_secondary_ctrl_list.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_secondary_ctrl_list" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_secondary_ctrl_list" "October 2022" "API Manual" LINUX .SH NAME struct nvme_secondary_ctrl_list \- Secondary Controller List .SH SYNOPSIS diff --git a/doc/man/nvme_security_receive.2 b/doc/man/nvme_security_receive.2 index c10c35e..298238e 100644 --- a/doc/man/nvme_security_receive.2 +++ b/doc/man/nvme_security_receive.2 @@ -1,4 +1,4 @@ -.TH "nvme_security_receive" 9 "nvme_security_receive" "August 2022" "libnvme API manual" LINUX +.TH "nvme_security_receive" 9 "nvme_security_receive" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_security_receive \- Security Receive command .SH SYNOPSIS diff --git a/doc/man/nvme_security_send.2 b/doc/man/nvme_security_send.2 index d3ae84c..fc2fe04 100644 --- a/doc/man/nvme_security_send.2 +++ b/doc/man/nvme_security_send.2 @@ -1,4 +1,4 @@ -.TH "nvme_security_send" 9 "nvme_security_send" "August 2022" "libnvme API manual" LINUX +.TH "nvme_security_send" 9 "nvme_security_send" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_security_send \- Security Send command .SH SYNOPSIS diff --git a/doc/man/nvme_self_test_log.2 b/doc/man/nvme_self_test_log.2 index 215a896..1fa2d79 100644 --- a/doc/man/nvme_self_test_log.2 +++ b/doc/man/nvme_self_test_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_self_test_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_self_test_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_self_test_log \- Device Self-test (Log Identifier 06h) .SH SYNOPSIS diff --git a/doc/man/nvme_set_feature_event.2 b/doc/man/nvme_set_feature_event.2 index 0034017..54eb128 100644 --- a/doc/man/nvme_set_feature_event.2 +++ b/doc/man/nvme_set_feature_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_set_feature_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_set_feature_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_set_feature_event \- Set Feature Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_set_features.2 b/doc/man/nvme_set_features.2 index c23014b..818deaa 100644 --- a/doc/man/nvme_set_features.2 +++ b/doc/man/nvme_set_features.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features" 9 "nvme_set_features" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features" 9 "nvme_set_features" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features \- Set a feature attribute .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_arbitration.2 b/doc/man/nvme_set_features_arbitration.2 index 2f4afa5..0f5179e 100644 --- a/doc/man/nvme_set_features_arbitration.2 +++ b/doc/man/nvme_set_features_arbitration.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_arbitration" 9 "nvme_set_features_arbitration" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_arbitration" 9 "nvme_set_features_arbitration" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_arbitration \- Set arbitration features .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_async_event.2 b/doc/man/nvme_set_features_async_event.2 index 97f9e70..6f3a899 100644 --- a/doc/man/nvme_set_features_async_event.2 +++ b/doc/man/nvme_set_features_async_event.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_async_event" 9 "nvme_set_features_async_event" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_async_event" 9 "nvme_set_features_async_event" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_async_event \- Set asynchronous event feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_auto_pst.2 b/doc/man/nvme_set_features_auto_pst.2 index 99ae9a8..8a8cc91 100644 --- a/doc/man/nvme_set_features_auto_pst.2 +++ b/doc/man/nvme_set_features_auto_pst.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_auto_pst" 9 "nvme_set_features_auto_pst" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_auto_pst" 9 "nvme_set_features_auto_pst" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_auto_pst \- Set autonomous power state feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_data.2 b/doc/man/nvme_set_features_data.2 index ae49988..73c2e69 100644 --- a/doc/man/nvme_set_features_data.2 +++ b/doc/man/nvme_set_features_data.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_data" 9 "nvme_set_features_data" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_data" 9 "nvme_set_features_data" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_data \- Helper function for @nvme_set_features() .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_endurance_evt_cfg.2 b/doc/man/nvme_set_features_endurance_evt_cfg.2 index 0acb6d2..5c4afcc 100644 --- a/doc/man/nvme_set_features_endurance_evt_cfg.2 +++ b/doc/man/nvme_set_features_endurance_evt_cfg.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_endurance_evt_cfg" 9 "nvme_set_features_endurance_evt_cfg" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_endurance_evt_cfg" 9 "nvme_set_features_endurance_evt_cfg" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_endurance_evt_cfg \- Set endurance event config feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_err_recovery.2 b/doc/man/nvme_set_features_err_recovery.2 index a277c96..3f1646d 100644 --- a/doc/man/nvme_set_features_err_recovery.2 +++ b/doc/man/nvme_set_features_err_recovery.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_err_recovery" 9 "nvme_set_features_err_recovery" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_err_recovery" 9 "nvme_set_features_err_recovery" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_err_recovery \- Set error recovery feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_hctm.2 b/doc/man/nvme_set_features_hctm.2 index c1a88c5..422ba43 100644 --- a/doc/man/nvme_set_features_hctm.2 +++ b/doc/man/nvme_set_features_hctm.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_hctm" 9 "nvme_set_features_hctm" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_hctm" 9 "nvme_set_features_hctm" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_hctm \- Set thermal management feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_host_behavior.2 b/doc/man/nvme_set_features_host_behavior.2 index 2f1cd4b..af29adf 100644 --- a/doc/man/nvme_set_features_host_behavior.2 +++ b/doc/man/nvme_set_features_host_behavior.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_host_behavior" 9 "nvme_set_features_host_behavior" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_host_behavior" 9 "nvme_set_features_host_behavior" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_host_behavior \- Set host behavior feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_host_id.2 b/doc/man/nvme_set_features_host_id.2 index 00e4943..1d269b3 100644 --- a/doc/man/nvme_set_features_host_id.2 +++ b/doc/man/nvme_set_features_host_id.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_host_id" 9 "nvme_set_features_host_id" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_host_id" 9 "nvme_set_features_host_id" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_host_id \- Set enable extended host identifers feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_irq_coalesce.2 b/doc/man/nvme_set_features_irq_coalesce.2 index 68a85d1..c55dbe6 100644 --- a/doc/man/nvme_set_features_irq_coalesce.2 +++ b/doc/man/nvme_set_features_irq_coalesce.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_irq_coalesce" 9 "nvme_set_features_irq_coalesce" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_irq_coalesce" 9 "nvme_set_features_irq_coalesce" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_irq_coalesce \- Set IRQ coalesce feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_irq_config.2 b/doc/man/nvme_set_features_irq_config.2 index 1515045..2116c43 100644 --- a/doc/man/nvme_set_features_irq_config.2 +++ b/doc/man/nvme_set_features_irq_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_irq_config" 9 "nvme_set_features_irq_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_irq_config" 9 "nvme_set_features_irq_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_irq_config \- Set IRQ config feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_lba_range.2 b/doc/man/nvme_set_features_lba_range.2 index 7d745ee..f366d15 100644 --- a/doc/man/nvme_set_features_lba_range.2 +++ b/doc/man/nvme_set_features_lba_range.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_lba_range" 9 "nvme_set_features_lba_range" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_lba_range" 9 "nvme_set_features_lba_range" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_lba_range \- Set LBA range feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_lba_sts_interval.2 b/doc/man/nvme_set_features_lba_sts_interval.2 index c799cf9..ca5238c 100644 --- a/doc/man/nvme_set_features_lba_sts_interval.2 +++ b/doc/man/nvme_set_features_lba_sts_interval.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_lba_sts_interval" 9 "nvme_set_features_lba_sts_interval" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_lba_sts_interval" 9 "nvme_set_features_lba_sts_interval" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_lba_sts_interval \- Set LBA status information feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_nopsc.2 b/doc/man/nvme_set_features_nopsc.2 index 8eed539..7837016 100644 --- a/doc/man/nvme_set_features_nopsc.2 +++ b/doc/man/nvme_set_features_nopsc.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_nopsc" 9 "nvme_set_features_nopsc" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_nopsc" 9 "nvme_set_features_nopsc" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_nopsc \- Set non-operational power state feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_plm_config.2 b/doc/man/nvme_set_features_plm_config.2 index 74ab6e1..acc0062 100644 --- a/doc/man/nvme_set_features_plm_config.2 +++ b/doc/man/nvme_set_features_plm_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_plm_config" 9 "nvme_set_features_plm_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_plm_config" 9 "nvme_set_features_plm_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_plm_config \- Set predictable latency feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_plm_window.2 b/doc/man/nvme_set_features_plm_window.2 index e7bf3e5..dc9e537 100644 --- a/doc/man/nvme_set_features_plm_window.2 +++ b/doc/man/nvme_set_features_plm_window.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_plm_window" 9 "nvme_set_features_plm_window" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_plm_window" 9 "nvme_set_features_plm_window" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_plm_window \- Set window select feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_power_mgmt.2 b/doc/man/nvme_set_features_power_mgmt.2 index 0a048e6..7a662b6 100644 --- a/doc/man/nvme_set_features_power_mgmt.2 +++ b/doc/man/nvme_set_features_power_mgmt.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_power_mgmt" 9 "nvme_set_features_power_mgmt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_power_mgmt" 9 "nvme_set_features_power_mgmt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_power_mgmt \- Set power management feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_resv_mask.2 b/doc/man/nvme_set_features_resv_mask.2 index 2b9ebb7..b283bbd 100644 --- a/doc/man/nvme_set_features_resv_mask.2 +++ b/doc/man/nvme_set_features_resv_mask.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_resv_mask" 9 "nvme_set_features_resv_mask" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_resv_mask" 9 "nvme_set_features_resv_mask" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_resv_mask \- Set reservation notification mask feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_resv_persist.2 b/doc/man/nvme_set_features_resv_persist.2 index 2c6eeec..57e9a31 100644 --- a/doc/man/nvme_set_features_resv_persist.2 +++ b/doc/man/nvme_set_features_resv_persist.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_resv_persist" 9 "nvme_set_features_resv_persist" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_resv_persist" 9 "nvme_set_features_resv_persist" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_resv_persist \- Set persist through power loss feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_rrl.2 b/doc/man/nvme_set_features_rrl.2 index ffa2c8e..0b35db1 100644 --- a/doc/man/nvme_set_features_rrl.2 +++ b/doc/man/nvme_set_features_rrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_rrl" 9 "nvme_set_features_rrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_rrl" 9 "nvme_set_features_rrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_rrl \- Set read recovery level feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_sanitize.2 b/doc/man/nvme_set_features_sanitize.2 index f53839e..5e874db 100644 --- a/doc/man/nvme_set_features_sanitize.2 +++ b/doc/man/nvme_set_features_sanitize.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_sanitize" 9 "nvme_set_features_sanitize" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_sanitize" 9 "nvme_set_features_sanitize" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_sanitize \- Set sanitize feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_simple.2 b/doc/man/nvme_set_features_simple.2 index 096b4dd..1d82a39 100644 --- a/doc/man/nvme_set_features_simple.2 +++ b/doc/man/nvme_set_features_simple.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_simple" 9 "nvme_set_features_simple" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_simple" 9 "nvme_set_features_simple" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_simple \- Helper function for @nvme_set_features() .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_sw_progress.2 b/doc/man/nvme_set_features_sw_progress.2 index b9afa31..0350bfd 100644 --- a/doc/man/nvme_set_features_sw_progress.2 +++ b/doc/man/nvme_set_features_sw_progress.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_sw_progress" 9 "nvme_set_features_sw_progress" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_sw_progress" 9 "nvme_set_features_sw_progress" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_sw_progress \- Set pre-boot software load count feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_temp_thresh.2 b/doc/man/nvme_set_features_temp_thresh.2 index bcea1aa..b04ccbd 100644 --- a/doc/man/nvme_set_features_temp_thresh.2 +++ b/doc/man/nvme_set_features_temp_thresh.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_temp_thresh" 9 "nvme_set_features_temp_thresh" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_temp_thresh" 9 "nvme_set_features_temp_thresh" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_temp_thresh \- Set temperature threshold feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_timestamp.2 b/doc/man/nvme_set_features_timestamp.2 index 682d8b9..3c572cf 100644 --- a/doc/man/nvme_set_features_timestamp.2 +++ b/doc/man/nvme_set_features_timestamp.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_timestamp" 9 "nvme_set_features_timestamp" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_timestamp" 9 "nvme_set_features_timestamp" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_timestamp \- Set timestamp feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_volatile_wc.2 b/doc/man/nvme_set_features_volatile_wc.2 index 4792972..ca05ebc 100644 --- a/doc/man/nvme_set_features_volatile_wc.2 +++ b/doc/man/nvme_set_features_volatile_wc.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_volatile_wc" 9 "nvme_set_features_volatile_wc" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_volatile_wc" 9 "nvme_set_features_volatile_wc" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_volatile_wc \- Set volatile write cache feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_write_atomic.2 b/doc/man/nvme_set_features_write_atomic.2 index 0cd8f68..bf7d80f 100644 --- a/doc/man/nvme_set_features_write_atomic.2 +++ b/doc/man/nvme_set_features_write_atomic.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_write_atomic" 9 "nvme_set_features_write_atomic" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_write_atomic" 9 "nvme_set_features_write_atomic" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_write_atomic \- Set write atomic feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_features_write_protect.2 b/doc/man/nvme_set_features_write_protect.2 index 42fb1c3..3106cd7 100644 --- a/doc/man/nvme_set_features_write_protect.2 +++ b/doc/man/nvme_set_features_write_protect.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_features_write_protect" 9 "nvme_set_features_write_protect" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_features_write_protect" 9 "nvme_set_features_write_protect" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_features_write_protect \- Set write protect feature .SH SYNOPSIS diff --git a/doc/man/nvme_set_property.2 b/doc/man/nvme_set_property.2 index 2409097..e15b573 100644 --- a/doc/man/nvme_set_property.2 +++ b/doc/man/nvme_set_property.2 @@ -1,4 +1,4 @@ -.TH "nvme_set_property" 9 "nvme_set_property" "August 2022" "libnvme API manual" LINUX +.TH "nvme_set_property" 9 "nvme_set_property" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_set_property \- Set controller property .SH SYNOPSIS diff --git a/doc/man/nvme_smart_crit.2 b/doc/man/nvme_smart_crit.2 index f32f42e..5dd636c 100644 --- a/doc/man/nvme_smart_crit.2 +++ b/doc/man/nvme_smart_crit.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_smart_crit" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_smart_crit" "October 2022" "API Manual" LINUX .SH NAME enum nvme_smart_crit \- Critical Warning .SH SYNOPSIS diff --git a/doc/man/nvme_smart_egcw.2 b/doc/man/nvme_smart_egcw.2 index 91c8ff0..2f19104 100644 --- a/doc/man/nvme_smart_egcw.2 +++ b/doc/man/nvme_smart_egcw.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_smart_egcw" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_smart_egcw" "October 2022" "API Manual" LINUX .SH NAME enum nvme_smart_egcw \- Endurance Group Critical Warning Summary .SH SYNOPSIS diff --git a/doc/man/nvme_smart_log.2 b/doc/man/nvme_smart_log.2 index 27d8c42..32acefd 100644 --- a/doc/man/nvme_smart_log.2 +++ b/doc/man/nvme_smart_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_smart_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_smart_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_smart_log \- SMART / Health Information Log (Log Identifier 02h) .SH SYNOPSIS diff --git a/doc/man/nvme_st_code.2 b/doc/man/nvme_st_code.2 index 083649e..0bff08d 100644 --- a/doc/man/nvme_st_code.2 +++ b/doc/man/nvme_st_code.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_st_code" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_st_code" "October 2022" "API Manual" LINUX .SH NAME enum nvme_st_code \- Self-test Code value .SH SYNOPSIS diff --git a/doc/man/nvme_st_curr_op.2 b/doc/man/nvme_st_curr_op.2 index 7b6f907..fc19830 100644 --- a/doc/man/nvme_st_curr_op.2 +++ b/doc/man/nvme_st_curr_op.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_st_curr_op" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_st_curr_op" "October 2022" "API Manual" LINUX .SH NAME enum nvme_st_curr_op \- Current Device Self-Test Operation .SH SYNOPSIS diff --git a/doc/man/nvme_st_result.2 b/doc/man/nvme_st_result.2 index 3ebcace..e4dca2b 100644 --- a/doc/man/nvme_st_result.2 +++ b/doc/man/nvme_st_result.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_st_result" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_st_result" "October 2022" "API Manual" LINUX .SH NAME struct nvme_st_result \- Self-test Result .SH SYNOPSIS diff --git a/doc/man/nvme_st_valid_diag_info.2 b/doc/man/nvme_st_valid_diag_info.2 index cbc9e08..8fc5b96 100644 --- a/doc/man/nvme_st_valid_diag_info.2 +++ b/doc/man/nvme_st_valid_diag_info.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_st_valid_diag_info" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_st_valid_diag_info" "October 2022" "API Manual" LINUX .SH NAME enum nvme_st_valid_diag_info \- Valid Diagnostic Information .SH SYNOPSIS diff --git a/doc/man/nvme_status_code.2 b/doc/man/nvme_status_code.2 index cca0c5a..84e6b7b 100644 --- a/doc/man/nvme_status_code.2 +++ b/doc/man/nvme_status_code.2 @@ -1,4 +1,4 @@ -.TH "nvme_status_code" 9 "nvme_status_code" "August 2022" "libnvme API manual" LINUX +.TH "nvme_status_code" 9 "nvme_status_code" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_status_code \- Returns the NVMe Status Code .SH SYNOPSIS diff --git a/doc/man/nvme_status_code_type.2 b/doc/man/nvme_status_code_type.2 index b3c97b8..eacecb2 100644 --- a/doc/man/nvme_status_code_type.2 +++ b/doc/man/nvme_status_code_type.2 @@ -1,4 +1,4 @@ -.TH "nvme_status_code_type" 9 "nvme_status_code_type" "August 2022" "libnvme API manual" LINUX +.TH "nvme_status_code_type" 9 "nvme_status_code_type" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_status_code_type \- Returns the NVMe Status Code Type .SH SYNOPSIS diff --git a/doc/man/nvme_status_equals.2 b/doc/man/nvme_status_equals.2 new file mode 100644 index 0000000..55c3def --- /dev/null +++ b/doc/man/nvme_status_equals.2 @@ -0,0 +1,17 @@ +.TH "nvme_status_equals" 9 "nvme_status_equals" "October 2022" "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 index ad35862..e3234fc 100644 --- a/doc/man/nvme_status_field.2 +++ b/doc/man/nvme_status_field.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_status_field" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_status_field" "October 2022" "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 diff --git a/doc/man/nvme_status_get_type.2 b/doc/man/nvme_status_get_type.2 new file mode 100644 index 0000000..addbea4 --- /dev/null +++ b/doc/man/nvme_status_get_type.2 @@ -0,0 +1,11 @@ +.TH "nvme_status_get_type" 9 "nvme_status_get_type" "October 2022" "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..fbef5fa --- /dev/null +++ b/doc/man/nvme_status_get_value.2 @@ -0,0 +1,12 @@ +.TH "nvme_status_get_value" 9 "nvme_status_get_value" "October 2022" "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 index 235dc98..df79a39 100644 --- a/doc/man/nvme_status_result.2 +++ b/doc/man/nvme_status_result.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_status_result" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_status_result" "October 2022" "API Manual" LINUX .SH NAME enum nvme_status_result \- Result of the device self-test operation .SH SYNOPSIS diff --git a/doc/man/nvme_status_to_errno.2 b/doc/man/nvme_status_to_errno.2 index 5c16c11..c047ed6 100644 --- a/doc/man/nvme_status_to_errno.2 +++ b/doc/man/nvme_status_to_errno.2 @@ -1,4 +1,4 @@ -.TH "nvme_status_to_errno" 9 "nvme_status_to_errno" "August 2022" "libnvme API manual" LINUX +.TH "nvme_status_to_errno" 9 "nvme_status_to_errno" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_status_to_errno \- Converts nvme return status to errno .SH SYNOPSIS diff --git a/doc/man/nvme_status_to_string.2 b/doc/man/nvme_status_to_string.2 index f192cc7..614224d 100644 --- a/doc/man/nvme_status_to_string.2 +++ b/doc/man/nvme_status_to_string.2 @@ -1,4 +1,4 @@ -.TH "nvme_status_to_string" 9 "nvme_status_to_string" "August 2022" "libnvme API manual" LINUX +.TH "nvme_status_to_string" 9 "nvme_status_to_string" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_status_to_string \- Returns string describing nvme return status. .SH SYNOPSIS diff --git a/doc/man/nvme_status_type.2 b/doc/man/nvme_status_type.2 new file mode 100644 index 0000000..60056ee --- /dev/null +++ b/doc/man/nvme_status_type.2 @@ -0,0 +1,40 @@ +.TH "libnvme" 9 "enum nvme_status_type" "October 2022" "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 index 02c5c66..3313701 100644 --- a/doc/man/nvme_streams_directive_params.2 +++ b/doc/man/nvme_streams_directive_params.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_streams_directive_params" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_streams_directive_params" "October 2022" "API Manual" LINUX .SH NAME struct nvme_streams_directive_params \- Streams Directive - Return Parameters Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_streams_directive_status.2 b/doc/man/nvme_streams_directive_status.2 index 13a9a05..df9c96d 100644 --- a/doc/man/nvme_streams_directive_status.2 +++ b/doc/man/nvme_streams_directive_status.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_streams_directive_status" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_streams_directive_status" "October 2022" "API Manual" LINUX .SH NAME struct nvme_streams_directive_status \- Streams Directive - Get Status Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_submit_admin_passthru.2 b/doc/man/nvme_submit_admin_passthru.2 index c71ab37..f507a8c 100644 --- a/doc/man/nvme_submit_admin_passthru.2 +++ b/doc/man/nvme_submit_admin_passthru.2 @@ -1,4 +1,4 @@ -.TH "nvme_submit_admin_passthru" 9 "nvme_submit_admin_passthru" "August 2022" "libnvme API manual" LINUX +.TH "nvme_submit_admin_passthru" 9 "nvme_submit_admin_passthru" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_submit_admin_passthru \- Submit an nvme passthrough admin command .SH SYNOPSIS diff --git a/doc/man/nvme_submit_admin_passthru64.2 b/doc/man/nvme_submit_admin_passthru64.2 new file mode 100644 index 0000000..730eef3 --- /dev/null +++ b/doc/man/nvme_submit_admin_passthru64.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_admin_passthru64" 9 "nvme_submit_admin_passthru64" "October 2022" "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 index db6107c..bacbe3e 100644 --- a/doc/man/nvme_submit_io_passthru.2 +++ b/doc/man/nvme_submit_io_passthru.2 @@ -1,4 +1,4 @@ -.TH "nvme_submit_io_passthru" 9 "nvme_submit_io_passthru" "August 2022" "libnvme API manual" LINUX +.TH "nvme_submit_io_passthru" 9 "nvme_submit_io_passthru" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_submit_io_passthru \- Submit an nvme passthrough command .SH SYNOPSIS diff --git a/doc/man/nvme_submit_io_passthru64.2 b/doc/man/nvme_submit_io_passthru64.2 new file mode 100644 index 0000000..3d77f57 --- /dev/null +++ b/doc/man/nvme_submit_io_passthru64.2 @@ -0,0 +1,20 @@ +.TH "nvme_submit_io_passthru64" 9 "nvme_submit_io_passthru64" "October 2022" "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 index 2b65b0f..7932258 100644 --- a/doc/man/nvme_subsys_filter.2 +++ b/doc/man/nvme_subsys_filter.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsys_filter" 9 "nvme_subsys_filter" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsys_filter" 9 "nvme_subsys_filter" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsys_filter \- Filter for subsystems .SH SYNOPSIS diff --git a/doc/man/nvme_subsys_type.2 b/doc/man/nvme_subsys_type.2 index 191994c..dcfe0c8 100644 --- a/doc/man/nvme_subsys_type.2 +++ b/doc/man/nvme_subsys_type.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_subsys_type" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_subsys_type" "October 2022" "API Manual" LINUX .SH NAME enum nvme_subsys_type \- Type of the NVM subsystem. .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_first_ctrl.2 b/doc/man/nvme_subsystem_first_ctrl.2 index 5b252af..d87bb62 100644 --- a/doc/man/nvme_subsystem_first_ctrl.2 +++ b/doc/man/nvme_subsystem_first_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_first_ctrl" 9 "nvme_subsystem_first_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_first_ctrl" 9 "nvme_subsystem_first_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_first_ctrl \- First ctrl iterator .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_first_ns.2 b/doc/man/nvme_subsystem_first_ns.2 index f85fa5b..ac30d57 100644 --- a/doc/man/nvme_subsystem_first_ns.2 +++ b/doc/man/nvme_subsystem_first_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_first_ns" 9 "nvme_subsystem_first_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_first_ns" 9 "nvme_subsystem_first_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_first_ns \- Start namespace iterator .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_for_each_ctrl.2 b/doc/man/nvme_subsystem_for_each_ctrl.2 index b4d6d52..7b695c9 100644 --- a/doc/man/nvme_subsystem_for_each_ctrl.2 +++ b/doc/man/nvme_subsystem_for_each_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_for_each_ctrl" 9 "nvme_subsystem_for_each_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_for_each_ctrl" 9 "nvme_subsystem_for_each_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_for_each_ctrl \- Traverse controllers .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_for_each_ctrl_safe.2 b/doc/man/nvme_subsystem_for_each_ctrl_safe.2 index da1b352..4bfde84 100644 --- a/doc/man/nvme_subsystem_for_each_ctrl_safe.2 +++ b/doc/man/nvme_subsystem_for_each_ctrl_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_for_each_ctrl_safe" 9 "nvme_subsystem_for_each_ctrl_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_for_each_ctrl_safe" 9 "nvme_subsystem_for_each_ctrl_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_for_each_ctrl_safe \- Traverse controllers .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_for_each_ns.2 b/doc/man/nvme_subsystem_for_each_ns.2 index e200507..f5d210f 100644 --- a/doc/man/nvme_subsystem_for_each_ns.2 +++ b/doc/man/nvme_subsystem_for_each_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_for_each_ns" 9 "nvme_subsystem_for_each_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_for_each_ns" 9 "nvme_subsystem_for_each_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_for_each_ns \- Traverse namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_for_each_ns_safe.2 b/doc/man/nvme_subsystem_for_each_ns_safe.2 index fbba908..19e2480 100644 --- a/doc/man/nvme_subsystem_for_each_ns_safe.2 +++ b/doc/man/nvme_subsystem_for_each_ns_safe.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_for_each_ns_safe" 9 "nvme_subsystem_for_each_ns_safe" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_for_each_ns_safe" 9 "nvme_subsystem_for_each_ns_safe" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_for_each_ns_safe \- Traverse namespaces .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_get_host.2 b/doc/man/nvme_subsystem_get_host.2 index 503f149..79e7e95 100644 --- a/doc/man/nvme_subsystem_get_host.2 +++ b/doc/man/nvme_subsystem_get_host.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_get_host" 9 "nvme_subsystem_get_host" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_get_host" 9 "nvme_subsystem_get_host" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_get_host \- Returns nvme_host_t object .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_get_name.2 b/doc/man/nvme_subsystem_get_name.2 index 4bbe8bb..b0138e8 100644 --- a/doc/man/nvme_subsystem_get_name.2 +++ b/doc/man/nvme_subsystem_get_name.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_get_name" 9 "nvme_subsystem_get_name" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_get_name" 9 "nvme_subsystem_get_name" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_get_name \- sysfs name of an nvme_subsystem_t object .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_get_nqn.2 b/doc/man/nvme_subsystem_get_nqn.2 index a8390ad..e3cd0ec 100644 --- a/doc/man/nvme_subsystem_get_nqn.2 +++ b/doc/man/nvme_subsystem_get_nqn.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_get_nqn" 9 "nvme_subsystem_get_nqn" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_get_nqn" 9 "nvme_subsystem_get_nqn" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_get_nqn \- Retrieve NQN from subsystem .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_get_sysfs_dir.2 b/doc/man/nvme_subsystem_get_sysfs_dir.2 index 001ff2f..9e28b43 100644 --- a/doc/man/nvme_subsystem_get_sysfs_dir.2 +++ b/doc/man/nvme_subsystem_get_sysfs_dir.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_get_sysfs_dir" 9 "nvme_subsystem_get_sysfs_dir" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_get_sysfs_dir" 9 "nvme_subsystem_get_sysfs_dir" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_get_sysfs_dir \- sysfs directory of an nvme_subsystem_t object .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_get_type.2 b/doc/man/nvme_subsystem_get_type.2 index f1b76a6..766819f 100644 --- a/doc/man/nvme_subsystem_get_type.2 +++ b/doc/man/nvme_subsystem_get_type.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_get_type" 9 "nvme_subsystem_get_type" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_get_type" 9 "nvme_subsystem_get_type" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_get_type \- Returns the type of a subsystem .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_lookup_namespace.2 b/doc/man/nvme_subsystem_lookup_namespace.2 index 957eda7..ad850ba 100644 --- a/doc/man/nvme_subsystem_lookup_namespace.2 +++ b/doc/man/nvme_subsystem_lookup_namespace.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_lookup_namespace" 9 "nvme_subsystem_lookup_namespace" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_lookup_namespace" 9 "nvme_subsystem_lookup_namespace" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_lookup_namespace \- lookup namespace by NSID .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_next_ctrl.2 b/doc/man/nvme_subsystem_next_ctrl.2 index 009fbfd..8a2d2dc 100644 --- a/doc/man/nvme_subsystem_next_ctrl.2 +++ b/doc/man/nvme_subsystem_next_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_next_ctrl" 9 "nvme_subsystem_next_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_next_ctrl" 9 "nvme_subsystem_next_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_next_ctrl \- Next ctrl iterator .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_next_ns.2 b/doc/man/nvme_subsystem_next_ns.2 index 3ba119d..9ac9d14 100644 --- a/doc/man/nvme_subsystem_next_ns.2 +++ b/doc/man/nvme_subsystem_next_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_next_ns" 9 "nvme_subsystem_next_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_next_ns" 9 "nvme_subsystem_next_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_next_ns \- Next namespace iterator .SH SYNOPSIS diff --git a/doc/man/nvme_subsystem_reset.2 b/doc/man/nvme_subsystem_reset.2 index 2ba7245..5e5fb99 100644 --- a/doc/man/nvme_subsystem_reset.2 +++ b/doc/man/nvme_subsystem_reset.2 @@ -1,4 +1,4 @@ -.TH "nvme_subsystem_reset" 9 "nvme_subsystem_reset" "August 2022" "libnvme API manual" LINUX +.TH "nvme_subsystem_reset" 9 "nvme_subsystem_reset" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_subsystem_reset \- Initiate a subsystem reset .SH SYNOPSIS diff --git a/doc/man/nvme_supported_cap_config_list_log.2 b/doc/man/nvme_supported_cap_config_list_log.2 index 8734c4a..2f904db 100644 --- a/doc/man/nvme_supported_cap_config_list_log.2 +++ b/doc/man/nvme_supported_cap_config_list_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_supported_cap_config_list_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_supported_cap_config_list_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_supported_cap_config_list_log \- Supported Capacity Configuration list log page .SH SYNOPSIS diff --git a/doc/man/nvme_supported_log_pages.2 b/doc/man/nvme_supported_log_pages.2 index 1c70a23..1e083d5 100644 --- a/doc/man/nvme_supported_log_pages.2 +++ b/doc/man/nvme_supported_log_pages.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_supported_log_pages" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_supported_log_pages" "October 2022" "API Manual" LINUX .SH NAME struct nvme_supported_log_pages \- Supported Log Pages - Log .SH SYNOPSIS diff --git a/doc/man/nvme_telemetry_da.2 b/doc/man/nvme_telemetry_da.2 index 8249f3a..447f110 100644 --- a/doc/man/nvme_telemetry_da.2 +++ b/doc/man/nvme_telemetry_da.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_telemetry_da" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_telemetry_da" "October 2022" "API Manual" LINUX .SH NAME enum nvme_telemetry_da \- Telemetry Log Data Area .SH SYNOPSIS diff --git a/doc/man/nvme_telemetry_log.2 b/doc/man/nvme_telemetry_log.2 index 73c8991..56e47ca 100644 --- a/doc/man/nvme_telemetry_log.2 +++ b/doc/man/nvme_telemetry_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_telemetry_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_telemetry_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_telemetry_log \- Retrieve internal data specific to the manufacturer. .SH SYNOPSIS diff --git a/doc/man/nvme_thermal_exc_event.2 b/doc/man/nvme_thermal_exc_event.2 index 99d25d1..69b9b08 100644 --- a/doc/man/nvme_thermal_exc_event.2 +++ b/doc/man/nvme_thermal_exc_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_thermal_exc_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_thermal_exc_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_thermal_exc_event \- Thermal Excursion Event Data .SH SYNOPSIS diff --git a/doc/man/nvme_time_stamp_change_event.2 b/doc/man/nvme_time_stamp_change_event.2 index 7798a4b..648ab3c 100644 --- a/doc/man/nvme_time_stamp_change_event.2 +++ b/doc/man/nvme_time_stamp_change_event.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_time_stamp_change_event" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_time_stamp_change_event" "October 2022" "API Manual" LINUX .SH NAME struct nvme_time_stamp_change_event \- Timestamp Change Event .SH SYNOPSIS diff --git a/doc/man/nvme_timestamp.2 b/doc/man/nvme_timestamp.2 index 7cd6590..6811763 100644 --- a/doc/man/nvme_timestamp.2 +++ b/doc/man/nvme_timestamp.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_timestamp" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_timestamp" "October 2022" "API Manual" LINUX .SH NAME struct nvme_timestamp \- Timestamp - Data Structure for Get Features .SH SYNOPSIS diff --git a/doc/man/nvme_unlink_ctrl.2 b/doc/man/nvme_unlink_ctrl.2 index c7bcc5c..444fac2 100644 --- a/doc/man/nvme_unlink_ctrl.2 +++ b/doc/man/nvme_unlink_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_unlink_ctrl" 9 "nvme_unlink_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_unlink_ctrl" 9 "nvme_unlink_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_unlink_ctrl \- Unlink controller .SH SYNOPSIS diff --git a/doc/man/nvme_update_config.2 b/doc/man/nvme_update_config.2 index 25d9968..fe7614a 100644 --- a/doc/man/nvme_update_config.2 +++ b/doc/man/nvme_update_config.2 @@ -1,4 +1,4 @@ -.TH "nvme_update_config" 9 "nvme_update_config" "August 2022" "libnvme API manual" LINUX +.TH "nvme_update_config" 9 "nvme_update_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_update_config \- Update JSON configuration .SH SYNOPSIS diff --git a/doc/man/nvme_uring_cmd.2 b/doc/man/nvme_uring_cmd.2 index f3ca0bc..76c70a2 100644 --- a/doc/man/nvme_uring_cmd.2 +++ b/doc/man/nvme_uring_cmd.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_uring_cmd" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_uring_cmd" "October 2022" "API Manual" LINUX .SH NAME struct nvme_uring_cmd \- nvme uring command structure .SH SYNOPSIS diff --git a/doc/man/nvme_verify.2 b/doc/man/nvme_verify.2 index 29f0f43..3bab758 100644 --- a/doc/man/nvme_verify.2 +++ b/doc/man/nvme_verify.2 @@ -1,4 +1,4 @@ -.TH "nvme_verify" 9 "nvme_verify" "August 2022" "libnvme API manual" LINUX +.TH "nvme_verify" 9 "nvme_verify" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_verify \- Send an nvme verify command .SH SYNOPSIS diff --git a/doc/man/nvme_version.2 b/doc/man/nvme_version.2 index 7a91aba..dcf837f 100644 --- a/doc/man/nvme_version.2 +++ b/doc/man/nvme_version.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_version" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_version" "October 2022" "API Manual" LINUX .SH NAME enum nvme_version \- Selector for version to be returned by @nvme_get_version .SH SYNOPSIS diff --git a/doc/man/nvme_virt_mgmt_act.2 b/doc/man/nvme_virt_mgmt_act.2 index 407a98e..0fe6da0 100644 --- a/doc/man/nvme_virt_mgmt_act.2 +++ b/doc/man/nvme_virt_mgmt_act.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_virt_mgmt_act" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_virt_mgmt_act" "October 2022" "API Manual" LINUX .SH NAME enum nvme_virt_mgmt_act \- Virtualization Management - Action .SH SYNOPSIS diff --git a/doc/man/nvme_virt_mgmt_rt.2 b/doc/man/nvme_virt_mgmt_rt.2 index 4200bfb..31c0996 100644 --- a/doc/man/nvme_virt_mgmt_rt.2 +++ b/doc/man/nvme_virt_mgmt_rt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_virt_mgmt_rt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_virt_mgmt_rt" "October 2022" "API Manual" LINUX .SH NAME enum nvme_virt_mgmt_rt \- Virtualization Management - Resource Type .SH SYNOPSIS diff --git a/doc/man/nvme_virtual_mgmt.2 b/doc/man/nvme_virtual_mgmt.2 index c69b40e..ccce5d0 100644 --- a/doc/man/nvme_virtual_mgmt.2 +++ b/doc/man/nvme_virtual_mgmt.2 @@ -1,4 +1,4 @@ -.TH "nvme_virtual_mgmt" 9 "nvme_virtual_mgmt" "August 2022" "libnvme API manual" LINUX +.TH "nvme_virtual_mgmt" 9 "nvme_virtual_mgmt" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_virtual_mgmt \- Virtualization resource management .SH SYNOPSIS diff --git a/doc/man/nvme_write.2 b/doc/man/nvme_write.2 index 19d27b7..82b7f46 100644 --- a/doc/man/nvme_write.2 +++ b/doc/man/nvme_write.2 @@ -1,4 +1,4 @@ -.TH "nvme_write" 9 "nvme_write" "August 2022" "libnvme API manual" LINUX +.TH "nvme_write" 9 "nvme_write" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_write \- Submit an nvme user write command .SH SYNOPSIS diff --git a/doc/man/nvme_write_uncorrectable.2 b/doc/man/nvme_write_uncorrectable.2 index aadb4c1..2c4ff91 100644 --- a/doc/man/nvme_write_uncorrectable.2 +++ b/doc/man/nvme_write_uncorrectable.2 @@ -1,4 +1,4 @@ -.TH "nvme_write_uncorrectable" 9 "nvme_write_uncorrectable" "August 2022" "libnvme API manual" LINUX +.TH "nvme_write_uncorrectable" 9 "nvme_write_uncorrectable" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_write_uncorrectable \- Submit an nvme write uncorrectable command .SH SYNOPSIS diff --git a/doc/man/nvme_write_zeros.2 b/doc/man/nvme_write_zeros.2 index dc1c4db..0a8a31e 100644 --- a/doc/man/nvme_write_zeros.2 +++ b/doc/man/nvme_write_zeros.2 @@ -1,4 +1,4 @@ -.TH "nvme_write_zeros" 9 "nvme_write_zeros" "August 2022" "libnvme API manual" LINUX +.TH "nvme_write_zeros" 9 "nvme_write_zeros" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_write_zeros \- Submit an nvme write zeroes command .SH SYNOPSIS diff --git a/doc/man/nvme_zns_append.2 b/doc/man/nvme_zns_append.2 index 21b907f..8c053aa 100644 --- a/doc/man/nvme_zns_append.2 +++ b/doc/man/nvme_zns_append.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_append" 9 "nvme_zns_append" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_append" 9 "nvme_zns_append" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_append \- Append data to a zone .SH SYNOPSIS diff --git a/doc/man/nvme_zns_changed_zone_log.2 b/doc/man/nvme_zns_changed_zone_log.2 index 4a7d395..532d6c8 100644 --- a/doc/man/nvme_zns_changed_zone_log.2 +++ b/doc/man/nvme_zns_changed_zone_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zns_changed_zone_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zns_changed_zone_log" "October 2022" "API Manual" LINUX .SH NAME struct nvme_zns_changed_zone_log \- ZNS Changed Zone List log .SH SYNOPSIS diff --git a/doc/man/nvme_zns_desc.2 b/doc/man/nvme_zns_desc.2 index 8f3dc14..61c6faf 100644 --- a/doc/man/nvme_zns_desc.2 +++ b/doc/man/nvme_zns_desc.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zns_desc" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zns_desc" "October 2022" "API Manual" LINUX .SH NAME struct nvme_zns_desc \- Zone Descriptor Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_zns_id_ctrl.2 b/doc/man/nvme_zns_id_ctrl.2 index 66e03b9..9435814 100644 --- a/doc/man/nvme_zns_id_ctrl.2 +++ b/doc/man/nvme_zns_id_ctrl.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zns_id_ctrl" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zns_id_ctrl" "October 2022" "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 diff --git a/doc/man/nvme_zns_id_ns.2 b/doc/man/nvme_zns_id_ns.2 index 3e21cc6..ca31bcf 100644 --- a/doc/man/nvme_zns_id_ns.2 +++ b/doc/man/nvme_zns_id_ns.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zns_id_ns" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zns_id_ns" "October 2022" "API Manual" LINUX .SH NAME struct nvme_zns_id_ns \- Zoned Namespace Command Set Specific Identify Namespace Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_zns_identify_ctrl.2 b/doc/man/nvme_zns_identify_ctrl.2 index b68cb5e..b7aa908 100644 --- a/doc/man/nvme_zns_identify_ctrl.2 +++ b/doc/man/nvme_zns_identify_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_identify_ctrl" 9 "nvme_zns_identify_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_identify_ctrl" 9 "nvme_zns_identify_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_identify_ctrl \- ZNS identify controller data .SH SYNOPSIS diff --git a/doc/man/nvme_zns_identify_ns.2 b/doc/man/nvme_zns_identify_ns.2 index 8caa6e9..b021df3 100644 --- a/doc/man/nvme_zns_identify_ns.2 +++ b/doc/man/nvme_zns_identify_ns.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_identify_ns" 9 "nvme_zns_identify_ns" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_identify_ns" 9 "nvme_zns_identify_ns" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_identify_ns \- ZNS identify namespace data .SH SYNOPSIS diff --git a/doc/man/nvme_zns_lbafe.2 b/doc/man/nvme_zns_lbafe.2 index fb6352f..fe25273 100644 --- a/doc/man/nvme_zns_lbafe.2 +++ b/doc/man/nvme_zns_lbafe.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zns_lbafe" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zns_lbafe" "October 2022" "API Manual" LINUX .SH NAME struct nvme_zns_lbafe \- LBA Format Extension Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_zns_mgmt_recv.2 b/doc/man/nvme_zns_mgmt_recv.2 index 9e4ac1f..bd0caf6 100644 --- a/doc/man/nvme_zns_mgmt_recv.2 +++ b/doc/man/nvme_zns_mgmt_recv.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_mgmt_recv" 9 "nvme_zns_mgmt_recv" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_mgmt_recv" 9 "nvme_zns_mgmt_recv" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_mgmt_recv \- ZNS management receive command .SH SYNOPSIS diff --git a/doc/man/nvme_zns_mgmt_send.2 b/doc/man/nvme_zns_mgmt_send.2 index 597f138..017f44f 100644 --- a/doc/man/nvme_zns_mgmt_send.2 +++ b/doc/man/nvme_zns_mgmt_send.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_mgmt_send" 9 "nvme_zns_mgmt_send" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_mgmt_send" 9 "nvme_zns_mgmt_send" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_mgmt_send \- ZNS management send command .SH SYNOPSIS diff --git a/doc/man/nvme_zns_recv_action.2 b/doc/man/nvme_zns_recv_action.2 index 499ea14..b6f249b 100644 --- a/doc/man/nvme_zns_recv_action.2 +++ b/doc/man/nvme_zns_recv_action.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_recv_action" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_recv_action" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_recv_action \- Zone Management Receive - Zone Receive Action Specific Features .SH SYNOPSIS diff --git a/doc/man/nvme_zns_report_options.2 b/doc/man/nvme_zns_report_options.2 index 3ba8f37..1396181 100644 --- a/doc/man/nvme_zns_report_options.2 +++ b/doc/man/nvme_zns_report_options.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_report_options" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_report_options" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_report_options \- Zone Management Receive - Zone Receive Action Specific Field .SH SYNOPSIS diff --git a/doc/man/nvme_zns_report_zones.2 b/doc/man/nvme_zns_report_zones.2 index 430c597..51f8cd2 100644 --- a/doc/man/nvme_zns_report_zones.2 +++ b/doc/man/nvme_zns_report_zones.2 @@ -1,4 +1,4 @@ -.TH "nvme_zns_report_zones" 9 "nvme_zns_report_zones" "August 2022" "libnvme API manual" LINUX +.TH "nvme_zns_report_zones" 9 "nvme_zns_report_zones" "October 2022" "libnvme API manual" LINUX .SH NAME nvme_zns_report_zones \- Return the list of zones .SH SYNOPSIS diff --git a/doc/man/nvme_zns_send_action.2 b/doc/man/nvme_zns_send_action.2 index ebec78c..073fa8b 100644 --- a/doc/man/nvme_zns_send_action.2 +++ b/doc/man/nvme_zns_send_action.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_send_action" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_send_action" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_send_action \- Zone Management Send - Zone Send Action .SH SYNOPSIS diff --git a/doc/man/nvme_zns_za.2 b/doc/man/nvme_zns_za.2 index 6f8466a..c2d387a 100644 --- a/doc/man/nvme_zns_za.2 +++ b/doc/man/nvme_zns_za.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_za" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_za" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_za \- Zone Descriptor Data Structure .SH SYNOPSIS diff --git a/doc/man/nvme_zns_zs.2 b/doc/man/nvme_zns_zs.2 index f8f0820..05fd4f0 100644 --- a/doc/man/nvme_zns_zs.2 +++ b/doc/man/nvme_zns_zs.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_zs" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_zs" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_zs \- Zone Descriptor Data Structure - Zone State .SH SYNOPSIS diff --git a/doc/man/nvme_zns_zt.2 b/doc/man/nvme_zns_zt.2 index 04439cd..3051a4f 100644 --- a/doc/man/nvme_zns_zt.2 +++ b/doc/man/nvme_zns_zt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvme_zns_zt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvme_zns_zt" "October 2022" "API Manual" LINUX .SH NAME enum nvme_zns_zt \- Zone Descriptor Data Structure - Zone Type .SH SYNOPSIS diff --git a/doc/man/nvme_zone_report.2 b/doc/man/nvme_zone_report.2 index d0a7b4f..98cedb1 100644 --- a/doc/man/nvme_zone_report.2 +++ b/doc/man/nvme_zone_report.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvme_zone_report" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvme_zone_report" "October 2022" "API Manual" LINUX .SH NAME struct nvme_zone_report \- Report Zones Data Structure .SH SYNOPSIS diff --git a/doc/man/nvmf_add_ctrl.2 b/doc/man/nvmf_add_ctrl.2 index 02d5dfe..4da7085 100644 --- a/doc/man/nvmf_add_ctrl.2 +++ b/doc/man/nvmf_add_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvmf_add_ctrl" 9 "nvmf_add_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_add_ctrl" 9 "nvmf_add_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_add_ctrl \- Connect a controller and update topology .SH SYNOPSIS diff --git a/doc/man/nvmf_addr_family.2 b/doc/man/nvmf_addr_family.2 index 0dae370..d55d386 100644 --- a/doc/man/nvmf_addr_family.2 +++ b/doc/man/nvmf_addr_family.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_addr_family" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_addr_family" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_addr_family \- Address Family codes for Discovery Log Page entry ADRFAM field .SH SYNOPSIS diff --git a/doc/man/nvmf_adrfam_str.2 b/doc/man/nvmf_adrfam_str.2 index 27afa56..f0e7dad 100644 --- a/doc/man/nvmf_adrfam_str.2 +++ b/doc/man/nvmf_adrfam_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_adrfam_str" 9 "nvmf_adrfam_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_adrfam_str" 9 "nvmf_adrfam_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_adrfam_str \- Decode ADRFAM field .SH SYNOPSIS diff --git a/doc/man/nvmf_cms_str.2 b/doc/man/nvmf_cms_str.2 index ab5fea1..b65cc08 100644 --- a/doc/man/nvmf_cms_str.2 +++ b/doc/man/nvmf_cms_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_cms_str" 9 "nvmf_cms_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_cms_str" 9 "nvmf_cms_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_cms_str \- Decode RDMA connection management service field .SH SYNOPSIS diff --git a/doc/man/nvmf_connect_data.2 b/doc/man/nvmf_connect_data.2 index 073ddb1..c32c2a3 100644 --- a/doc/man/nvmf_connect_data.2 +++ b/doc/man/nvmf_connect_data.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_connect_data" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_connect_data" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_connect_data \- Data payload for the 'connect' command .SH SYNOPSIS diff --git a/doc/man/nvmf_connect_disc_entry.2 b/doc/man/nvmf_connect_disc_entry.2 index fca4624..5f72f36 100644 --- a/doc/man/nvmf_connect_disc_entry.2 +++ b/doc/man/nvmf_connect_disc_entry.2 @@ -1,4 +1,4 @@ -.TH "nvmf_connect_disc_entry" 9 "nvmf_connect_disc_entry" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_connect_disc_entry" 9 "nvmf_connect_disc_entry" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_connect_disc_entry \- Connect controller based on the discovery log page entry .SH SYNOPSIS diff --git a/doc/man/nvmf_default_config.2 b/doc/man/nvmf_default_config.2 index bfdcdf0..bd4855c 100644 --- a/doc/man/nvmf_default_config.2 +++ b/doc/man/nvmf_default_config.2 @@ -1,4 +1,4 @@ -.TH "nvmf_default_config" 9 "nvmf_default_config" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_default_config" 9 "nvmf_default_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_default_config \- Default values for fabrics configuration .SH SYNOPSIS diff --git a/doc/man/nvmf_dim_data.2 b/doc/man/nvmf_dim_data.2 index fa717ad..28a56fa 100644 --- a/doc/man/nvmf_dim_data.2 +++ b/doc/man/nvmf_dim_data.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_dim_data" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_dim_data" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_dim_data \- Discovery Information Management (DIM) - Data .SH SYNOPSIS diff --git a/doc/man/nvmf_dim_entfmt.2 b/doc/man/nvmf_dim_entfmt.2 index f50057c..1babab1 100644 --- a/doc/man/nvmf_dim_entfmt.2 +++ b/doc/man/nvmf_dim_entfmt.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_dim_entfmt" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_dim_entfmt" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_dim_entfmt \- Discovery Information Management Entry Format .SH SYNOPSIS diff --git a/doc/man/nvmf_dim_etype.2 b/doc/man/nvmf_dim_etype.2 index cf5026e..fd2f760 100644 --- a/doc/man/nvmf_dim_etype.2 +++ b/doc/man/nvmf_dim_etype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_dim_etype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_dim_etype" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_dim_etype \- Discovery Information Management Entity Type .SH SYNOPSIS diff --git a/doc/man/nvmf_dim_tas.2 b/doc/man/nvmf_dim_tas.2 index f63d154..605c81a 100644 --- a/doc/man/nvmf_dim_tas.2 +++ b/doc/man/nvmf_dim_tas.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_dim_tas" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_dim_tas" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_dim_tas \- Discovery Information Management Task .SH SYNOPSIS diff --git a/doc/man/nvmf_disc_eflags.2 b/doc/man/nvmf_disc_eflags.2 index 1b55e05..ffa91a8 100644 --- a/doc/man/nvmf_disc_eflags.2 +++ b/doc/man/nvmf_disc_eflags.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_disc_eflags" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_disc_eflags" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_disc_eflags \- Discovery Log Page entry flags. .SH SYNOPSIS diff --git a/doc/man/nvmf_disc_log_entry.2 b/doc/man/nvmf_disc_log_entry.2 index 88dc362..0faa8b8 100644 --- a/doc/man/nvmf_disc_log_entry.2 +++ b/doc/man/nvmf_disc_log_entry.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_disc_log_entry" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_disc_log_entry" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_disc_log_entry \- Discovery Log Page entry .SH SYNOPSIS diff --git a/doc/man/nvmf_discovery_log.2 b/doc/man/nvmf_discovery_log.2 index 345a17f..912644b 100644 --- a/doc/man/nvmf_discovery_log.2 +++ b/doc/man/nvmf_discovery_log.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_discovery_log" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_discovery_log" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_discovery_log \- Discovery Log Page (Log Identifier 70h) .SH SYNOPSIS diff --git a/doc/man/nvmf_eflags_str.2 b/doc/man/nvmf_eflags_str.2 index 849962d..11b9e14 100644 --- a/doc/man/nvmf_eflags_str.2 +++ b/doc/man/nvmf_eflags_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_eflags_str" 9 "nvmf_eflags_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_eflags_str" 9 "nvmf_eflags_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_eflags_str \- Decode EFLAGS field .SH SYNOPSIS diff --git a/doc/man/nvmf_exat_len.2 b/doc/man/nvmf_exat_len.2 index a71fd3b..b7f9783 100644 --- a/doc/man/nvmf_exat_len.2 +++ b/doc/man/nvmf_exat_len.2 @@ -1,4 +1,4 @@ -.TH "nvmf_exat_len" 9 "nvmf_exat_len" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_exat_len" 9 "nvmf_exat_len" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_exat_len \- Return length rounded up by 4 .SH SYNOPSIS diff --git a/doc/man/nvmf_exattype.2 b/doc/man/nvmf_exattype.2 index 972de97..881ec36 100644 --- a/doc/man/nvmf_exattype.2 +++ b/doc/man/nvmf_exattype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_exattype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_exattype" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_exattype \- Extended Attribute Type .SH SYNOPSIS diff --git a/doc/man/nvmf_ext_attr.2 b/doc/man/nvmf_ext_attr.2 index 2cb4009..d94b835 100644 --- a/doc/man/nvmf_ext_attr.2 +++ b/doc/man/nvmf_ext_attr.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_ext_attr" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_ext_attr" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_ext_attr \- Extended Attribute (EXAT) .SH SYNOPSIS diff --git a/doc/man/nvmf_ext_die.2 b/doc/man/nvmf_ext_die.2 index 13fa255..c8c1de6 100644 --- a/doc/man/nvmf_ext_die.2 +++ b/doc/man/nvmf_ext_die.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "struct nvmf_ext_die" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "struct nvmf_ext_die" "October 2022" "API Manual" LINUX .SH NAME struct nvmf_ext_die \- Extended Discovery Information Entry (DIE) .SH SYNOPSIS diff --git a/doc/man/nvmf_get_discovery_log.2 b/doc/man/nvmf_get_discovery_log.2 index 87a3c7c..715fe10 100644 --- a/doc/man/nvmf_get_discovery_log.2 +++ b/doc/man/nvmf_get_discovery_log.2 @@ -1,4 +1,4 @@ -.TH "nvmf_get_discovery_log" 9 "nvmf_get_discovery_log" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_get_discovery_log" 9 "nvmf_get_discovery_log" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_get_discovery_log \- Return the discovery log page .SH SYNOPSIS @@ -8,10 +8,15 @@ nvmf_get_discovery_log \- Return the discovery log page .BI "int max_retries " ");" .SH ARGUMENTS .IP "c" 12 -Discover controller to use +Discovery controller to use .IP "logp" 12 Pointer to the log page to be returned .IP "max_retries" 12 -maximum number of log page entries to be returned +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..b07c2f9 --- /dev/null +++ b/doc/man/nvmf_get_discovery_wargs.2 @@ -0,0 +1,20 @@ +.TH "nvmf_get_discovery_wargs" 9 "nvmf_get_discovery_wargs" "October 2022" "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 index 7e13626..65d6942 100644 --- a/doc/man/nvmf_hostid_from_file.2 +++ b/doc/man/nvmf_hostid_from_file.2 @@ -1,4 +1,4 @@ -.TH "nvmf_hostid_from_file" 9 "nvmf_hostid_from_file" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_hostid_from_file" 9 "nvmf_hostid_from_file" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_hostid_from_file \- Reads the host identifier from the config default location in /etc/nvme/. .SH SYNOPSIS diff --git a/doc/man/nvmf_hostnqn_from_file.2 b/doc/man/nvmf_hostnqn_from_file.2 index 987aa45..eaa9701 100644 --- a/doc/man/nvmf_hostnqn_from_file.2 +++ b/doc/man/nvmf_hostnqn_from_file.2 @@ -1,4 +1,4 @@ -.TH "nvmf_hostnqn_from_file" 9 "nvmf_hostnqn_from_file" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_hostnqn_from_file" 9 "nvmf_hostnqn_from_file" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_hostnqn_from_file \- Reads the host nvm qualified name from the config default location in /etc/nvme/ .SH SYNOPSIS diff --git a/doc/man/nvmf_hostnqn_generate.2 b/doc/man/nvmf_hostnqn_generate.2 index c17f5c0..b7a77d6 100644 --- a/doc/man/nvmf_hostnqn_generate.2 +++ b/doc/man/nvmf_hostnqn_generate.2 @@ -1,4 +1,4 @@ -.TH "nvmf_hostnqn_generate" 9 "nvmf_hostnqn_generate" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_hostnqn_generate" 9 "nvmf_hostnqn_generate" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_hostnqn_generate \- Generate a machine specific host nqn .SH SYNOPSIS 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..e5bd563 --- /dev/null +++ b/doc/man/nvmf_log_discovery_lid_support.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvmf_log_discovery_lid_support" "October 2022" "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..ec2ede1 --- /dev/null +++ b/doc/man/nvmf_log_discovery_lsp.2 @@ -0,0 +1,30 @@ +.TH "libnvme" 9 "enum nvmf_log_discovery_lsp" "October 2022" "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 index a90ace3..615d854 100644 --- a/doc/man/nvmf_prtype_str.2 +++ b/doc/man/nvmf_prtype_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_prtype_str" 9 "nvmf_prtype_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_prtype_str" 9 "nvmf_prtype_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_prtype_str \- Decode RDMA Provider type field .SH SYNOPSIS diff --git a/doc/man/nvmf_qptype_str.2 b/doc/man/nvmf_qptype_str.2 index 2464ea9..b9dea4f 100644 --- a/doc/man/nvmf_qptype_str.2 +++ b/doc/man/nvmf_qptype_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_qptype_str" 9 "nvmf_qptype_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_qptype_str" 9 "nvmf_qptype_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_qptype_str \- Decode RDMA QP Service type field .SH SYNOPSIS diff --git a/doc/man/nvmf_rdma_cms.2 b/doc/man/nvmf_rdma_cms.2 index aee4c06..e619dca 100644 --- a/doc/man/nvmf_rdma_cms.2 +++ b/doc/man/nvmf_rdma_cms.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_rdma_cms" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_rdma_cms" "October 2022" "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 diff --git a/doc/man/nvmf_rdma_prtype.2 b/doc/man/nvmf_rdma_prtype.2 index 7782bab..db1bd06 100644 --- a/doc/man/nvmf_rdma_prtype.2 +++ b/doc/man/nvmf_rdma_prtype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_rdma_prtype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_rdma_prtype" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_rdma_prtype \- RDMA Provider Type codes for Discovery Log Page entry TSAS RDMA_PRTYPE field .SH SYNOPSIS diff --git a/doc/man/nvmf_rdma_qptype.2 b/doc/man/nvmf_rdma_qptype.2 index 43cd99b..0640667 100644 --- a/doc/man/nvmf_rdma_qptype.2 +++ b/doc/man/nvmf_rdma_qptype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_rdma_qptype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_rdma_qptype" "October 2022" "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 diff --git a/doc/man/nvmf_register_ctrl.2 b/doc/man/nvmf_register_ctrl.2 index b432391..12cab3f 100644 --- a/doc/man/nvmf_register_ctrl.2 +++ b/doc/man/nvmf_register_ctrl.2 @@ -1,4 +1,4 @@ -.TH "nvmf_register_ctrl" 9 "nvmf_register_ctrl" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_register_ctrl" 9 "nvmf_register_ctrl" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_register_ctrl \- Perform registration task with a DC .SH SYNOPSIS diff --git a/doc/man/nvmf_sectype_str.2 b/doc/man/nvmf_sectype_str.2 index 8c5fd35..bd9bc9b 100644 --- a/doc/man/nvmf_sectype_str.2 +++ b/doc/man/nvmf_sectype_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_sectype_str" 9 "nvmf_sectype_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_sectype_str" 9 "nvmf_sectype_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_sectype_str \- Decode SECTYPE field .SH SYNOPSIS diff --git a/doc/man/nvmf_subtype_str.2 b/doc/man/nvmf_subtype_str.2 index 157f5fa..13ad38c 100644 --- a/doc/man/nvmf_subtype_str.2 +++ b/doc/man/nvmf_subtype_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_subtype_str" 9 "nvmf_subtype_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_subtype_str" 9 "nvmf_subtype_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_subtype_str \- Decode SUBTYPE field .SH SYNOPSIS diff --git a/doc/man/nvmf_tcp_sectype.2 b/doc/man/nvmf_tcp_sectype.2 index 0322e24..ca97e55 100644 --- a/doc/man/nvmf_tcp_sectype.2 +++ b/doc/man/nvmf_tcp_sectype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_tcp_sectype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_tcp_sectype" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_tcp_sectype \- Transport Specific Address Subtype Definition for NVMe/TCP Transport .SH SYNOPSIS diff --git a/doc/man/nvmf_treq.2 b/doc/man/nvmf_treq.2 index 6970856..f881ecc 100644 --- a/doc/man/nvmf_treq.2 +++ b/doc/man/nvmf_treq.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_treq" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_treq" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_treq \- Transport Requirements codes for Discovery Log Page entry TREQ field .SH SYNOPSIS diff --git a/doc/man/nvmf_treq_str.2 b/doc/man/nvmf_treq_str.2 index 9816c25..8a2b954 100644 --- a/doc/man/nvmf_treq_str.2 +++ b/doc/man/nvmf_treq_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_treq_str" 9 "nvmf_treq_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_treq_str" 9 "nvmf_treq_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_treq_str \- Decode TREQ field .SH SYNOPSIS diff --git a/doc/man/nvmf_trtype.2 b/doc/man/nvmf_trtype.2 index d301771..9db82f1 100644 --- a/doc/man/nvmf_trtype.2 +++ b/doc/man/nvmf_trtype.2 @@ -1,4 +1,4 @@ -.TH "libnvme" 9 "enum nvmf_trtype" "August 2022" "API Manual" LINUX +.TH "libnvme" 9 "enum nvmf_trtype" "October 2022" "API Manual" LINUX .SH NAME enum nvmf_trtype \- Transport Type codes for Discovery Log Page entry TRTYPE field .SH SYNOPSIS diff --git a/doc/man/nvmf_trtype_str.2 b/doc/man/nvmf_trtype_str.2 index 9e323a8..53a04c4 100644 --- a/doc/man/nvmf_trtype_str.2 +++ b/doc/man/nvmf_trtype_str.2 @@ -1,4 +1,4 @@ -.TH "nvmf_trtype_str" 9 "nvmf_trtype_str" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_trtype_str" 9 "nvmf_trtype_str" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_trtype_str \- Decode TRTYPE field .SH SYNOPSIS diff --git a/doc/man/nvmf_update_config.2 b/doc/man/nvmf_update_config.2 index 2edbc2c..cc84868 100644 --- a/doc/man/nvmf_update_config.2 +++ b/doc/man/nvmf_update_config.2 @@ -1,4 +1,4 @@ -.TH "nvmf_update_config" 9 "nvmf_update_config" "August 2022" "libnvme API manual" LINUX +.TH "nvmf_update_config" 9 "nvmf_update_config" "October 2022" "libnvme API manual" LINUX .SH NAME nvmf_update_config \- Update fabrics configuration values .SH SYNOPSIS diff --git a/doc/meson.build b/doc/meson.build index d716c8b..60a92ed 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -85,7 +85,10 @@ if want_docs != 'false' endforeach else if want_docs == 'all' or want_docs == 'man' - install_subdir('man', install_dir: mandir) + list_pre_compiled = find_program('list-pre-compiled.sh') + m = run_command(list_pre_compiled, check: true) + man_pages = m.stdout().strip().split('\n') + install_data(man_pages, install_dir: mandir) endif endif endif diff --git a/doc/rst/fabrics.rst b/doc/rst/fabrics.rst index b89dc0f..f0249f0 100644 --- a/doc/rst/fabrics.rst +++ b/doc/rst/fabrics.rst @@ -322,19 +322,94 @@ into the topology using **h** as parent. **Parameters** ``nvme_ctrl_t c`` - Discover controller to use + Discovery controller to use ``struct nvmf_discovery_log **logp`` Pointer to the log page to be returned ``int max_retries`` - maximum number of log page entries to be returned + Number of retries in case of failure + +**Description** + +The memory allocated for the log page and returned in **logp** +must be freed by the caller using free(). + +**Note** + +Consider using nvmf_get_discovery_wargs() instead. **Return** 0 on success; on failure -1 is returned and errno is set + + +.. c:struct:: nvme_get_discovery_args + + Arguments for nvmf_get_discovery_wargs() + +**Definition** + +:: + + struct nvme_get_discovery_args { + nvme_ctrl_t c; + int args_size; + int max_retries; + __u32 *result; + __u32 timeout; + __u8 lsp; + }; + +**Members** + +``c`` + Discovery controller + +``args_size`` + Length of the structure + +``max_retries`` + Number of retries in case of failure + +``result`` + The command completion result from CQE dword0 + +``timeout`` + Timeout in ms (default: NVME_DEFAULT_IOCTL_TIMEOUT) + +``lsp`` + Log specific field (See enum nvmf_log_discovery_lsp) + + + +.. c:function:: struct nvmf_discovery_log * nvmf_get_discovery_wargs (struct nvme_get_discovery_args *args) + + Get the discovery log page with args + +**Parameters** + +``struct nvme_get_discovery_args *args`` + Argument structure + +**Description** + +This function is similar to nvmf_get_discovery_log(), but +takes an extensible **args** parameter. **args** provides more +options than nvmf_get_discovery_log(). + +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 free(). + +**Return** + +Pointer to the discovery log page (to be freed). NULL +on failure and errno is set. + + .. c:function:: char * nvmf_hostnqn_generate () Generate a machine specific host nqn diff --git a/doc/rst/mi.rst b/doc/rst/mi.rst index 0da53a5..3eaa20c 100644 --- a/doc/rst/mi.rst +++ b/doc/rst/mi.rst @@ -578,6 +578,28 @@ This is the generic response format with the three doublewords of completion queue data, plus optional response data. +.. c:function:: const char * nvme_mi_status_to_string (int status) + + return a string representation of the MI status. + +**Parameters** + +``int status`` + MI response status + +**Description** + +Gives a string description of **status**, 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 nvme_status_get_value(). + +Returned string is const, and should not be free()ed. + +**Return** + +A string representing the status value + + .. c:function:: nvme_root_t nvme_mi_create_root (FILE *fp, int log_level) Create top-level MI (root) handle. @@ -949,7 +971,8 @@ See: :c:type:`nvme_mi_for_each_ctrl` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: nvme_mi_ctrl_t nvme_mi_init_ctrl (nvme_mi_ep_t ep, __u16 ctrl_id) @@ -1027,7 +1050,8 @@ NVMe version information. See :c:type:`struct nvme_mi_read_nvm_ss_info <nvme_mi_ **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_read_mi_data_port (nvme_mi_ep_t ep, __u8 portid, struct nvme_mi_read_port_info *p) @@ -1055,7 +1079,8 @@ See :c:type:`struct nvme_mi_read_port_info <nvme_mi_read_port_info>`. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_read_mi_data_ctrl_list (nvme_mi_ep_t ep, __u8 start_ctrlid, struct nvme_ctrl_list *list) @@ -1082,7 +1107,8 @@ See :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>`. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_read_mi_data_ctrl (nvme_mi_ep_t ep, __u16 ctrl_id, struct nvme_mi_read_ctrl_info *ctrl) @@ -1109,7 +1135,8 @@ See :c:type:`struct nvme_mi_read_ctrl_info <nvme_mi_read_ctrl_info>`. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_subsystem_health_status_poll (nvme_mi_ep_t ep, bool clear, struct nvme_mi_nvm_ss_health_status *nshds) @@ -1137,7 +1164,8 @@ See :c:type:`struct nvme_mi_nvm_ss_health_status <nvme_mi_nvm_ss_health_status>` **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_get (nvme_mi_ep_t ep, __u32 dw0, __u32 dw1, __u32 *nmresp) @@ -1172,7 +1200,8 @@ See :c:type:`enum nvme_mi_config_id <nvme_mi_config_id>` for identifiers. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_set (nvme_mi_ep_t ep, __u32 dw0, __u32 dw1) @@ -1200,7 +1229,8 @@ See :c:type:`enum nvme_mi_config_id <nvme_mi_config_id>` for identifiers. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_get_smbus_freq (nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq *freq) @@ -1226,7 +1256,8 @@ frequency **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_set_smbus_freq (nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq freq) @@ -1254,7 +1285,8 @@ for the port. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_set_health_status_change (nvme_mi_ep_t ep, __u32 mask) @@ -1281,7 +1313,8 @@ values in **mask**. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_get_mctp_mtu (nvme_mi_ep_t ep, __u8 port, __u16 *mtu) @@ -1312,7 +1345,8 @@ may not accept MCTP messages larger than the configured MTU. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_mi_config_set_mctp_mtu (nvme_mi_ep_t ep, __u8 port, __u16 mtu) @@ -1342,7 +1376,8 @@ interface(s) to match. **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_admin_xfer (nvme_mi_ctrl_t ctrl, struct nvme_mi_admin_req_hdr *admin_req, size_t req_data_size, struct nvme_mi_admin_resp_hdr *admin_resp, off_t resp_data_offset, size_t *resp_data_size) @@ -1388,7 +1423,8 @@ See: :c:type:`struct nvme_mi_admin_req_hdr <nvme_mi_admin_req_hdr>` and :c:type: **Return** -0 on success, non-zero on failure. +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise.. .. c:function:: int nvme_mi_admin_identify_partial (nvme_mi_ctrl_t ctrl, struct nvme_identify_args *args, off_t offset, size_t size) @@ -1429,7 +1465,8 @@ See: :c:type:`struct nvme_identify_args <nvme_identify_args>` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_identify (nvme_mi_ctrl_t ctrl, struct nvme_identify_args *args) @@ -1457,7 +1494,8 @@ See: :c:type:`struct nvme_identify_args <nvme_identify_args>` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_identify_cns_nsid (nvme_mi_ctrl_t ctrl, enum nvme_identify_cns cns, __u32 nsid, void *data) @@ -1491,7 +1529,86 @@ controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`. **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_ns (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_id_ns *ns) + + Perform an Admin identify command for a namespace + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + namespace ID + +``struct nvme_id_ns *ns`` + Namespace identification to populate + +**Description** + +Perform an Identify (namespace) command, setting the namespace id data +in **ns**. The namespace is expected to active and allocated. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_ns_descs (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_id_desc *descs) + + Perform an Admin identify Namespace Identification Descriptor list command for a namespace + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + Namespace ID + +``struct nvme_ns_id_desc *descs`` + Namespace Identification Descriptor list to populate + +**Description** + +Perform an Identify namespace identification description list command, +setting the namespace identification description list in **descs** + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_allocated_ns (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_id_ns *ns) + + Perform an Admin identify command for an allocated namespace + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + namespace ID + +``struct nvme_id_ns *ns`` + Namespace identification to populate + +**Description** + +Perform an Identify (namespace) command, setting the namespace id data +in **ns**. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_identify_ctrl (nvme_mi_ctrl_t ctrl, struct nvme_id_ctrl *id) @@ -1519,7 +1636,8 @@ See: :c:type:`struct nvme_id_ctrl <nvme_id_ctrl>` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_identify_ctrl_list (nvme_mi_ctrl_t ctrl, __u16 cntid, struct nvme_ctrl_list *list) @@ -1550,6 +1668,174 @@ See: :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>` **Return** +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_nsid_ctrl_list (nvme_mi_ctrl_t ctrl, __u32 nsid, __u16 cntid, struct nvme_ctrl_list *list) + + Perform an Admin identify for a controller list with specific namespace ID + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + Namespace identifier + +``__u16 cntid`` + Controller ID to specify list start + +``struct nvme_ctrl_list *list`` + List data to populate + +**Description** + +Perform an Identify command, for the controller list for **nsid**, starting +with IDs greater than or equal to **cntid**. + +Will return an error if the length of the response data (from the +controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **id** will be +fully populated on success. + +See: :c:type:`struct nvme_ctrl_list <nvme_ctrl_list>` + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_allocated_ns_list (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_list *list) + + Perform an Admin identify for an allocated namespace list + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + Namespace ID to specify list start + +``struct nvme_ns_list *list`` + List data to populate + +**Description** + +Perform an Identify command, for the allocated namespace list starting with +IDs greater than or equal to **nsid**. Specify :c:type:`NVME_NSID_NONE` for the start +of the list. + +Will return an error if the length of the response data (from the +controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be +be fully populated on success. + +See: :c:type:`struct nvme_ns_list <nvme_ns_list>` + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_active_ns_list (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ns_list *list) + + Perform an Admin identify for an active namespace list + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + Namespace ID to specify list start + +``struct nvme_ns_list *list`` + List data to populate + +**Description** + +Perform an Identify command, for the active namespace list starting with +IDs greater than or equal to **nsid**. Specify :c:type:`NVME_NSID_NONE` for the start +of the list. + +Will return an error if the length of the response data (from the +controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be +be fully populated on success. + +See: :c:type:`struct nvme_ns_list <nvme_ns_list>` + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_identify_primary_ctrl (nvme_mi_ctrl_t ctrl, __u16 cntid, struct nvme_primary_ctrl_cap *cap) + + Perform an Admin identify for primary controller capabilities data structure. + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u16 cntid`` + Controller ID to specify + +``struct nvme_primary_ctrl_cap *cap`` + Primary Controller Capabilities data structure to populate + +**Description** + +Perform an Identify command to get the Primary Controller Capabilities data +for the controller specified by **cntid** + +Will return an error if the length of the response data (from the +controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **cap** will be +be fully populated on success. + +See: :c:type:`struct nvme_primary_ctrl_cap <nvme_primary_ctrl_cap>` + +**Return** + +0 on success, non-zero on failure + + +.. c:function:: int nvme_mi_admin_identify_secondary_ctrl_list (nvme_mi_ctrl_t ctrl, __u32 nsid, __u16 cntid, struct nvme_secondary_ctrl_list *list) + + Perform an Admin identify for a secondary controller list. + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to process identify command + +``__u32 nsid`` + Namespace ID to specify list start + +``__u16 cntid`` + Controller ID to specify list start + +``struct nvme_secondary_ctrl_list *list`` + List data to populate + +**Description** + +Perform an Identify command, for the secondary controllers associated with +the current primary controller. Only entries with IDs greater than or +equal to **cntid** are returned. + +Will return an error if the length of the response data (from the +controller) is not a full :c:type:`NVME_IDENTIFY_DATA_SIZE`, so **list** will be +be fully populated on success. + +See: :c:type:`struct nvme_secondary_ctrl_list <nvme_secondary_ctrl_list>` + +**Return** + 0 on success, non-zero on failure @@ -1579,7 +1865,782 @@ See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_nsid_log (nvme_mi_ctrl_t ctrl, bool rae, enum nvme_cmd_get_log_lid lid, __u32 nsid, __u32 len, void *log) + + Helper for Get Log Page functions + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain Asynchronous Events + +``enum nvme_cmd_get_log_lid lid`` + Log identifier + +``__u32 nsid`` + Namespace ID + +``__u32 len`` + length of log buffer + +``void *log`` + pointer for resulting log data + +**Description** + +Performs a Get Log Page Admin command for a specific log ID **lid** and +namespace ID **nsid**. Log data is expected to be **len** bytes, and is stored +in **log** on success. The **rae** flag is passed as-is to the Get Log Page +command, and is specific to the Log Page requested. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_simple (nvme_mi_ctrl_t ctrl, enum nvme_cmd_get_log_lid lid, __u32 len, void *log) + + Helper for Get Log Page functions with no NSID or RAE requirements + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``enum nvme_cmd_get_log_lid lid`` + Log identifier + +``__u32 len`` + length of log buffer + +``void *log`` + pointer for resulting log data + +**Description** + +Performs a Get Log Page Admin command for a specific log ID **lid**, using +NVME_NSID_ALL for the namespace identifier, and rae set to false. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_supported_log_pages (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_supported_log_pages *log) + + Retrieve nmve supported log pages + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_supported_log_pages *log`` + Array of LID supported and Effects data structures + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_error (nvme_mi_ctrl_t ctrl, unsigned int nr_entries, bool rae, struct nvme_error_log_page *err_log) + + Retrieve nvme error log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``unsigned int nr_entries`` + Number of error log entries allocated + +``bool rae`` + Retain asynchronous events + +``struct nvme_error_log_page *err_log`` + Array of error logs of size 'entries' + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_smart (nvme_mi_ctrl_t ctrl, __u32 nsid, bool rae, struct nvme_smart_log *smart_log) + + Retrieve nvme smart log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u32 nsid`` + Optional namespace identifier + +``bool rae`` + Retain asynchronous events + +``struct nvme_smart_log *smart_log`` + User address to store the smart log + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_fw_slot (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_firmware_slot *fw_log) + + Retrieves the controller firmware log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_firmware_slot *fw_log`` + User address to store the log page + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_changed_ns_list (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_ns_list *ns_log) + + Retrieve namespace changed list + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_ns_list *ns_log`` + User address to store the log page + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_cmd_effects (nvme_mi_ctrl_t ctrl, enum nvme_csi csi, struct nvme_cmd_effects_log *effects_log) + + Retrieve nvme command effects log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``enum nvme_csi csi`` + Command Set Identifier + +``struct nvme_cmd_effects_log *effects_log`` + User address to store the effects log + +**Description** + +This log page describes the commands that the controller supports and the +effects of those commands on the state of the NVM subsystem. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_device_self_test (nvme_mi_ctrl_t ctrl, struct nvme_self_test_log *log) + + Retrieve the device self test log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``struct nvme_self_test_log *log`` + Userspace address of the log payload + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_create_telemetry_host (nvme_mi_ctrl_t ctrl, struct nvme_telemetry_log *log) + + Create host telemetry log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``struct nvme_telemetry_log *log`` + Userspace address of the log payload + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_telemetry_host (nvme_mi_ctrl_t ctrl, __u64 offset, __u32 len, void *log) + + Get Telemetry Host-Initiated log page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u64 offset`` + Offset into the telemetry data + +``__u32 len`` + Length of provided user buffer to hold the log data in bytes + +``void *log`` + User address for log page data + +**Description** + +Retrieves the Telemetry Host-Initiated log page at the requested offset +using the previously existing capture. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_telemetry_ctrl (nvme_mi_ctrl_t ctrl, bool rae, __u64 offset, __u32 len, void *log) + + Get Telemetry Controller-Initiated log page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u64 offset`` + Offset into the telemetry data + +``__u32 len`` + Length of provided user buffer to hold the log data in bytes + +``void *log`` + User address for log page data + +**Description** + +Retrieves the Telemetry Controller-Initiated log page at the requested offset +using the previously existing capture. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_endurance_group (nvme_mi_ctrl_t ctrl, __u16 endgid, struct nvme_endurance_group_log *log) + + Get Endurance Group log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u16 endgid`` + Starting group identifier to return in the list + +``struct nvme_endurance_group_log *log`` + User address to store the endurance log + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_predictable_lat_nvmset (nvme_mi_ctrl_t ctrl, __u16 nvmsetid, struct nvme_nvmset_predictable_lat_log *log) + + Predictable Latency Per NVM Set + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u16 nvmsetid`` + NVM set id + +``struct nvme_nvmset_predictable_lat_log *log`` + User address to store the predictable latency log + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_predictable_lat_event (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log) + + Retrieve Predictable Latency Event Aggregate Log Page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u32 offset`` + Offset into the predictable latency event + +``__u32 len`` + Length of provided user buffer to hold the log data in bytes + +``void *log`` + User address for log page data + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_ana (nvme_mi_ctrl_t ctrl, enum nvme_log_ana_lsp lsp, bool rae, __u64 offset, __u32 len, void *log) + + Retrieve Asymmetric Namespace Access log page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``enum nvme_log_ana_lsp lsp`` + Log specific, see :c:type:`enum nvme_get_log_ana_lsp <nvme_get_log_ana_lsp>` + +``bool rae`` + Retain asynchronous events + +``__u64 offset`` + Offset to the start of the log page + +``__u32 len`` + The allocated length of the log page + +``void *log`` + User address to store the ana log + +**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 :c:type:`struct nvme_ana_rsp_hdr <nvme_ana_rsp_hdr>` for the definition of the returned structure. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_ana_groups (nvme_mi_ctrl_t ctrl, bool rae, __u32 len, struct nvme_ana_group_desc *log) + + Retrieve Asymmetric Namespace Access groups only log page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u32 len`` + The allocated length of the log page + +``struct nvme_ana_group_desc *log`` + User address to store the ana group log + +**Description** + +See :c:type:`struct nvme_ana_group_desc <nvme_ana_group_desc>` for the definition of the returned structure. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_lba_status (nvme_mi_ctrl_t ctrl, bool rae, __u64 offset, __u32 len, void *log) + + Retrieve LBA Status + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u64 offset`` + Offset to the start of the log page + +``__u32 len`` + The allocated length of the log page + +``void *log`` + User address to store the log page + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_endurance_grp_evt (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log) + + Retrieve Rotational Media Information + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u32 offset`` + Offset to the start of the log page + +``__u32 len`` + The allocated length of the log page + +``void *log`` + User address to store the log page + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_fid_supported_effects (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_fid_supported_effects_log *log) + + Retrieve Feature Identifiers Supported and Effects + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_fid_supported_effects_log *log`` + FID Supported and Effects data structure + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_mi_cmd_supported_effects (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_mi_cmd_supported_effects_log *log) + + displays the MI Commands Supported by the controller + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_mi_cmd_supported_effects_log *log`` + MI Command Supported and Effects data structure + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_boot_partition (nvme_mi_ctrl_t ctrl, bool rae, __u8 lsp, __u32 len, struct nvme_boot_partition *part) + + Retrieve Boot Partition + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u8 lsp`` + The log specified field of LID + +``__u32 len`` + The allocated size, minimum + struct nvme_boot_partition + +``struct nvme_boot_partition *part`` + User address to store the log page + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_discovery (nvme_mi_ctrl_t ctrl, bool rae, __u32 offset, __u32 len, void *log) + + Retrieve Discovery log page + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``__u32 offset`` + Offset of this log to retrieve + +``__u32 len`` + The allocated size for this portion of the log + +``void *log`` + User address to store the discovery log + +**Description** + +Supported only by fabrics discovery controllers, returning discovery +records. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_media_unit_stat (nvme_mi_ctrl_t ctrl, __u16 domid, struct nvme_media_unit_stat_log *mus) + + Retrieve Media Unit Status + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u16 domid`` + Domain Identifier selection, if supported + +``struct nvme_media_unit_stat_log *mus`` + User address to store the Media Unit statistics log + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_support_cap_config_list (nvme_mi_ctrl_t ctrl, __u16 domid, struct nvme_supported_cap_config_list_log *cap) + + Retrieve Supported Capacity Configuration List + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u16 domid`` + Domain Identifier selection, if supported + +``struct nvme_supported_cap_config_list_log *cap`` + User address to store supported capabilities config list + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_reservation (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_resv_notification_log *log) + + Retrieve Reservation Notification + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_resv_notification_log *log`` + User address to store the reservation log + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_sanitize (nvme_mi_ctrl_t ctrl, bool rae, struct nvme_sanitize_log_page *log) + + Retrieve Sanitize Status + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``bool rae`` + Retain asynchronous events + +``struct nvme_sanitize_log_page *log`` + User address to store the sanitize log + +**Description** + +The Sanitize Status log page reports sanitize operation time estimates and +information about the most recent sanitize operation. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_zns_changed_zones (nvme_mi_ctrl_t ctrl, __u32 nsid, bool rae, struct nvme_zns_changed_zone_log *log) + + Retrieve list of zones that have changed + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``__u32 nsid`` + Namespace ID + +``bool rae`` + Retain asynchronous events + +``struct nvme_zns_changed_zone_log *log`` + User address to store the changed zone log + +**Description** + +The list of zones that have changed state due to an exceptional event. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_log_persistent_event (nvme_mi_ctrl_t ctrl, enum nvme_pevent_log_action action, __u32 size, void *pevent_log) + + Retrieve Persistent Event Log + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to query + +``enum nvme_pevent_log_action action`` + Action the controller should take during processing this command + +``__u32 size`` + Size of **pevent_log** + +``void *pevent_log`` + User address to store the persistent event log + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_security_send (nvme_mi_ctrl_t ctrl, struct nvme_security_send_args *args) @@ -1608,7 +2669,8 @@ See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>` **Return** -0 on success, non-zero on failure +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. .. c:function:: int nvme_mi_admin_security_recv (nvme_mi_ctrl_t ctrl, struct nvme_security_receive_args *args) @@ -1637,6 +2699,361 @@ See: :c:type:`struct nvme_get_log_args <nvme_get_log_args>` **Return** +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_features (nvme_mi_ctrl_t ctrl, struct nvme_get_features_args *args) + + Perform a Get Feature command on a controller + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_get_features_args *args`` + Get Features command arguments + +**Description** + +Performs a Get Features Admin command as specified by **args**. Returned +feature data will be stored in **args->result** and **args->data**, depending +on the specification of the feature itself; most features do not return +additional data. See section 5.27.1 of the NVMe spec (v2.0b) for +feature-specific information. + +On success, **args->data_len** will be updated with the actual data length +received. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_features_data (nvme_mi_ctrl_t ctrl, enum nvme_features_id fid, __u32 nsid, __u32 data_len, void *data, __u32 *result) + + Helper function for :c:type:`nvme_mi_admin_get_features`() + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``enum nvme_features_id fid`` + Feature identifier + +``__u32 nsid`` + Namespace ID, if applicable for **fid** + +``__u32 data_len`` + Length of feature data, if applicable for **fid**, in bytes + +``void *data`` + User address of feature data, if applicable + +``__u32 *result`` + The command completion result from CQE dword0 + +**Description** + +Helper for optionally features that optionally return data, using the +SEL_CURRENT selector value. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_get_features_simple (nvme_mi_ctrl_t ctrl, enum nvme_features_id fid, __u32 nsid, __u32 *result) + + Get a simple feature value with no data + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``enum nvme_features_id fid`` + Feature identifier + +``__u32 nsid`` + Namespace id, if required by **fid** + +``__u32 *result`` + output feature data + + +.. c:function:: int nvme_mi_admin_set_features (nvme_mi_ctrl_t ctrl, struct nvme_set_features_args *args) + + Perform a Set Features command on a controller + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_set_features_args *args`` + Set Features command arguments + +**Description** + +Performs a Set Features Admin command as specified by **args**. Result +data will be stored in **args->result**. +on the specification of the feature itself; most features do not return +additional data. See section 5.27.1 of the NVMe spec (v2.0b) for +feature-specific information. + +On success, **args->data_len** will be updated with the actual data length +received. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_mgmt (nvme_mi_ctrl_t ctrl, struct nvme_ns_mgmt_args *args) + + Issue a Namespace Management command + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_ns_mgmt_args *args`` + Namespace management command arguments + +**Description** + +Issues a Namespace Management command to **ctrl**, with arguments specified +from **args**. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_mgmt_create (nvme_mi_ctrl_t ctrl, struct nvme_id_ns *ns, __u8 csi, __u32 *nsid) + + Helper for Namespace Management Create command + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_id_ns *ns`` + New namespace parameters + +``__u8 csi`` + Command Set Identifier for new NS + +``__u32 *nsid`` + Set to new namespace ID on create + +**Description** + +Issues a Namespace Management (Create) command to **ctrl**, to create a +new namespace specified by **ns**, using command set **csi**. On success, +the new namespace ID will be written to **nsid**. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_mgmt_delete (nvme_mi_ctrl_t ctrl, __u32 nsid) + + Helper for Namespace Management Delete command + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``__u32 nsid`` + Namespace ID to delete + +**Description** + +Issues a Namespace Management (Delete) command to **ctrl**, to delete the +namespace with id **nsid**. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_attach (nvme_mi_ctrl_t ctrl, struct nvme_ns_attach_args *args) + + Attach or detach namespace to controller(s) + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_ns_attach_args *args`` + Namespace Attach command arguments + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_attach_ctrls (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ctrl_list *ctrlist) + + Attach namespace to controllers + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``__u32 nsid`` + Namespace ID to attach + +``struct nvme_ctrl_list *ctrlist`` + Controller list to modify attachment state of nsid + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_ns_detach_ctrls (nvme_mi_ctrl_t ctrl, __u32 nsid, struct nvme_ctrl_list *ctrlist) + + Detach namespace from controllers + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``__u32 nsid`` + Namespace ID to detach + +``struct nvme_ctrl_list *ctrlist`` + Controller list to modify attachment state of nsid + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_fw_download (nvme_mi_ctrl_t ctrl, struct nvme_fw_download_args *args) + + Download part or all of a firmware image to the controller + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send firmware data to + +``struct nvme_fw_download_args *args`` + :c:type:`struct nvme_fw_download_args <nvme_fw_download_args>` argument structure + +**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 nvme_mi_admin_fw_commit() to activate a newly +downloaded image. + +**Return** + 0 on success, non-zero on failure +.. c:function:: int nvme_mi_admin_fw_commit (nvme_mi_ctrl_t ctrl, struct nvme_fw_commit_args *args) + + Commit firmware using the specified action + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send firmware data to + +``struct nvme_fw_commit_args *args`` + :c:type:`struct nvme_fw_download_args <nvme_fw_download_args>` argument structure + +**Description** + +The Firmware Commit command modifies the firmware image or Boot Partitions. + +**Return** + +0 on success, non-zero on failure + + +.. c:function:: int nvme_mi_admin_format_nvm (nvme_mi_ctrl_t ctrl, struct nvme_format_nvm_args *args) + + Format NVMe namespace + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_format_nvm_args *args`` + Format NVM command arguments + +**Description** + +Perform a low-level format to set the LBA data & metadata size. May destroy +data & metadata on the specified namespaces + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + +.. c:function:: int nvme_mi_admin_sanitize_nvm (nvme_mi_ctrl_t ctrl, struct nvme_sanitize_nvm_args *args) + + Start a subsystem Sanitize operation + +**Parameters** + +``nvme_mi_ctrl_t ctrl`` + Controller to send command to + +``struct nvme_sanitize_nvm_args *args`` + Sanitize command arguments + +**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. + +**Return** + +The nvme command status if a response was received (see +:c:type:`enum nvme_status_field <nvme_status_field>`) or -1 with errno set otherwise. + + diff --git a/doc/rst/tree.rst b/doc/rst/tree.rst index 2334464..d6f270d 100644 --- a/doc/rst/tree.rst +++ b/doc/rst/tree.rst @@ -824,7 +824,7 @@ A pointer to the 64-bit eui A pointer to the 128-bit nguid -.. c:function:: void nvme_ns_get_uuid (nvme_ns_t n, uuid_t out) +.. c:function:: void nvme_ns_get_uuid (nvme_ns_t n, unsigned char out[NVME_UUID_LEN]) UUID of a namespace @@ -833,7 +833,7 @@ A pointer to the 128-bit nguid ``nvme_ns_t n`` Namespace instance -``uuid_t out`` +``unsigned char out[NVME_UUID_LEN]`` buffer for the UUID **Description** @@ -1477,6 +1477,33 @@ Host transport address of **c** (if present) Host interface name of **c** (if present) +.. c:function:: const char * nvme_ctrl_get_dhchap_host_key (nvme_ctrl_t c) + + Return host key + +**Parameters** + +``nvme_ctrl_t c`` + Controller to be checked + +**Return** + +DH-HMAC-CHAP host key or NULL if not set + + +.. c:function:: void nvme_ctrl_set_dhchap_host_key (nvme_ctrl_t c, const char *key) + + Set host key + +**Parameters** + +``nvme_ctrl_t c`` + Host for which the key should be set + +``const char *key`` + DH-HMAC-CHAP Key to set or NULL to clear existing key + + .. c:function:: const char * nvme_ctrl_get_dhchap_key (nvme_ctrl_t c) Return controller key diff --git a/doc/rst/types.rst b/doc/rst/types.rst index 43e2049..9140821 100644 --- a/doc/rst/types.rst +++ b/doc/rst/types.rst @@ -7551,6 +7551,48 @@ bytes, in size. This log captures the controller’s internal state. +.. c:enum:: nvmf_log_discovery_lid_support + + Discovery log specific support + +**Constants** + +``NVMF_LOG_DISC_LID_NONE`` + None + +``NVMF_LOG_DISC_LID_EXTDLPES`` + Extended Discovery Log Page Entries Supported + +``NVMF_LOG_DISC_LID_PLEOS`` + Port Local Entries Only Supported + +``NVMF_LOG_DISC_LID_ALLSUBES`` + All NVM Subsystem Entries Supported + + + + +.. c:enum:: nvmf_log_discovery_lsp + + Discovery log specific field + +**Constants** + +``NVMF_LOG_DISC_LSP_NONE`` + None + +``NVMF_LOG_DISC_LSP_EXTDLPE`` + Extended Discovery Log Page Entries + +``NVMF_LOG_DISC_LSP_PLEO`` + Port Local Entries Only + +``NVMF_LOG_DISC_LSP_ALLSUBE`` + All NVM Subsystem Entries + + + + .. c:struct:: nvmf_discovery_log Discovery Log Page (Log Identifier 70h) @@ -9483,6 +9525,88 @@ status code +.. c:enum:: nvme_status_type + + type encoding for NVMe return values, when represented as an int. + +**Constants** + +``NVME_STATUS_TYPE_SHIFT`` + shift value for status bits + +``NVME_STATUS_TYPE_MASK`` + mask value for status bits + +``NVME_STATUS_TYPE_NVME`` + NVMe command status value, typically from CDW3 + +``NVME_STATUS_TYPE_MI`` + NVMe-MI header status + +**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. + + +.. c:function:: __u32 nvme_status_get_type (int status) + + extract the type from a nvme_* return value + +**Parameters** + +``int status`` + the (non-negative) return value from the NVMe API + +**Return** + +the type component of the status. + + +.. c:function:: __u32 nvme_status_get_value (int status) + + extract the status value from a nvme_* return value + +**Parameters** + +``int status`` + the (non-negative) return value from the NVMe API + +**Return** + +the value component of the status; the set of values will depend +on the status type. + + +.. c:function:: __u32 nvme_status_equals (int status, enum nvme_status_type type, unsigned int value) + + helper to check a status against a type and value + +**Parameters** + +``int status`` + the (non-negative) return value from the NVMe API + +``enum nvme_status_type type`` + the status type + +``unsigned int value`` + the status value + +**Return** + +true if **status** is of the specified type and value + + + + .. c:enum:: nvme_admin_opcode Known NVMe admin opcodes @@ -10592,6 +10716,27 @@ status code +.. c:enum:: nvme_data_tfr + + Data transfer direction of the command + +**Constants** + +``NVME_DATA_TFR_NO_DATA_TFR`` + No data transfer + +``NVME_DATA_TFR_HOST_TO_CTRL`` + Host to controller + +``NVME_DATA_TFR_CTRL_TO_HOST`` + Controller to host + +``NVME_DATA_TFR_BIDIRECTIONAL`` + Bidirectional + + + + .. c:enum:: nvme_io_opcode Opcodes for I/O Commands diff --git a/doc/rst/util.rst b/doc/rst/util.rst index 68ac03b..87ea945 100644 --- a/doc/rst/util.rst +++ b/doc/rst/util.rst @@ -246,6 +246,33 @@ otherwise. recognize :c:type:`fid`. +.. c:function:: int nvme_get_feature_length2 (int fid, __u32 cdw11, enum nvme_data_tfr dir, __u32 *len) + + Retreive the command payload length for a specific feature identifier + +**Parameters** + +``int fid`` + Feature identifier, see :c:type:`enum nvme_features_id <nvme_features_id>`. + +``__u32 cdw11`` + The cdw11 value may affect the transfer (only known fid is + ``NVME_FEAT_FID_HOST_ID``) + +``enum nvme_data_tfr dir`` + 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``). + +``__u32 *len`` + On success, set to this features payload length in bytes. + +**Return** + +0 on success, -1 with errno set to EINVAL if the function did not +recognize :c:type:`fid`. + + .. c:function:: int nvme_get_directive_receive_length (enum nvme_directive_dtype dtype, enum nvme_directive_receive_doper doper, __u32 *len) Get directive receive length @@ -492,3 +519,56 @@ Pointer to the next element in the array. Returns version string for known types or else "n/a" +.. c:function:: int nvme_uuid_to_string (unsigned char uuid[NVME_UUID_LEN], char *str) + + Return string represenation of encoded UUID + +**Parameters** + +``unsigned char uuid[NVME_UUID_LEN]`` + Binary encoded input UUID + +``char *str`` + Output string represenation of UUID + +**Return** + +Returns error code if type conversion fails. + + +.. c:function:: int nvme_uuid_from_string (const char *str, unsigned char uuid[NVME_UUID_LEN]) + + Return encoded UUID represenation of string UUID + +**Parameters** + +``const char *str`` + Output string represenation of UUID + +``unsigned char uuid[NVME_UUID_LEN]`` + Binary encoded input UUID + +**Return** + +Returns error code if type conversion fails. + + +.. c:function:: int nvme_uuid_random (unsigned char uuid[NVME_UUID_LEN]) + + Generate random UUID + +**Parameters** + +``unsigned char uuid[NVME_UUID_LEN]`` + Generated random UUID + +**Description** + +Generate random number according +https://www.rfc-editor.org/rfc/rfc4122#section-4.4 + +**Return** + +Returns error code if generating of random number fails. + + diff --git a/examples/discover-loop.c b/examples/discover-loop.c index 10c72b8..7528067 100644 --- a/examples/discover-loop.c +++ b/examples/discover-loop.c @@ -87,5 +87,6 @@ int main() print_discover_log(log); nvme_free_tree(r); + free(log); return 0; } diff --git a/examples/discover-loop.py b/examples/discover-loop.py index 22c51e6..09a976b 100644 --- a/examples/discover-loop.py +++ b/examples/discover-loop.py @@ -17,20 +17,49 @@ License for the specific language governing permissions and limitations under the License. ''' +import sys +import pprint from libnvme import nvme + +def disc_supp_str(dlp_supp_opts): + d = { + nvme.NVMF_LOG_DISC_LID_EXTDLPES: "Extended Discovery Log Page Entry Supported (EXTDLPES)", + nvme.NVMF_LOG_DISC_LID_PLEOS: "Port Local Entries Only Supported (PLEOS)", + nvme.NVMF_LOG_DISC_LID_ALLSUBES: "All NVM Subsystem Entries Supported (ALLSUBES)", + } + return [txt for msk, txt in d.items() if dlp_supp_opts & msk] + r = nvme.root() h = nvme.host(r) -c = nvme.ctrl(nvme.NVME_DISC_SUBSYS_NAME, 'loop') +c = nvme.ctrl(r, nvme.NVME_DISC_SUBSYS_NAME, 'loop') try: c.connect(h) -except: - sys.exit("Failed to connect!") +except Exception as e: + sys.exit(f'Failed to connect: {e}') print("connected to %s subsys %s" % (c.name, c.subsystem.name)) + +slp = c.supported_log_pages() + +try: + dlp_supp_opts = slp[nvme.NVME_LOG_LID_DISCOVER] >> 16 +except (TypeError, IndexError): + dlp_supp_opts = 0 + +print(f"LID {nvme.NVME_LOG_LID_DISCOVER}h (Discovery), supports: {disc_supp_str(dlp_supp_opts)}") + +try: + lsp = nvme.NVMF_LOG_DISC_LSP_PLEO if dlp_supp_opts & nvme.NVMF_LOG_DISC_LID_PLEOS else 0 + d = c.discover(lsp=lsp) + print(pprint.pformat(d)) +except Exception as e: + sys.exit(f'Failed to discover: {e}') + try: - d = c.discover() - print (d) -except: - print("Failed to discover!") - pass c.disconnect() +except Exception as e: + sys.exit(f'Failed to disconnect: {e}') + +c = None +h = None +r = None diff --git a/examples/meson.build b/examples/meson.build index fcea3fb..31d05d7 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -39,3 +39,12 @@ executable( dependencies: libnvme_mi_dep, include_directories: [incdir, internal_incdir] ) + +if libsystemd_dep.found() + executable( + 'mi-conf', + ['mi-conf.c'], + dependencies: [libnvme_mi_dep, libsystemd_dep], + include_directories: [incdir, internal_incdir] + ) +endif diff --git a/examples/mi-conf.c b/examples/mi-conf.c new file mode 100644 index 0000000..90d590e --- /dev/null +++ b/examples/mi-conf.c @@ -0,0 +1,196 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/** + * This file is part of libnvme. + * Copyright (c) 2022 Code Construct Pty Ltd. + * + * Authors: Jeremy Kerr <jk@codeconstruct.com.au> + */ + +/** + * mi-conf: query a device for optimal MTU and set for both the local MCTP + * route (through dbus to mctpd) and the device itself (through NVMe-MI + * configuration commands) + */ + +#include <err.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> + +#include <libnvme-mi.h> + +#include <ccan/array_size/array_size.h> +#include <ccan/endian/endian.h> + +#include <systemd/sd-bus.h> + +#define MCTP_DBUS_NAME "xyz.openbmc_project.MCTP" +#define MCTP_DBUS_PATH "/xyz/openbmc_project/mctp" +#define MCTP_DBUS_EP_IFACE "au.com.CodeConstruct.MCTP.Endpoint" + +static int parse_mctp(const char *devstr, unsigned int *net, uint8_t *eid) +{ + int rc; + + rc = sscanf(devstr, "mctp:%u,%hhu", net, eid); + if (rc != 2) + return -1; + + return 0; +} + +int find_port(nvme_mi_ep_t ep, uint8_t *portp, uint16_t *mtup) +{ + struct nvme_mi_read_nvm_ss_info ss_info; + struct nvme_mi_read_port_info port_info; + uint8_t port; + bool found; + int rc; + + /* query number of ports */ + rc = nvme_mi_mi_read_mi_data_subsys(ep, &ss_info); + if (rc) { + warn("Failed reading subsystem info"); + return -1; + } + + found = false; + for (port = 0; port <= ss_info.nump; port++) { + rc = nvme_mi_mi_read_mi_data_port(ep, port, &port_info); + if (rc) { + warn("Failed reading port info for port %ud", port); + return -1; + } + + /* skip non-SMBus ports */ + if (port_info.portt != 0x2) + continue; + + if (found) { + warn("Mutliple SMBus ports; skipping duplicate"); + } else { + *portp = port; + *mtup = port_info.mmctptus; + found = true; + } + } + + return found ? 0 : 1; +} + +int set_local_mtu(sd_bus *bus, unsigned int net, uint8_t eid, uint32_t mtu) +{ + sd_bus_error err = SD_BUS_ERROR_NULL; + sd_bus_message *resp; + char *ep_path; + int rc; + + rc = asprintf(&ep_path, "%s/%u/%hhu", MCTP_DBUS_PATH, net, eid); + if (rc < 0) { + warn("Failed to create dbus path"); + return -1; + } + + /* The NVMe-MI interfaces refer to their MTU as *not* including the + * 4-byte MCTP header, whereas the MCTP specs *do* include it. When + * we're setting the route MTU, we're using to the MCTP-style MTU, + * which needs the extra four bytes included + */ + mtu += 4; + + rc = sd_bus_call_method(bus, MCTP_DBUS_NAME, ep_path, + MCTP_DBUS_EP_IFACE, "SetMTU", &err, &resp, + "u", mtu); + if (rc < 0) { + warnx("Failed to set local MTU: %s", strerror(-rc)); + return -1; + } + + return 0; +} + +int main(int argc, char **argv) +{ + uint16_t cur_mtu, mtu; + const char *devstr; + uint8_t eid, port; + nvme_root_t root; + unsigned int net; + nvme_mi_ep_t ep; + sd_bus *bus; + int rc; + + if (argc != 2) { + fprintf(stderr, "usage: %s mctp:<net>,<eid>\n", argv[0]); + return EXIT_FAILURE; + } + + devstr = argv[1]; + rc = parse_mctp(devstr, &net, &eid); + if (rc) + errx(EXIT_FAILURE, "can't parse MI device string '%s'", devstr); + + root = nvme_mi_create_root(stderr, DEFAULT_LOGLEVEL); + if (!root) + err(EXIT_FAILURE, "can't create NVMe root"); + + ep = nvme_mi_open_mctp(root, net, eid); + if (!ep) { + warnx("can't open MCTP endpoint %d:%d", net, eid); + goto out_free_root; + } + + rc = sd_bus_default_system(&bus); + if (rc < 0) { + goto out_close_ep; + warnx("Failed opening D-Bus: %s\n", strerror(-rc)); + } + + rc = find_port(ep, &port, &mtu); + if (rc) { + warnx("Can't find SMBus port information"); + goto out_close_bus; + } + + rc = nvme_mi_mi_config_get_mctp_mtu(ep, port, &cur_mtu); + if (rc) { + cur_mtu = 0; + warn("Can't query current MTU; no way to revert on failure"); + } + + if (mtu == cur_mtu) { + printf("Current MTU (%d) is already at max\n", cur_mtu); + goto out_close_bus; + } + + rc = nvme_mi_mi_config_set_mctp_mtu(ep, port, mtu); + if (rc) { + warn("Can't set MCTP MTU"); + goto out_close_bus; + } + + rc = set_local_mtu(bus, net, eid, mtu); + if (rc) { + /* revert if we have an old setting */ + if (cur_mtu) { + rc = nvme_mi_mi_config_set_mctp_mtu(ep, port, cur_mtu); + if (rc) + warn("Failed to restore previous MTU!"); + rc = -1; + } + } else { + printf("MTU for port %u set to %d (was %d)\n", + port, mtu, cur_mtu); + } + +out_close_bus: + sd_bus_close(bus); +out_close_ep: + nvme_mi_close(ep); +out_free_root: + nvme_mi_free_root(root); + + return rc ? EXIT_FAILURE : EXIT_SUCCESS; +} + diff --git a/examples/mi-mctp.c b/examples/mi-mctp.c index 589bb44..8d660af 100644 --- a/examples/mi-mctp.c +++ b/examples/mi-mctp.c @@ -661,6 +661,12 @@ static int do_action_endpoint(enum action action, nvme_mi_ep_t ep, int argc, cha case ACTION_CONFIG_SET: rc = do_config_set(ep, argc, argv); break; + default: + /* This shouldn't be possible, as we should be covering all + * of the enum action options above. Hoever, keep the compilers + * happy and fail gracefully. */ + fprintf(stderr, "invalid action %d?\n", action); + rc = -1; } return rc; } diff --git a/libnvme/README.md b/libnvme/README.md index f61e5cc..3195715 100644 --- a/libnvme/README.md +++ b/libnvme/README.md @@ -10,16 +10,24 @@ import sys import pprint from libnvme import nvme +def disc_supp_str(dlp_supp_opts): + bitmap = { + nvme.NVMF_LOG_DISC_LID_EXTDLPES: "EXTDLPES", + nvme.NVMF_LOG_DISC_LID_PLEOS: "PLEOS", + nvme.NVMF_LOG_DISC_LID_ALLSUBES: "ALLSUBES", + } + return [txt for msk, txt in bitmap.items() if dlp_supp_opts & msk] + root = nvme.root() # This is a singleton root.log_level('debug') # Optional: extra debug info host = nvme.host(root) # This "may be" a singleton. -sybsysnqn = [string] # e.g. 'nqn.2014-08.org.nvmexpress.discovery', nvme.NVME_DISC_SUBSYS_NAME, ... -transport = [string] # One of: 'tcp, 'rdma', 'fc', 'loop'. +subsysnqn = [string] # e.g. nvme.NVME_DISC_SUBSYS_NAME, ... +transport = [string] # One of: 'tcp', 'rdma', 'fc', 'loop'. traddr = [IPv4 or IPv6] # e.g. '192.168.10.10', 'fd2e:853b:3cad:e135:506a:65ee:29f2:1b18', ... trsvcid = [string] # e.g. '8009', '4420', ... host_iface = [interface] # e.g. 'eth1', ens256', ... -ctrl = nvme.ctrl(subsysnqn=subsysnqn, transport=transport, traddr=traddr, trsvcid=trsvcid, host_iface=host_iface) +ctrl = nvme.ctrl(root, subsysnqn=subsysnqn, transport=transport, traddr=traddr, trsvcid=trsvcid, host_iface=host_iface) try: cfg = { @@ -31,8 +39,17 @@ try: except Exception as e: sys.exit(f'Failed to connect: {e}') +supported_log_pages = ctrl.supported_log_pages() +try: + # Get the supported options for the Get Discovery Log Page command + dlp_supp_opts = supported_log_pages[nvme.NVME_LOG_LID_DISCOVER] >> 16 +except (TypeError, IndexError): + dlp_supp_opts = 0 + +print(f"LID {nvme.NVME_LOG_LID_DISCOVER:02x}h (Discovery), supports: {disc_supp_str(dlp_supp_opts)}") try: - log_pages = ctrl.discover() + lsp = nvme.NVMF_LOG_DISC_LSP_PLEO if dlp_supp_opts & nvme.NVMF_LOG_DISC_LID_PLEOS else 0 + log_pages = ctrl.discover(lsp=lsp) print(pprint.pformat(log_pages)) except Exception as e: sys.exit(f'Failed to retrieve log pages: {e}') @@ -42,5 +59,8 @@ try: except Exception as e: sys.exit(f'Failed to disconnect: {e}') +ctrl = None +host = None +root = None ``` diff --git a/libnvme/nvme.i b/libnvme/nvme.i index 14e2415..6f20e2c 100644 --- a/libnvme/nvme.i +++ b/libnvme/nvme.i @@ -21,10 +21,13 @@ %{ #include <ccan/list/list.h> +#include <ccan/endian/endian.h> #include "nvme/tree.h" #include "nvme/fabrics.h" #include "nvme/private.h" #include "nvme/log.h" +#include "nvme/ioctl.h" +#include "nvme/types.h" static int host_iter_err = 0; static int subsys_iter_err = 0; @@ -287,7 +290,9 @@ struct nvme_host { char *hostnqn; char *hostid; char *hostsymname; - char *dhchap_key; + %extend { + char *dhchap_key; + } }; struct nvme_subsystem { @@ -314,6 +319,7 @@ struct nvme_ctrl { %immutable subsysnqn; %immutable traddr; %immutable trsvcid; + %immutable dhchap_host_key; %immutable dhchap_key; %immutable cntrltype; %immutable dctype; @@ -332,7 +338,10 @@ struct nvme_ctrl { char *subsysnqn; char *traddr; char *trsvcid; - char *dhchap_key; + %extend { + char *dhchap_host_key: + char *dhchap_key; + } char *cntrltype; char *dctype; bool discovery_ctrl; @@ -448,6 +457,15 @@ struct nvme_ns { } } +%{ + const char *nvme_host_dhchap_key_get(struct nvme_host *h) { + return nvme_host_get_dhchap_key(h); + } + void nvme_host_dhchap_key_set(struct nvme_host *h, char *key) { + nvme_host_set_dhchap_key(h, key); + } +%}; + %extend subsystem_iter { struct subsystem_iter *__iter__() { return $self; @@ -610,25 +628,46 @@ struct nvme_ns { } %newobject discover; - struct nvmf_discovery_log *discover(int max_retries = 6) { - struct nvmf_discovery_log *logp = NULL; + struct nvmf_discovery_log *discover(int lsp = 0, int max_retries = 6) { + struct nvme_get_discovery_args args = { + .c = $self, + .args_size = sizeof(args), + .max_retries = max_retries, + .result = NULL, + .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, + .lsp = lsp, + }; + struct nvmf_discovery_log *logp = nvmf_get_discovery_wargs(&args); + if (logp == NULL) + discover_err = 1; + return logp; + } + + %feature("autodoc", "@return: List of supported log pages") supported_log_pages; + PyObject * supported_log_pages(bool rae=true) { + struct nvme_supported_log_pages log; + PyObject *obj = NULL; int ret = 0; - ret = nvmf_get_discovery_log($self, &logp, max_retries); + + ret = nvme_get_log_supported_log_pages(nvme_ctrl_get_fd($self), rae, &log); if (ret < 0) { - discover_err = 1; - return NULL; + Py_RETURN_NONE; } - return logp; + + obj = PyList_New(NVME_LOG_SUPPORTED_LOG_PAGES_MAX); + if (!obj) + Py_RETURN_NONE; + + for (int i = 0; i < NVME_LOG_SUPPORTED_LOG_PAGES_MAX; i++) + PyList_SetItem(obj, i, PyLong_FromLong(le32_to_cpu(log.lid_support[i]))); /* steals ref. */ + + return obj; } - char *__str__() { - static char tmp[1024]; - if ($self->address) - sprintf(tmp, "nvme_ctrl(transport=%s,%s)", $self->transport, - $self->address); - else - sprintf(tmp, "nvme_ctrl(transport=%s)", $self->transport); - return tmp; + PyObject *__str__() { + return $self->address ? + PyUnicode_FromFormat("nvme_ctrl(transport=%s,%s)", $self->transport, $self->address) : + PyUnicode_FromFormat("nvme_ctrl(transport=%s)", $self->transport); } struct ctrl_iter __iter__() { struct ctrl_iter ret = { .subsystem = nvme_ctrl_get_subsystem($self), @@ -656,6 +695,12 @@ struct nvme_ns { const char *nvme_ctrl_state_get(struct nvme_ctrl *c) { return nvme_ctrl_get_state(c); } + const char *nvme_ctrl_dhchap_key_get(struct nvme_ctrl *c) { + return nvme_ctrl_get_dhchap_key(c); + } + const char *nvme_ctrl_dhchap_host_key_get(struct nvme_ctrl *c) { + return nvme_ctrl_get_dhchap_host_key(c); + } %}; %extend nvme_ns { @@ -689,9 +734,6 @@ struct nvme_ns { // We want to swig all the #define and enum from types.h, but none of the structs. -%{ -#include "nvme/types.h" -%} #define __attribute__(x) %rename($ignore, %$isclass) ""; // ignore all classes/structs %rename($ignore, %$isfunction) ""; // ignore all functions diff --git a/meson.build b/meson.build index bd13fe9..5c2e73a 100644 --- a/meson.build +++ b/meson.build @@ -7,8 +7,8 @@ # project( 'libnvme', ['c'], - meson_version: '>= 0.47.0', - version: '1.1', + meson_version: '>= 0.48.0', + version: '1.2', license: 'LGPL-2.1-or-later', default_options: [ 'c_std=gnu99', @@ -18,7 +18,8 @@ project( ] ) -library_version = meson.project_version() + '.0' +maj_min = meson.project_version().split('-rc')[0] +library_version = maj_min + '.0' ################################################################################ cc = meson.get_compiler('c') @@ -51,10 +52,6 @@ conf.set('PROJECT_VERSION', '"@0@"'.format(meson.project_version())) conf.set('SYSCONFDIR', '"@0@"'.format(sysconfdir)) -# Check for libuuid availability -libuuid_dep = dependency('uuid', required: true, fallback : ['uuid', 'uuid_dep']) -conf.set('CONFIG_LIBUUID', libuuid_dep.found(), description: 'Is libuuid required?') - # Check for json-c availability json_c_dep = dependency('json-c', version: '>=0.13', @@ -185,6 +182,29 @@ conf.set10( description: 'Is linux/mctp.h include-able?' ) +if meson.version().version_compare('>= 0.48') + has_fallthrough = cc.has_function_attribute('fallthrough') +else + has_fallthrough = cc.compiles( + '''int main(int argc, char **argv) { + switch(argc) { + case 0: + __attribute__((__fallthrough__)); + case 1: + return 1; + } + return 0; + } + ''', + name: 'has fallthrough') +endif + +if has_fallthrough + conf.set('fallthrough', '__attribute__((__fallthrough__))') +else + conf.set('fallthrough', 'do {} while (0) /* fallthrough */') +endif + ################################################################################ substs = configuration_data() substs.set('NAME', meson.project_name()) @@ -1,39 +1,50 @@ #!/bin/bash usage() { - echo "release.sh: VERSION" + echo "Usage: release.sh [-d] VERSION" echo "" echo "The script does all necessary steps to create a new release." echo "" + echo " -d: no documentation update" + echo "" echo "Note: The version number needs to be exactly" - echo " '^v[\d]+.[\d]+(-rc[0-9]+)?$'" + echo " '^v[\d]+.[\d]+(.[\d\]+(-rc[0-9]+)?$'" echo "" echo "example:" - echo " release.sh v2.1-rc0 # v2.1 release candidate 0 -> sets the project " - echo " # version to '1.1' and sets the tag" - echo " release.sh v2.1-rc1 # v2.1 release canditate 1 -> only sets the tag" - echo " release.sh v2.1 # v2.1 release -> sets the final tag" + echo " release.sh v2.1-rc0 # v2.1 release candidate 0" + echo " release.sh v2.1 # v2.1 release" } -VERSION=$1 +build_doc=true + +while getopts "d" o; do + case "${o}" in + d) + build_doc=false + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +VERSION=${1:-} if [ -z "$VERSION" ] ; then usage exit 1 fi -new_ver="" -rc="" +ver="" -re='^v([0-9]+\.[0-9]+)(-rc[0-9]+)?$' +re='^v([0-9]+\.[0-9]+(\.[0-9]+)?)(-rc[0-9]+)?$' if [[ "$VERSION" =~ $re ]]; then echo "Valid version $VERSION string" - new_ver=${BASH_REMATCH[1]} - rc=${BASH_REMATCH[2]} + # remove the leading 'v' + ver=${VERSION#v} else echo "Invalid version string $VERSION" - echo "" - usage exit 1 fi @@ -58,22 +69,18 @@ else exit 1 fi -./$doc_dir/update-docs.sh -git add $doc_dir -git commit -s -m "Regenerate all documentation" \ - -m "Regenerate documentation for $VERSION release" - # update meson.build -old_ver=$(sed -n "0,/[ \t]\+version: /s/[ \t]\+version: '\([0-9]\+.[0-9]\+\)',$/\1/p" meson.build) -if [ "$old_ver" != "$new_ver" ]; then - # Only update project version once, that is either - # - for the first RC phase or - # - for the release when there was no RC - sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$new_ver\',/" meson.build - git add meson.build +sed -i -e "0,/[ \t]version: /s/\([ \t]version: \).*/\1\'$ver\',/" meson.build +git add meson.build +git commit -s -m "build: Update version to $VERSION" + +if [ "$build_doc" = true ]; then + # update documentation + ./$doc_dir/update-docs.sh + git add $doc_dir + git commit -s -m "doc: Regenerate all docs for $VERSION" fi -git commit -s -m "Release $VERSION" git tag -s -m "Release $VERSION" "$VERSION" git push --dry-run origin "$VERSION"^{}:master tag "$VERSION" diff --git a/src/libnvme-mi.map b/src/libnvme-mi.map index e16b400..53af942 100644 --- a/src/libnvme-mi.map +++ b/src/libnvme-mi.map @@ -1,3 +1,16 @@ +LIBNVME_MI_1_2 { + global: + nvme_mi_admin_get_features; + nvme_mi_admin_set_features; + nvme_mi_admin_ns_mgmt; + nvme_mi_admin_ns_attach; + nvme_mi_admin_format_nvm; + nvme_mi_admin_sanitize_nvm; + nvme_mi_admin_fw_download; + nvme_mi_admin_fw_commit; + nvme_mi_status_to_string; +}; + LIBNVME_MI_1_1 { global: nvme_mi_create_root; diff --git a/src/libnvme.map b/src/libnvme.map index 50a688d..be9bca3 100644 --- a/src/libnvme.map +++ b/src/libnvme.map @@ -1,5 +1,17 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +LIBNVME_1_2 { + global: + nvme_ctrl_get_dhchap_host_key; + nvme_ctrl_set_dhchap_host_key; + nvmf_get_discovery_wargs; + nvme_get_feature_length2; + nvme_ctrl_is_persistent; + nvme_uuid_from_string; + nvme_uuid_to_string; + nvme_uuid_random; +}; + LIBNVME_1_1 { global: nvme_get_version; diff --git a/src/meson.build b/src/meson.build index 3076be6..9e49a07 100644 --- a/src/meson.build +++ b/src/meson.build @@ -28,13 +28,11 @@ if conf.get('CONFIG_JSONC') endif deps = [ - libuuid_dep, json_c_dep, openssl_dep, ] mi_deps = [ - libuuid_dep, libsystemd_dep, ] @@ -68,7 +66,6 @@ pkg.generate(libnvme, libnvme_dep = declare_dependency( include_directories: ['.'], dependencies: [ - libuuid_dep.partial_dependency(compile_args: true, includes: true), json_c_dep.partial_dependency(compile_args: true, includes: true), ], link_with: libnvme, @@ -88,9 +85,6 @@ libnvme_mi = library( libnvme_mi_dep = declare_dependency( include_directories: ['.'], - dependencies: [ - libuuid_dep.partial_dependency(compile_args: true, includes: true), - ], link_with: libnvme_mi, ) @@ -107,9 +101,6 @@ libnvme_mi_test = library( libnvme_mi_test_dep = declare_dependency( include_directories: ['.'], - dependencies: [ - libuuid_dep.partial_dependency(compile_args: true, includes: true), - ], link_with: libnvme_mi_test, ) diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c index b68b7b9..a501f79 100644 --- a/src/nvme/fabrics.c +++ b/src/nvme/fabrics.c @@ -39,7 +39,6 @@ #include "private.h" #define NVMF_HOSTID_SIZE 37 -#define UUID_SIZE 37 /* 1b4e28ba-2fa1-11d2-883f-0016d3cca427 + \0 */ #define NVMF_HOSTNQN_FILE SYSCONFDIR "/nvme/hostnqn" #define NVMF_HOSTID_FILE SYSCONFDIR "/nvme/hostid" @@ -192,13 +191,15 @@ void nvmf_default_config(struct nvme_fabrics_config *cfg) #define MERGE_CFG_OPTION(c, n, o, d) \ if ((c)->o == d) (c)->o = (n)->o +#define MERGE_CFG_OPTION_STR(c, n, o, d) \ + if ((c)->o == d && (n)->o) (c)->o = strdup((n)->o) static struct nvme_fabrics_config *merge_config(nvme_ctrl_t c, const struct nvme_fabrics_config *cfg) { struct nvme_fabrics_config *ctrl_cfg = nvme_ctrl_get_config(c); - MERGE_CFG_OPTION(ctrl_cfg, cfg, host_traddr, NULL); - MERGE_CFG_OPTION(ctrl_cfg, cfg, host_iface, NULL); + MERGE_CFG_OPTION_STR(ctrl_cfg, cfg, host_traddr, NULL); + MERGE_CFG_OPTION_STR(ctrl_cfg, cfg, host_iface, NULL); MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_io_queues, 0); MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_write_queues, 0); MERGE_CFG_OPTION(ctrl_cfg, cfg, nr_poll_queues, 0); @@ -295,7 +296,7 @@ static int add_argument(char **argstr, const char *tok, const char *arg) { char *nstr; - if (!(arg && strcmp(arg, "none"))) + if (!arg || arg[0] == '\0' || !strcmp(arg, "none")) return 0; if (asprintf(&nstr, "%s,%s=%s", *argstr, tok, arg) < 0) { errno = ENOMEM; @@ -465,6 +466,8 @@ static int build_options(nvme_host_t h, nvme_ctrl_t c, char **argstr) hostnqn = nvme_host_get_hostnqn(h); hostid = nvme_host_get_hostid(h); hostkey = nvme_host_get_dhchap_key(h); + if (!hostkey) + hostkey = nvme_ctrl_get_dhchap_host_key(c); ctrlkey = nvme_ctrl_get_dhchap_key(c); if (add_argument(argstr, "transport", transport) || add_argument(argstr, "traddr", @@ -613,14 +616,20 @@ int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, nvme_ctrl_get_trsvcid(c), NULL); if (fc) { + const char *key; + cfg = merge_config(c, nvme_ctrl_get_config(fc)); /* * An authentication key might already been set * in @cfg, so ensure to update @c with the correct * controller key. */ - if (fc->dhchap_key) - nvme_ctrl_set_dhchap_key(c, fc->dhchap_key); + key = nvme_ctrl_get_dhchap_host_key(fc); + if (key) + nvme_ctrl_set_dhchap_host_key(c, key); + key = nvme_ctrl_get_dhchap_key(fc); + if (key) + nvme_ctrl_set_dhchap_key(c, key); } } @@ -734,7 +743,7 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, default: nvme_msg(h->r, LOG_ERR, "unsupported subtype %d\n", e->subtype); - /* fallthrough */ + fallthrough; case NVME_NQN_NVME: nvme_ctrl_set_discovery_ctrl(c, false); break; @@ -772,30 +781,9 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, return NULL; } -static int nvme_discovery_log(int fd, __u32 len, struct nvmf_discovery_log *log, bool rae) -{ - struct nvme_get_log_args args = { - .args_size = sizeof(args), - .fd = fd, - .nsid = NVME_NSID_NONE, - .lsp = NVME_LOG_LSP_NONE, - .lsi = NVME_LOG_LSI_NONE, - .uuidx = NVME_UUID_NONE, - .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, - .result = NULL, - .lid = NVME_LOG_LID_DISCOVER, - .log = log, - .len = len, - .csi = NVME_CSI_NVM, - .rae = rae, - .ot = false, - }; - - return nvme_get_log_page(fd, 4096, &args); -} - -int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, - int max_retries) +static struct nvmf_discovery_log *nvme_discovery_log(nvme_ctrl_t c, + struct nvme_get_log_args *args, + int max_retries) { nvme_root_t r = c->s && c->s->h ? c->s->h->r : NULL; struct nvmf_discovery_log *log = NULL; @@ -803,6 +791,9 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, const char *name = nvme_ctrl_get_name(c); uint64_t genctr, numrec; unsigned int size; + int fd = nvme_ctrl_get_fd(c); + + args->fd = fd; do { size = sizeof(struct nvmf_discovery_log); @@ -813,12 +804,15 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, nvme_msg(r, LOG_ERR, "could not allocate memory for discovery log header\n"); errno = ENOMEM; - return -1; + return NULL; } nvme_msg(r, LOG_DEBUG, "%s: get header (try %d/%d)\n", name, retries, max_retries); - ret = nvme_discovery_log(nvme_ctrl_get_fd(c), size, log, true); + args->rae = true; + args->len = size; + args->log = log; + ret = nvme_get_log_page(fd, 4096, args); if (ret) { nvme_msg(r, LOG_INFO, "%s: discover try %d/%d failed, error %d\n", @@ -841,14 +835,19 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, nvme_msg(r, LOG_ERR, "could not alloc memory for discovery log page\n"); errno = ENOMEM; - return -1; + return NULL; } nvme_msg(r, LOG_DEBUG, "%s: get header and %" PRIu64 " records (length %d genctr %" PRIu64 ")\n", name, numrec, size, genctr); - ret = nvme_discovery_log(nvme_ctrl_get_fd(c), size, log, false); + + args->rae = false; + args->len = size; + args->log = log; + ret = nvme_get_log_page(fd, 4096, args); + if (ret) { nvme_msg(r, LOG_INFO, "%s: discover try %d/%d failed, error %d\n", @@ -861,21 +860,63 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, if (genctr != le64_to_cpu(log->genctr)) { nvme_msg(r, LOG_INFO, "%s: discover genctr mismatch\n", name); errno = EAGAIN; - ret = -1; } else if (numrec != le64_to_cpu(log->numrec)) { nvme_msg(r, LOG_INFO, "%s: could only fetch %" PRIu64 " of %" PRIu64 " records\n", name, numrec, le64_to_cpu(log->numrec)); errno = EBADSLT; - ret = -1; } else { - *logp = log; - return 0; + return log; } out_free_log: free(log); - return ret; + return NULL; +} + +int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, + int max_retries) +{ + struct nvme_get_log_args args = { + .args_size = sizeof(args), + .fd = nvme_ctrl_get_fd(c), + .nsid = NVME_NSID_NONE, + .lsp = NVMF_LOG_DISC_LSP_NONE, + .lsi = NVME_LOG_LSI_NONE, + .uuidx = NVME_UUID_NONE, + .timeout = NVME_DEFAULT_IOCTL_TIMEOUT, + .result = NULL, + .lid = NVME_LOG_LID_DISCOVER, + .log = NULL, + .len = 0, + .csi = NVME_CSI_NVM, + .rae = false, + .ot = false, + }; + *logp = nvme_discovery_log(c, &args, max_retries); + return logp ? 0 : -1; +} + +struct nvmf_discovery_log *nvmf_get_discovery_wargs(struct nvme_get_discovery_args *args) +{ + struct nvme_get_log_args _args = { + .args_size = sizeof(_args), + .fd = nvme_ctrl_get_fd(args->c), + .nsid = NVME_NSID_NONE, + .lsp = args->lsp, + .lsi = NVME_LOG_LSI_NONE, + .uuidx = NVME_UUID_NONE, + .timeout = args->timeout, + .result = args->result, + .lid = NVME_LOG_LID_DISCOVER, + .log = NULL, + .len = 0, + .csi = NVME_CSI_NVM, + .rae = false, + .ot = false, + }; + + return nvme_discovery_log(args->c, &_args, args->max_retries); } #define PATH_UUID_IBM "/proc/device-tree/ibm,partition-uuid" @@ -889,8 +930,8 @@ static int uuid_from_device_tree(char *system_uuid) if (f < 0) return -ENXIO; - memset(system_uuid, 0, UUID_SIZE); - len = read(f, system_uuid, UUID_SIZE - 1); + memset(system_uuid, 0, NVME_UUID_LEN_STRING); + len = read(f, system_uuid, NVME_UUID_LEN_STRING - 1); close(f); if (len < 0) return -ENXIO; @@ -978,7 +1019,7 @@ static int uuid_from_product_uuid(char *system_uuid) system_uuid[0] = '\0'; nread = getline(&line, &len, stream); - if (nread != UUID_SIZE) { + if (nread != NVME_UUID_LEN_STRING) { ret = -ENXIO; goto out; } @@ -986,8 +1027,8 @@ static int uuid_from_product_uuid(char *system_uuid) /* The kernel is handling the byte swapping according DMTF * SMBIOS 3.0 Section 7.2.1 System UUID */ - memcpy(system_uuid, line, UUID_SIZE - 1); - system_uuid[UUID_SIZE - 1] = '\0'; + memcpy(system_uuid, line, NVME_UUID_LEN_STRING - 1); + system_uuid[NVME_UUID_LEN_STRING - 1] = '\0'; ret = 0; @@ -1023,16 +1064,17 @@ char *nvmf_hostnqn_generate() { char *hostnqn; int ret; - char uuid_str[UUID_SIZE]; - uuid_t uuid; + char uuid_str[NVME_UUID_LEN_STRING]; + unsigned char uuid[NVME_UUID_LEN]; ret = uuid_from_dmi(uuid_str); if (ret < 0) { ret = uuid_from_device_tree(uuid_str); } if (ret < 0) { - uuid_generate_random(uuid); - uuid_unparse_lower(uuid, uuid_str); + if (nvme_uuid_random(uuid) < 0) + memset(uuid, 0, NVME_UUID_LEN); + nvme_uuid_to_string(uuid, uuid_str); } if (asprintf(&hostnqn, "nqn.2014-08.org.nvmexpress:uuid:%s", uuid_str) < 0) @@ -1085,7 +1127,7 @@ static __u32 nvmf_get_tel(const char *hostsymname) __u16 len; /* Host ID is mandatory */ - tel += nvmf_exat_size(sizeof(uuid_t)); + tel += nvmf_exat_size(NVME_UUID_LEN_STRING); /* Symbolic name is optional */ len = hostsymname ? strlen(hostsymname) : 0; @@ -1129,8 +1171,8 @@ static void nvmf_fill_die(struct nvmf_ext_die *die, struct nvme_host *h, numexat++; exat = die->exat; exat->exattype = cpu_to_le16(NVMF_EXATTYPE_HOSTID); - exat->exatlen = cpu_to_le16(nvmf_exat_len(sizeof(uuid_t))); - uuid_parse(h->hostid, exat->exatval); + exat->exatlen = cpu_to_le16(nvmf_exat_len(NVME_UUID_LEN)); + nvme_uuid_from_string(h->hostid, exat->exatval); /* Extended Attribute for the Symbolic Name (optional) */ symname_len = h->hostsymname ? strlen(h->hostsymname) : 0; diff --git a/src/nvme/fabrics.h b/src/nvme/fabrics.h index 9e099fe..272bb40 100644 --- a/src/nvme/fabrics.h +++ b/src/nvme/fabrics.h @@ -195,9 +195,14 @@ int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, /** * nvmf_get_discovery_log() - Return the discovery log page - * @c: Discover controller to use + * @c: Discovery controller to use * @logp: Pointer to the log page to be returned - * @max_retries: maximum number of log page entries to be returned + * @max_retries: Number of retries in case of failure + * + * The memory allocated for the log page and returned in @logp + * must be freed by the caller using free(). + * + * Note: Consider using nvmf_get_discovery_wargs() instead. * * Return: 0 on success; on failure -1 is returned and errno is set */ @@ -205,6 +210,41 @@ int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, int max_retries); /** + * struct nvme_get_discovery_args - Arguments for nvmf_get_discovery_wargs() + * @c: Discovery controller + * @args_size: Length of the structure + * @max_retries: Number of retries in case of failure + * @result: The command completion result from CQE dword0 + * @timeout: Timeout in ms (default: NVME_DEFAULT_IOCTL_TIMEOUT) + * @lsp: Log specific field (See enum nvmf_log_discovery_lsp) + */ +struct nvme_get_discovery_args { + nvme_ctrl_t c; + int args_size; + int max_retries; + __u32 *result; + __u32 timeout; + __u8 lsp; +}; + +/** + * nvmf_get_discovery_wargs() - Get the discovery log page with args + * @args: Argument structure + * + * This function is similar to nvmf_get_discovery_log(), but + * takes an extensible @args parameter. @args provides more + * options than nvmf_get_discovery_log(). + * + * 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 free(). + * + * Return: Pointer to the discovery log page (to be freed). NULL + * on failure and errno is set. + */ +struct nvmf_discovery_log *nvmf_get_discovery_wargs(struct nvme_get_discovery_args *args); + +/** * nvmf_hostnqn_generate() - Generate a machine specific host nqn * Returns: An nvm namespace qualified name string based on the machine * identifier, or NULL if not successful. diff --git a/src/nvme/ioctl.h b/src/nvme/ioctl.h index d559b12..af95851 100644 --- a/src/nvme/ioctl.h +++ b/src/nvme/ioctl.h @@ -1461,7 +1461,7 @@ static inline int nvme_get_log_telemetry_host(int fd, __u64 offset, __u32 len, void *log) { struct nvme_get_log_args args = { - .lpo = 0, + .lpo = offset, .result = NULL, .log = log, .args_size = sizeof(args), diff --git a/src/nvme/json.c b/src/nvme/json.c index b42cd51..f0c2ab4 100644 --- a/src/nvme/json.c +++ b/src/nvme/json.c @@ -95,6 +95,9 @@ static void json_parse_port(nvme_subsystem_t s, struct json_object *port_obj) if (!c) return; json_update_attributes(c, port_obj); + attr_obj = json_object_object_get(port_obj, "dhchap_key"); + if (attr_obj) + nvme_ctrl_set_dhchap_host_key(c, json_object_get_string(attr_obj)); attr_obj = json_object_object_get(port_obj, "dhchap_ctrl_key"); if (attr_obj) nvme_ctrl_set_dhchap_key(c, json_object_get_string(attr_obj)); @@ -155,6 +158,43 @@ static void json_parse_host(nvme_root_t r, struct json_object *host_obj) } } +static struct json_object *parse_json(nvme_root_t r, int fd) +{ + char buf[JSON_FILE_BUF_SIZE]; + struct json_object *obj = NULL; + struct printbuf *pb; + json_tokener *tok = NULL; + int ret; + + pb = printbuf_new(); + if (!pb) + return NULL; + + while ((ret = read(fd, buf, JSON_FILE_BUF_SIZE)) > 0) + printbuf_memappend(pb, buf, ret); + + if (ret < 0) + goto out; + + tok = json_tokener_new_ex(JSON_TOKENER_DEFAULT_DEPTH); + if (!tok) + goto out; + + /* Enforce correctly formatted JSON */ + tok->flags = JSON_TOKENER_STRICT; + + obj = json_tokener_parse_ex(tok, pb->buf, printbuf_length(pb)); + if (!obj) + nvme_msg(r, LOG_DEBUG, "JSON parsing failed: %s\n", + json_util_get_last_err()); +out: + if (tok) + json_tokener_free(tok); + printbuf_free(pb); + + return obj; +} + int json_read_config(nvme_root_t r, const char *config_file) { struct json_object *json_root, *host_obj; @@ -166,12 +206,16 @@ int json_read_config(nvme_root_t r, const char *config_file) config_file, strerror(errno)); return fd; } - json_root = json_object_from_fd(fd); + json_root = parse_json(r, fd); + close(fd); if (!json_root) { - nvme_msg(r, LOG_DEBUG, "Failed to read %s, %s\n", - config_file, json_util_get_last_err()); errno = EPROTO; - close(fd); + return -1; + } + if (!json_object_is_type(json_root, json_type_array)) { + nvme_msg(r, LOG_DEBUG, "Wrong format, expected array\n"); + json_object_put(json_root); + errno = EPROTO; return -1; } for (h = 0; h < json_object_array_length(json_root); h++) { @@ -180,7 +224,6 @@ int json_read_config(nvme_root_t r, const char *config_file) json_parse_host(r, host_obj); } json_object_put(json_root); - close(fd); return 0; } @@ -222,6 +265,10 @@ static void json_update_port(struct json_object *ctrl_array, nvme_ctrl_t c) if (value) json_object_object_add(port_obj, "trsvcid", json_object_new_string(value)); + value = nvme_ctrl_get_dhchap_host_key(c); + if (value) + json_object_object_add(port_obj, "dhchap_key", + json_object_new_string(value)); value = nvme_ctrl_get_dhchap_key(c); if (value) json_object_object_add(port_obj, "dhchap_ctrl_key", @@ -365,6 +412,10 @@ static void json_dump_ctrl(struct json_object *ctrl_array, nvme_ctrl_t c) if (value) json_object_object_add(ctrl_obj, "trsvcid", json_object_new_string(value)); + value = nvme_ctrl_get_dhchap_host_key(c); + if (value) + json_object_object_add(ctrl_obj, "dhchap_key", + json_object_new_string(value)); value = nvme_ctrl_get_dhchap_key(c); if (value) json_object_object_add(ctrl_obj, "dhchap_ctrl_key", diff --git a/src/nvme/mi-mctp.c b/src/nvme/mi-mctp.c index ae604f2..86f5df6 100644 --- a/src/nvme/mi-mctp.c +++ b/src/nvme/mi-mctp.c @@ -179,13 +179,15 @@ struct nvme_mi_msg_resp_mpr { * populate the worst-case expected processing time, given in milliseconds. */ static bool nvme_mi_mctp_resp_is_mpr(struct nvme_mi_resp *resp, size_t len, - unsigned int *mpr_time) + __le32 mic, unsigned int *mpr_time) { + struct nvme_mi_admin_resp_hdr *admin_msg; struct nvme_mi_msg_resp_mpr *msg; - __le32 mic; + size_t clen; __u32 crc; - if (len != sizeof(*msg) + sizeof(mic)) + /* We need at least the minimal header plus checksum */ + if (len < sizeof(*msg) + sizeof(mic)) return false; msg = (struct nvme_mi_msg_resp_mpr *)resp->hdr; @@ -193,22 +195,42 @@ static bool nvme_mi_mctp_resp_is_mpr(struct nvme_mi_resp *resp, size_t len, if (msg->status != NVME_MI_RESP_MPR) return false; - /* We can't use verify_resp_mic here, as the response structure has - * not been laid-out properly in resp yet (this is deferred until - * we have the actual response). + /* Find and verify the MIC from the response, which may not be laid out + * in resp as we expect. We have to preserve resp->hdr_len and + * resp->data_len, as we will need them for the eventual reply message. + * Because of that, we can't use verify_resp_mic here. * - * We know the data is a fixed size, and linear in the hdr buf, so - * calculation is fairly simple. We do need to find the MIC data - * though, which could either be in the header buf (if the original - * header was larger than the minimal header message), or the start of - * the data buf (otherwise). + * If the packet was at the expected response size, then mic will + * be set already; if not, find it within the header/data buffers. + */ + + /* Devices may send a MPR response as a full-sized Admin response, + * rather than the minimal MI-only header. Allow this, but only if the + * type indicates admin, and the allocated response header is the + * correct size for an Admin response. + */ + if (((msg->hdr.nmp >> 3) & 0xf) == NVME_MI_MT_ADMIN && + len == sizeof(*admin_msg) + sizeof(mic) && + resp->hdr_len == sizeof(*admin_msg)) { + if (resp->data_len) + mic = *(__le32 *)resp->data; + } else if (len == sizeof(*msg) + sizeof(mic)) { + if (resp->hdr_len > sizeof(*msg)) + mic = *(__le32 *)(msg + 1); + else if (resp->data_len) + mic = *(__le32 *)(resp->data); + } else { + return false; + } + + /* Since our response is just a header, we're guaranteed to have + * all data in resp->hdr. The response may be shorter than the expected + * header though, so clamp to len. */ - if (resp->hdr_len > sizeof(*msg)) - mic = *(__le32 *)(msg + 1); - else - mic = *(__le32 *)(resp->data); + len -= sizeof(mic); + clen = len < resp->hdr_len ? len : resp->hdr_len; - crc = ~nvme_mi_crc32_update(0xffffffff, msg, sizeof(*msg)); + crc = ~nvme_mi_crc32_update(0xffffffff, resp->hdr, clen); if (le32_to_cpu(mic) != crc) return false; @@ -369,7 +391,7 @@ retry: * header fields. However, we need to do this in the transport in order * to keep the tag allocated and retry the recvmsg */ - if (nvme_mi_mctp_resp_is_mpr(resp, len, &mpr_time)) { + if (nvme_mi_mctp_resp_is_mpr(resp, len, mic, &mpr_time)) { nvme_msg(ep->root, LOG_DEBUG, "Received More Processing Required, waiting for response\n"); @@ -493,6 +515,7 @@ nvme_mi_ep_t nvme_mi_open_mctp(nvme_root_t root, unsigned int netid, __u8 eid) err_free_ep: errno_save = errno; free(ep); + free(mctp); errno = errno_save; return NULL; } diff --git a/src/nvme/mi.c b/src/nvme/mi.c index 181a16c..6ff0a6f 100644 --- a/src/nvme/mi.c +++ b/src/nvme/mi.c @@ -11,6 +11,7 @@ #include <stdlib.h> #include <stdio.h> +#include <ccan/array_size/array_size.h> #include <ccan/endian/endian.h> #include "log.h" @@ -295,6 +296,52 @@ static void nvme_mi_admin_init_resp(struct nvme_mi_resp *resp, resp->hdr_len = sizeof(*hdr); } +static int nvme_mi_admin_parse_status(struct nvme_mi_resp *resp, __u32 *result) +{ + struct nvme_mi_admin_resp_hdr *admin_hdr; + struct nvme_mi_msg_resp *resp_hdr; + __u32 nvme_status; + __u32 nvme_result; + + /* we have a few different sources of "result" here: the status header + * in the MI response, the cdw3 status field, and (command specific) + * return values in cdw0. The latter is returned in the result pointer, + * the former two generate return values here + */ + + if (resp->hdr_len < sizeof(*resp_hdr)) { + errno = -EPROTO; + return -1; + } + resp_hdr = (struct nvme_mi_msg_resp *)resp->hdr; + + /* If we have a MI error, we can't be sure there's an admin header + * following; return just the MI status, with the status type + * indicator of MI. + */ + if (resp_hdr->status) + return resp_hdr->status | + (NVME_STATUS_TYPE_MI << NVME_STATUS_TYPE_SHIFT); + + /* We shouldn't hit this, as we'd have an error reported earlier. + * However, for pointer safety, ensure we have a full admin header + */ + if (resp->hdr_len < sizeof(*admin_hdr)) { + errno = EPROTO; + return -1; + } + + admin_hdr = (struct nvme_mi_admin_resp_hdr *)resp->hdr; + nvme_result = le32_to_cpu(admin_hdr->cdw0); + nvme_status = le32_to_cpu(admin_hdr->cdw3) >> 16; + + /* the result pointer, optionally stored if the caller needs it */ + if (result) + *result = nvme_result; + + return nvme_status; +} + int nvme_mi_admin_xfer(nvme_mi_ctrl_t ctrl, struct nvme_mi_admin_req_hdr *admin_req, size_t req_data_size, @@ -343,6 +390,7 @@ int nvme_mi_admin_xfer(nvme_mi_ctrl_t ctrl, admin_req->hdr.type = NVME_MI_MSGTYPE_NVME; admin_req->hdr.nmp = (NVME_MI_ROR_REQ << 7) | (NVME_MI_MT_ADMIN << 3); + admin_req->ctrl_id = cpu_to_le16(ctrl->id); memset(&req, 0, sizeof(req)); req.hdr = &admin_req->hdr; req.hdr_len = sizeof(*admin_req); @@ -414,11 +462,9 @@ int nvme_mi_admin_identify_partial(nvme_mi_ctrl_t ctrl, if (rc) return rc; - if (resp_hdr.status) - return resp_hdr.status; - - if (args->result) - *args->result = le32_to_cpu(resp_hdr.cdw0); + rc = nvme_mi_admin_parse_status(&resp, args->result); + if (rc) + return rc; /* callers will expect a full response; if the data buffer isn't * fully valid, return an error */ @@ -452,7 +498,7 @@ static int __nvme_mi_admin_get_log(nvme_mi_ctrl_t ctrl, return -1; } - if (offset < 0 || offset >= len) { + if (offset < 0 || offset >= args->len || offset + len > args->len) { errno = EINVAL; return -1; } @@ -489,12 +535,11 @@ static int __nvme_mi_admin_get_log(nvme_mi_ctrl_t ctrl, if (rc) return rc; - if (resp_hdr.status) - return resp_hdr.status; - - *lenp = resp.data_len; + rc = nvme_mi_admin_parse_status(&resp, args->result); + if (!rc) + *lenp = resp.data_len; - return 0; + return rc; } int nvme_mi_admin_get_log(nvme_mi_ctrl_t ctrl, struct nvme_get_log_args *args) @@ -580,13 +625,7 @@ int nvme_mi_admin_security_send(nvme_mi_ctrl_t ctrl, if (rc) return rc; - if (resp_hdr.status) - return resp_hdr.status; - - if (args->result) - *args->result = le32_to_cpu(resp_hdr.cdw0); - - return 0; + return nvme_mi_admin_parse_status(&resp, args->result); } int nvme_mi_admin_security_recv(nvme_mi_ctrl_t ctrl, @@ -632,17 +671,306 @@ int nvme_mi_admin_security_recv(nvme_mi_ctrl_t ctrl, if (rc) return rc; - if (resp_hdr.status) - return resp_hdr.status; + rc = nvme_mi_admin_parse_status(&resp, args->result); + if (rc) + return rc; + + args->data_len = resp.data_len; + + return 0; +} + +int nvme_mi_admin_get_features(nvme_mi_ctrl_t ctrl, + struct nvme_get_features_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_get_features); + + req_hdr.cdw1 = cpu_to_le32(args->nsid); + req_hdr.cdw10 = cpu_to_le32((args->sel & 0x7) << 8 | args->fid); + req_hdr.cdw14 = cpu_to_le32(args->uuidx & 0x7f); + req_hdr.cdw11 = cpu_to_le32(args->cdw11); + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + resp.data = args->data; + resp.data_len = args->data_len; - if (args->result) - *args->result = resp_hdr.cdw0; + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + rc = nvme_mi_admin_parse_status(&resp, args->result); + if (rc) + return rc; + + args->data_len = resp.data_len; + + return 0; +} + +int nvme_mi_admin_set_features(nvme_mi_ctrl_t ctrl, + struct nvme_set_features_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_set_features); + + req_hdr.cdw1 = cpu_to_le32(args->nsid); + req_hdr.cdw10 = cpu_to_le32((args->save ? 1 : 0) << 31 | + (args->fid & 0xff)); + req_hdr.cdw14 = cpu_to_le32(args->uuidx & 0x7f); + req_hdr.cdw11 = cpu_to_le32(args->cdw11); + req_hdr.cdw12 = cpu_to_le32(args->cdw12); + req_hdr.cdw13 = cpu_to_le32(args->cdw13); + req_hdr.cdw15 = cpu_to_le32(args->cdw15); + + req.data_len = args->data_len; + req.data = args->data; + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + rc = nvme_mi_admin_parse_status(&resp, args->result); + if (rc) + return rc; args->data_len = resp.data_len; return 0; } +int nvme_mi_admin_ns_mgmt(nvme_mi_ctrl_t ctrl, + struct nvme_ns_mgmt_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_ns_mgmt); + + req_hdr.cdw1 = cpu_to_le32(args->nsid); + req_hdr.cdw10 = cpu_to_le32(args->sel & 0xf); + req_hdr.cdw11 = cpu_to_le32(args->csi << 24); + if (args->ns) { + req.data = args->ns; + req.data_len = sizeof(*args->ns); + req_hdr.dlen = cpu_to_le32(sizeof(*args->ns)); + req_hdr.flags = 0x1; + } + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, args->result); +} + +int nvme_mi_admin_ns_attach(nvme_mi_ctrl_t ctrl, + struct nvme_ns_attach_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_ns_attach); + + req_hdr.cdw1 = cpu_to_le32(args->nsid); + req_hdr.cdw10 = cpu_to_le32(args->sel & 0xf); + req.data = args->ctrlist; + req.data_len = sizeof(*args->ctrlist); + req_hdr.dlen = cpu_to_le32(sizeof(*args->ctrlist)); + req_hdr.flags = 0x1; + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, args->result); +} + +int nvme_mi_admin_fw_download(nvme_mi_ctrl_t ctrl, + struct nvme_fw_download_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + if (args->data_len & 0x3) + return -EINVAL; + + if (args->offset & 0x3) + return -EINVAL; + + if (!args->data_len) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_fw_download); + + req_hdr.cdw10 = cpu_to_le32((args->data_len >> 2) - 1); + req_hdr.cdw11 = cpu_to_le32(args->offset >> 2); + req.data = args->data; + req.data_len = args->data_len; + req_hdr.dlen = cpu_to_le32(args->data_len); + req_hdr.flags = 0x1; + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, NULL); +} + +int nvme_mi_admin_fw_commit(nvme_mi_ctrl_t ctrl, + struct nvme_fw_commit_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_fw_commit); + + req_hdr.cdw10 = cpu_to_le32(((args->bpid & 0x1) << 31) | + ((args->action & 0x7) << 3) | + ((args->slot & 0x7) << 0)); + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, NULL); +} + +int nvme_mi_admin_format_nvm(nvme_mi_ctrl_t ctrl, + struct nvme_format_nvm_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_format_nvm); + + req_hdr.cdw1 = cpu_to_le32(args->nsid); + req_hdr.cdw10 = cpu_to_le32(((args->lbafu & 0x3) << 12) + | ((args->ses & 0x7) << 9) + | ((args->pil & 0x1) << 8) + | ((args->pi & 0x7) << 5) + | ((args->mset & 0x1) << 4) + | ((args->lbaf & 0xf) << 0)); + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, args->result); +} + +int nvme_mi_admin_sanitize_nvm(nvme_mi_ctrl_t ctrl, + struct nvme_sanitize_nvm_args *args) +{ + struct nvme_mi_admin_resp_hdr resp_hdr; + struct nvme_mi_admin_req_hdr req_hdr; + struct nvme_mi_resp resp; + struct nvme_mi_req req; + int rc; + + if (args->args_size < sizeof(*args)) + return -EINVAL; + + nvme_mi_admin_init_req(&req, &req_hdr, ctrl->id, + nvme_admin_sanitize_nvm); + + req_hdr.cdw10 = cpu_to_le32(((args->nodas ? 1 : 0) << 9) + | ((args->oipbp ? 1 : 0) << 8) + | ((args->owpass & 0xf) << 4) + | ((args->ause ? 1 : 0) << 3) + | ((args->sanact & 0x7) << 0)); + req_hdr.cdw11 = cpu_to_le32(args->ovrpat); + + nvme_mi_calc_req_mic(&req); + + nvme_mi_admin_init_resp(&resp, &resp_hdr); + + rc = nvme_mi_submit(ctrl->ep, &req, &resp); + if (rc) + return rc; + + return nvme_mi_admin_parse_status(&resp, args->result); +} + static int nvme_mi_read_data(nvme_mi_ep_t ep, __u32 cdw0, void *data, size_t *data_len) { @@ -955,3 +1283,37 @@ nvme_mi_ctrl_t nvme_mi_next_ctrl(nvme_mi_ep_t ep, nvme_mi_ctrl_t c) { return c ? list_next(&ep->controllers, c, ep_entry) : NULL; } + + +static const char *const mi_status[] = { + [NVME_MI_RESP_MPR] = "More Processing Required: The command message is in progress and requires more time to complete processing", + [NVME_MI_RESP_INTERNAL_ERR] = "Internal Error: The request message could not be processed due to a vendor-specific error", + [NVME_MI_RESP_INVALID_OPCODE] = "Invalid Command Opcode", + [NVME_MI_RESP_INVALID_PARAM] = "Invalid Parameter", + [NVME_MI_RESP_INVALID_CMD_SIZE] = "Invalid Command Size: The size of the message body of the request was different than expected", + [NVME_MI_RESP_INVALID_INPUT_SIZE] = "Invalid Command Input Data Size: The command requires data and contains too much or too little data", + [NVME_MI_RESP_ACCESS_DENIED] = "Access Denied. Processing prohibited due to a vendor-specific mechanism of the Command and Feature lockdown function", + [NVME_MI_RESP_VPD_UPDATES_EXCEEDED] = "VPD Updates Exceeded", + [NVME_MI_RESP_PCIE_INACCESSIBLE] = "PCIe Inaccessible. The PCIe functionality is not available at this time", + [NVME_MI_RESP_MEB_SANITIZED] = "Management Endpoint Buffer Cleared Due to Sanitize", + [NVME_MI_RESP_ENC_SERV_FAILURE] = "Enclosure Services Failure", + [NVME_MI_RESP_ENC_SERV_XFER_FAILURE] = "Enclosure Services Transfer Failure: Communication with the Enclosure Services Process has failed", + [NVME_MI_RESP_ENC_FAILURE] = "An unrecoverable enclosure failure has been detected by the Enclosuer Services Process", + [NVME_MI_RESP_ENC_XFER_REFUSED] = "Enclosure Services Transfer Refused: The NVM Subsystem or Enclosure Services Process indicated an error or an invalid format in communication", + [NVME_MI_RESP_ENC_FUNC_UNSUP] = "Unsupported Enclosure Function: An SES Send command has been attempted to a simple Subenclosure", + [NVME_MI_RESP_ENC_SERV_UNAVAIL] = "Enclosure Services Unavailable: The NVM Subsystem or Enclosure Services Process has encountered an error but may become available again", + [NVME_MI_RESP_ENC_DEGRADED] = "Enclosure Degraded: A noncritical failure has been detected by the Enclosure Services Process", + [NVME_MI_RESP_SANITIZE_IN_PROGRESS] = "Sanitize In Progress: The requested command is prohibited while a sanitize operation is in progress", +}; + +/* kept in mi.c while we have a split libnvme/libnvme-mi; consider moving + * to utils.c (with nvme_status_to_string) if we ever merge. */ +const char *nvme_mi_status_to_string(int status) +{ + const char *s = "Unknown status"; + + if (status < ARRAY_SIZE(mi_status) && mi_status[status]) + s = mi_status[status]; + + return s; +} diff --git a/src/nvme/mi.h b/src/nvme/mi.h index a7ed240..ab4216d 100644 --- a/src/nvme/mi.h +++ b/src/nvme/mi.h @@ -367,6 +367,20 @@ struct nvme_mi_admin_resp_hdr { __le32 cdw0, cdw1, cdw3; } __attribute__((packed)); +/** + * nvme_mi_status_to_string() - return a string representation of the MI + * status. + * @status: MI response status + * + * Gives a string description of @status, 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 nvme_status_get_value(). + * + * Returned string is const, and should not be free()ed. + * + * Returns: A string representing the status value + */ +const char *nvme_mi_status_to_string(int status); /** * nvme_mi_create_root() - Create top-level MI (root) handle. @@ -601,7 +615,8 @@ nvme_root_t nvme_mi_scan_mctp(void); * so, all existing controller objects will be freed - the caller must not * hold a reference to those across this call. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &nvme_mi_for_each_ctrl */ @@ -652,7 +667,8 @@ char *nvme_mi_endpoint_desc(nvme_mi_ep_t ep); * Retrieves the Subsystem information - number of external ports and * NVMe version information. See &struct nvme_mi_read_nvm_ss_info. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_read_mi_data_subsys(nvme_mi_ep_t ep, struct nvme_mi_read_nvm_ss_info *s); @@ -670,7 +686,8 @@ int nvme_mi_mi_read_mi_data_subsys(nvme_mi_ep_t ep, * * See &struct nvme_mi_read_port_info. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_read_mi_data_port(nvme_mi_ep_t ep, __u8 portid, struct nvme_mi_read_port_info *p); @@ -687,7 +704,8 @@ int nvme_mi_mi_read_mi_data_port(nvme_mi_ep_t ep, __u8 portid, * * See &struct nvme_ctrl_list. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_read_mi_data_ctrl_list(nvme_mi_ep_t ep, __u8 start_ctrlid, struct nvme_ctrl_list *list); @@ -704,7 +722,8 @@ int nvme_mi_mi_read_mi_data_ctrl_list(nvme_mi_ep_t ep, __u8 start_ctrlid, * * See &struct nvme_mi_read_ctrl_info. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_read_mi_data_ctrl(nvme_mi_ep_t ep, __u16 ctrl_id, struct nvme_mi_read_ctrl_info *ctrl); @@ -722,7 +741,8 @@ int nvme_mi_mi_read_mi_data_ctrl(nvme_mi_ep_t ep, __u16 ctrl_id, * * See &struct nvme_mi_nvm_ss_health_status. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_subsystem_health_status_poll(nvme_mi_ep_t ep, bool clear, struct nvme_mi_nvm_ss_health_status *nshds); @@ -744,7 +764,8 @@ int nvme_mi_mi_subsystem_health_status_poll(nvme_mi_ep_t ep, bool clear, * * See &enum nvme_mi_config_id for identifiers. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_config_get(nvme_mi_ep_t ep, __u32 dw0, __u32 dw1, __u32 *nmresp); @@ -761,7 +782,8 @@ int nvme_mi_mi_config_get(nvme_mi_ep_t ep, __u32 dw0, __u32 dw1, * * See &enum nvme_mi_config_id for identifiers. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_mi_config_set(nvme_mi_ep_t ep, __u32 dw0, __u32 dw1); @@ -775,7 +797,8 @@ int nvme_mi_mi_config_set(nvme_mi_ep_t ep, __u32 dw0, __u32 dw1); * the port specified in @port. On success, populates @freq with the port * frequency * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ static inline int nvme_mi_mi_config_get_smbus_freq(nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq *freq) @@ -787,7 +810,7 @@ static inline int nvme_mi_mi_config_get_smbus_freq(nvme_mi_ep_t ep, __u8 port, rc = nvme_mi_mi_config_get(ep, dw0, 0, &tmp); if (!rc) - *freq = tmp & 0x3; + *freq = (enum nvme_mi_config_smbus_freq)(tmp & 0x3); return rc; } @@ -803,7 +826,8 @@ static inline int nvme_mi_mi_config_get_smbus_freq(nvme_mi_ep_t ep, __u8 port, * See &struct nvme_mi_read_port_info for the maximum supported SMBus frequency * for the port. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ static inline int nvme_mi_mi_config_set_smbus_freq(nvme_mi_ep_t ep, __u8 port, enum nvme_mi_config_smbus_freq freq) @@ -828,7 +852,8 @@ static inline int nvme_mi_mi_config_set_smbus_freq(nvme_mi_ep_t ep, __u8 port, * See &nvme_mi_mi_subsystem_health_status_poll(), &enum nvme_mi_ccs for * values in @mask. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ static inline int nvme_mi_mi_config_set_health_status_change(nvme_mi_ep_t ep, __u32 mask) @@ -852,7 +877,8 @@ static inline int nvme_mi_mi_config_set_health_status_change(nvme_mi_ep_t ep, * Some controllers may also use this as the maximum receive unit size, and * may not accept MCTP messages larger than the configured MTU. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ static inline int nvme_mi_mi_config_get_mctp_mtu(nvme_mi_ep_t ep, __u8 port, __u16 *mtu) @@ -882,7 +908,8 @@ static inline int nvme_mi_mi_config_get_mctp_mtu(nvme_mi_ep_t ep, __u8 port, * this value, you will likely need to change the MTU of the local MCTP * interface(s) to match. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ static inline int nvme_mi_mi_config_set_mctp_mtu(nvme_mi_ep_t ep, __u8 port, __u16 mtu) @@ -918,7 +945,8 @@ static inline int nvme_mi_mi_config_set_mctp_mtu(nvme_mi_ep_t ep, __u8 port, * * See: &struct nvme_mi_admin_req_hdr and &struct nvme_mi_admin_resp_hdr. * - * Return: 0 on success, non-zero on failure. + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise.. */ int nvme_mi_admin_xfer(nvme_mi_ctrl_t ctrl, struct nvme_mi_admin_req_hdr *admin_req, @@ -949,7 +977,8 @@ int nvme_mi_admin_xfer(nvme_mi_ctrl_t ctrl, * of this. If the type of your identify command is standardized but not * yet supported by libnvme-mi, please contact the maintainers. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_identify_args */ @@ -969,7 +998,8 @@ int nvme_mi_admin_identify_partial(nvme_mi_ctrl_t ctrl, * Will return an error if the length of the response data (from the * controller) is not a full &NVME_IDENTIFY_DATA_SIZE. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_identify_args */ @@ -997,7 +1027,8 @@ static inline int nvme_mi_admin_identify(nvme_mi_ctrl_t ctrl, * Will return an error if the length of the response data (from the * controller) is not a full &NVME_IDENTIFY_DATA_SIZE. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. */ static inline int nvme_mi_admin_identify_cns_nsid(nvme_mi_ctrl_t ctrl, enum nvme_identify_cns cns, @@ -1019,6 +1050,69 @@ static inline int nvme_mi_admin_identify_cns_nsid(nvme_mi_ctrl_t ctrl, } /** + * nvme_mi_admin_identify_ns() - Perform an Admin identify command for a + * namespace + * @ctrl: Controller to process identify command + * @nsid: namespace ID + * @ns: Namespace identification to populate + * + * Perform an Identify (namespace) command, setting the namespace id data + * in @ns. The namespace is expected to active and allocated. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_identify_ns(nvme_mi_ctrl_t ctrl, __u32 nsid, + struct nvme_id_ns *ns) +{ + return nvme_mi_admin_identify_cns_nsid(ctrl, NVME_IDENTIFY_CNS_NS, + nsid, ns); +} + +/** + * nvme_mi_admin_identify_ns_descs() - Perform an Admin identify Namespace + * Identification Descriptor list command for a namespace + * @ctrl: Controller to process identify command + * @nsid: Namespace ID + * @descs: Namespace Identification Descriptor list to populate + * + * Perform an Identify namespace identification description list command, + * setting the namespace identification description list in @descs + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_identify_ns_descs(nvme_mi_ctrl_t ctrl, + __u32 nsid, + struct nvme_ns_id_desc *descs) +{ + return nvme_mi_admin_identify_cns_nsid(ctrl, NVME_IDENTIFY_CNS_NS_DESC_LIST, + nsid, descs); +} + +/** + * nvme_mi_admin_identify_allocated_ns() - Perform an Admin identify command + * for an allocated namespace + * @ctrl: Controller to process identify command + * @nsid: namespace ID + * @ns: Namespace identification to populate + * + * Perform an Identify (namespace) command, setting the namespace id data + * in @ns. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_identify_allocated_ns(nvme_mi_ctrl_t ctrl, + __u32 nsid, + struct nvme_id_ns *ns) +{ + return nvme_mi_admin_identify_cns_nsid(ctrl, + NVME_IDENTIFY_CNS_ALLOCATED_NS, + nsid, ns); +} + +/** * nvme_mi_admin_identify_ctrl() - Perform an Admin identify for a controller * @ctrl: Controller to process identify command * @id: Controller identify data to populate @@ -1030,7 +1124,8 @@ static inline int nvme_mi_admin_identify_cns_nsid(nvme_mi_ctrl_t ctrl, * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @id will be * fully populated on success. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_id_ctrl */ @@ -1055,7 +1150,8 @@ static inline int nvme_mi_admin_identify_ctrl(nvme_mi_ctrl_t ctrl, * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @id will be * fully populated on success. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_ctrl_list */ @@ -1079,6 +1175,198 @@ static inline int nvme_mi_admin_identify_ctrl_list(nvme_mi_ctrl_t ctrl, } /** + * nvme_mi_admin_identify_nsid_ctrl_list() - Perform an Admin identify for a + * controller list with specific namespace ID + * @ctrl: Controller to process identify command + * @nsid: Namespace identifier + * @cntid: Controller ID to specify list start + * @list: List data to populate + * + * Perform an Identify command, for the controller list for @nsid, starting + * with IDs greater than or equal to @cntid. + * + * Will return an error if the length of the response data (from the + * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @id will be + * fully populated on success. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + * + * See: &struct nvme_ctrl_list + */ +static inline int nvme_mi_admin_identify_nsid_ctrl_list(nvme_mi_ctrl_t ctrl, + __u32 nsid, __u16 cntid, + struct nvme_ctrl_list *list) +{ + struct nvme_identify_args args = { + .result = NULL, + .data = list, + .args_size = sizeof(args), + .cns = NVME_IDENTIFY_CNS_CTRL_LIST, + .csi = NVME_CSI_NVM, + .nsid = nsid, + .cntid = cntid, + .cns_specific_id = NVME_CNSSPECID_NONE, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_identify(ctrl, &args); +} + +/** + * nvme_mi_admin_identify_allocated_ns_list() - Perform an Admin identify for + * an allocated namespace list + * @ctrl: Controller to process identify command + * @nsid: Namespace ID to specify list start + * @list: List data to populate + * + * Perform an Identify command, for the allocated namespace list starting with + * IDs greater than or equal to @nsid. Specify &NVME_NSID_NONE for the start + * of the list. + * + * Will return an error if the length of the response data (from the + * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @list will be + * be fully populated on success. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + * + * See: &struct nvme_ns_list + */ +static inline int nvme_mi_admin_identify_allocated_ns_list(nvme_mi_ctrl_t ctrl, + __u32 nsid, + struct nvme_ns_list *list) +{ + struct nvme_identify_args args = { + .result = NULL, + .data = list, + .args_size = sizeof(args), + .cns = NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST, + .csi = NVME_CSI_NVM, + .nsid = nsid, + .cns_specific_id = NVME_CNSSPECID_NONE, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_identify(ctrl, &args); +} + +/** + * nvme_mi_admin_identify_active_ns_list() - Perform an Admin identify for an + * active namespace list + * @ctrl: Controller to process identify command + * @nsid: Namespace ID to specify list start + * @list: List data to populate + * + * Perform an Identify command, for the active namespace list starting with + * IDs greater than or equal to @nsid. Specify &NVME_NSID_NONE for the start + * of the list. + * + * Will return an error if the length of the response data (from the + * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @list will be + * be fully populated on success. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + * + * See: &struct nvme_ns_list + */ +static inline int nvme_mi_admin_identify_active_ns_list(nvme_mi_ctrl_t ctrl, + __u32 nsid, + struct nvme_ns_list *list) +{ + struct nvme_identify_args args = { + .result = NULL, + .data = list, + .args_size = sizeof(args), + .cns = NVME_IDENTIFY_CNS_NS_ACTIVE_LIST, + .csi = NVME_CSI_NVM, + .nsid = nsid, + .cns_specific_id = NVME_CNSSPECID_NONE, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_identify(ctrl, &args); +} + +/** + * nvme_mi_admin_identify_primary_ctrl() - Perform an Admin identify for + * primary controller capabilities data structure. + * @ctrl: Controller to process identify command + * @cntid: Controller ID to specify + * @cap: Primary Controller Capabilities data structure to populate + * + * Perform an Identify command to get the Primary Controller Capabilities data + * for the controller specified by @cntid + * + * Will return an error if the length of the response data (from the + * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @cap will be + * be fully populated on success. + * + * Return: 0 on success, non-zero on failure + * + * See: &struct nvme_primary_ctrl_cap + */ +static inline int nvme_mi_admin_identify_primary_ctrl(nvme_mi_ctrl_t ctrl, + __u16 cntid, + struct nvme_primary_ctrl_cap *cap) +{ + struct nvme_identify_args args = { + .result = NULL, + .data = cap, + .args_size = sizeof(args), + .cns = NVME_IDENTIFY_CNS_PRIMARY_CTRL_CAP, + .csi = NVME_CSI_NVM, + .nsid = NVME_NSID_NONE, + .cntid = cntid, + .cns_specific_id = NVME_CNSSPECID_NONE, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_identify(ctrl, &args); +} + +/** + * nvme_mi_admin_identify_secondary_ctrl_list() - Perform an Admin identify for + * a secondary controller list. + * @ctrl: Controller to process identify command + * @nsid: Namespace ID to specify list start + * @cntid: Controller ID to specify list start + * @list: List data to populate + * + * Perform an Identify command, for the secondary controllers associated with + * the current primary controller. Only entries with IDs greater than or + * equal to @cntid are returned. + * + * Will return an error if the length of the response data (from the + * controller) is not a full &NVME_IDENTIFY_DATA_SIZE, so @list will be + * be fully populated on success. + * + * Return: 0 on success, non-zero on failure + * + * See: &struct nvme_secondary_ctrl_list + */ +static inline int nvme_mi_admin_identify_secondary_ctrl_list(nvme_mi_ctrl_t ctrl, + __u32 nsid, + __u16 cntid, + struct nvme_secondary_ctrl_list *list) +{ + struct nvme_identify_args args = { + .result = NULL, + .data = list, + .args_size = sizeof(args), + .cns = NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST, + .csi = NVME_CSI_NVM, + .nsid = nsid, + .cntid = cntid, + .cns_specific_id = NVME_CNSSPECID_NONE, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_identify(ctrl, &args); +} + +/** * nvme_mi_admin_get_log() - Retrieve log page data from controller * @ctrl: Controller to query * @args: Get Log Page command arguments @@ -1091,13 +1379,851 @@ static inline int nvme_mi_admin_identify_ctrl_list(nvme_mi_ctrl_t ctrl, * This request may be implemented as multiple log page commands, in order * to fit within MI message-size limits. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_get_log_args */ int nvme_mi_admin_get_log(nvme_mi_ctrl_t ctrl, struct nvme_get_log_args *args); /** + * nvme_mi_admin_get_nsid_log() - Helper for Get Log Page functions + * @ctrl: Controller to query + * @rae: Retain Asynchronous Events + * @lid: Log identifier + * @nsid: Namespace ID + * @len: length of log buffer + * @log: pointer for resulting log data + * + * Performs a Get Log Page Admin command for a specific log ID @lid and + * namespace ID @nsid. Log data is expected to be @len bytes, and is stored + * in @log on success. The @rae flag is passed as-is to the Get Log Page + * command, and is specific to the Log Page requested. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_nsid_log(nvme_mi_ctrl_t ctrl, bool rae, + enum nvme_cmd_get_log_lid lid, + __u32 nsid, __u32 len, void *log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = lid, + .len = len, + .nsid = nsid, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_simple() - Helper for Get Log Page functions with no + * NSID or RAE requirements + * @ctrl: Controller to query + * @lid: Log identifier + * @len: length of log buffer + * @log: pointer for resulting log data + * + * Performs a Get Log Page Admin command for a specific log ID @lid, using + * NVME_NSID_ALL for the namespace identifier, and rae set to false. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_simple(nvme_mi_ctrl_t ctrl, + enum nvme_cmd_get_log_lid lid, + __u32 len, void *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, false, lid, NVME_NSID_ALL, + len, log); +} + +/** + * nvme_mi_admin_get_log_supported_log_pages() - Retrieve nmve supported log + * pages + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @log: Array of LID supported and Effects data structures + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_supported_log_pages(nvme_mi_ctrl_t ctrl, + bool rae, + struct nvme_supported_log_pages *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, + NVME_LOG_LID_SUPPORTED_LOG_PAGES, + NVME_NSID_ALL, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_error() - Retrieve nvme error log + * @ctrl: Controller to query + * @nr_entries: Number of error log entries allocated + * @rae: Retain asynchronous events + * @err_log: Array of error logs of size 'entries' + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_error(nvme_mi_ctrl_t ctrl, + unsigned int nr_entries, bool rae, + struct nvme_error_log_page *err_log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_ERROR, + NVME_NSID_ALL, sizeof(*err_log) * nr_entries, + err_log); +} + +/** + * nvme_mi_admin_get_log_smart() - Retrieve nvme smart log + * @ctrl: Controller to query + * @nsid: Optional namespace identifier + * @rae: Retain asynchronous events + * @smart_log: User address to store the smart log + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_smart(nvme_mi_ctrl_t ctrl, __u32 nsid, + bool rae, + struct nvme_smart_log *smart_log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_SMART, + nsid, sizeof(*smart_log), smart_log); +} + +/** + * nvme_mi_admin_get_log_fw_slot() - Retrieves the controller firmware log + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @fw_log: User address to store the log page + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_fw_slot(nvme_mi_ctrl_t ctrl, bool rae, + struct nvme_firmware_slot *fw_log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_FW_SLOT, + NVME_NSID_ALL, sizeof(*fw_log), fw_log); +} + +/** + * nvme_mi_admin_get_log_changed_ns_list() - Retrieve namespace changed list + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @ns_log: User address to store the log page + * + * This log page describes namespaces attached to this controller that have + * changed since the last time the namespace was identified, been added, or + * deleted. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_changed_ns_list(nvme_mi_ctrl_t ctrl, + bool rae, + struct nvme_ns_list *ns_log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_CHANGED_NS, + NVME_NSID_ALL, sizeof(*ns_log), ns_log); +} + +/** + * nvme_mi_admin_get_log_cmd_effects() - Retrieve nvme command effects log + * @ctrl: Controller to query + * @csi: Command Set Identifier + * @effects_log: User address to store the effects log + * + * This log page describes the commands that the controller supports and the + * effects of those commands on the state of the NVM subsystem. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_cmd_effects(nvme_mi_ctrl_t ctrl, + enum nvme_csi csi, + struct nvme_cmd_effects_log *effects_log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = effects_log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_CMD_EFFECTS, + .len = sizeof(*effects_log), + .nsid = NVME_NSID_ALL, + .csi = csi, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_device_self_test() - Retrieve the device self test log + * @ctrl: Controller to query + * @log: Userspace address of the log payload + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_device_self_test(nvme_mi_ctrl_t ctrl, + struct nvme_self_test_log *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, false, + NVME_LOG_LID_DEVICE_SELF_TEST, + NVME_NSID_ALL, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_create_telemetry_host() - Create host telemetry log + * @ctrl: Controller to query + * @log: Userspace address of the log payload + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_create_telemetry_host(nvme_mi_ctrl_t ctrl, + struct nvme_telemetry_log *log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_TELEMETRY_HOST, + .len = sizeof(*log), + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_TELEM_HOST_LSP_CREATE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_telemetry_host() - Get Telemetry Host-Initiated log + * page + * @ctrl: Controller to query + * @offset: Offset into the telemetry data + * @len: Length of provided user buffer to hold the log data in bytes + * @log: User address for log page data + * + * Retrieves the Telemetry Host-Initiated log page at the requested offset + * using the previously existing capture. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_telemetry_host(nvme_mi_ctrl_t ctrl, + __u64 offset, __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_TELEMETRY_HOST, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_TELEM_HOST_LSP_RETAIN, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_telemetry_ctrl() - Get Telemetry Controller-Initiated + * log page + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @offset: Offset into the telemetry data + * @len: Length of provided user buffer to hold the log data in bytes + * @log: User address for log page data + * + * Retrieves the Telemetry Controller-Initiated log page at the requested offset + * using the previously existing capture. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_telemetry_ctrl(nvme_mi_ctrl_t ctrl, + bool rae, + __u64 offset, __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_TELEMETRY_CTRL, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_endurance_group() - Get Endurance Group log + * @ctrl: Controller to query + * @endgid: Starting group identifier to return in the list + * @log: User address to store the endurance log + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_endurance_group(nvme_mi_ctrl_t ctrl, + __u16 endgid, + struct nvme_endurance_group_log *log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_ENDURANCE_GROUP, + .len = sizeof(*log), + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = endgid, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_predictable_lat_nvmset() - Predictable Latency Per NVM + * Set + * @ctrl: Controller to query + * @nvmsetid: NVM set id + * @log: User address to store the predictable latency log + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_predictable_lat_nvmset(nvme_mi_ctrl_t ctrl, + __u16 nvmsetid, + struct nvme_nvmset_predictable_lat_log *log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_PREDICTABLE_LAT_NVMSET, + .len = sizeof(*log), + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = nvmsetid, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_predictable_lat_event() - Retrieve Predictable Latency + * Event Aggregate Log Page + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @offset: Offset into the predictable latency event + * @len: Length of provided user buffer to hold the log data in bytes + * @log: User address for log page data + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_predictable_lat_event(nvme_mi_ctrl_t ctrl, + bool rae, + __u32 offset, + __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_PREDICTABLE_LAT_AGG, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_ana() - Retrieve Asymmetric Namespace Access log page + * @ctrl: Controller to query + * @lsp: Log specific, see &enum nvme_get_log_ana_lsp + * @rae: Retain asynchronous events + * @offset: Offset to the start of the log page + * @len: The allocated length of the log page + * @log: User address to store the ana log + * + * 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 &struct nvme_ana_rsp_hdr for the definition of the returned structure. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_ana(nvme_mi_ctrl_t ctrl, + enum nvme_log_ana_lsp lsp, bool rae, + __u64 offset, __u32 len, void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_ANA, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = (__u8)lsp, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_ana_groups() - Retrieve Asymmetric Namespace Access + * groups only log page + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @len: The allocated length of the log page + * @log: User address to store the ana group log + * + * See &struct nvme_ana_group_desc for the definition of the returned structure. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_ana_groups(nvme_mi_ctrl_t ctrl, + bool rae, __u32 len, + struct nvme_ana_group_desc *log) +{ + return nvme_mi_admin_get_log_ana(ctrl, NVME_LOG_ANA_LSP_RGO_GROUPS_ONLY, rae, 0, + len, log); +} + +/** + * nvme_mi_admin_get_log_lba_status() - Retrieve LBA Status + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @offset: Offset to the start of the log page + * @len: The allocated length of the log page + * @log: User address to store the log page + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_lba_status(nvme_mi_ctrl_t ctrl, bool rae, + __u64 offset, __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_LBA_STATUS, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_endurance_grp_evt() - Retrieve Rotational Media + * Information + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @offset: Offset to the start of the log page + * @len: The allocated length of the log page + * @log: User address to store the log page + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_endurance_grp_evt(nvme_mi_ctrl_t ctrl, + bool rae, + __u32 offset, + __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_ENDURANCE_GRP_EVT, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_fid_supported_effects() - Retrieve Feature Identifiers + * Supported and Effects + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @log: FID Supported and Effects data structure + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_fid_supported_effects(nvme_mi_ctrl_t ctrl, + bool rae, + struct nvme_fid_supported_effects_log *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, + NVME_LOG_LID_FID_SUPPORTED_EFFECTS, + NVME_NSID_NONE, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_mi_cmd_supported_effects() - displays the MI Commands + * Supported by the controller + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @log: MI Command Supported and Effects data structure + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_mi_cmd_supported_effects(nvme_mi_ctrl_t ctrl, + bool rae, + struct nvme_mi_cmd_supported_effects_log *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_MI_CMD_SUPPORTED_EFFECTS, + NVME_NSID_NONE, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_boot_partition() - Retrieve Boot Partition + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @lsp: The log specified field of LID + * @len: The allocated size, minimum + * struct nvme_boot_partition + * @part: User address to store the log page + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_boot_partition(nvme_mi_ctrl_t ctrl, + bool rae, __u8 lsp, + __u32 len, + struct nvme_boot_partition *part) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = part, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_BOOT_PARTITION, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_discovery() - Retrieve Discovery log page + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @offset: Offset of this log to retrieve + * @len: The allocated size for this portion of the log + * @log: User address to store the discovery log + * + * Supported only by fabrics discovery controllers, returning discovery + * records. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_discovery(nvme_mi_ctrl_t ctrl, bool rae, + __u32 offset, __u32 len, + void *log) +{ + struct nvme_get_log_args args = { + .lpo = offset, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_DISCOVER, + .len = len, + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_media_unit_stat() - Retrieve Media Unit Status + * @ctrl: Controller to query + * @domid: Domain Identifier selection, if supported + * @mus: User address to store the Media Unit statistics log + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_media_unit_stat(nvme_mi_ctrl_t ctrl, + __u16 domid, + struct nvme_media_unit_stat_log *mus) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = mus, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_MEDIA_UNIT_STATUS, + .len = sizeof(*mus), + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = domid, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_support_cap_config_list() - Retrieve Supported + * Capacity Configuration List + * @ctrl: Controller to query + * @domid: Domain Identifier selection, if supported + * @cap: User address to store supported capabilities config list + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_support_cap_config_list(nvme_mi_ctrl_t ctrl, + __u16 domid, + struct nvme_supported_cap_config_list_log *cap) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = cap, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_SUPPORTED_CAP_CONFIG_LIST, + .len = sizeof(*cap), + .nsid = NVME_NSID_NONE, + .csi = NVME_CSI_NVM, + .lsi = domid, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_reservation() - Retrieve Reservation Notification + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @log: User address to store the reservation log + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_reservation(nvme_mi_ctrl_t ctrl, + bool rae, + struct nvme_resv_notification_log *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_RESERVATION, + NVME_NSID_ALL, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_sanitize() - Retrieve Sanitize Status + * @ctrl: Controller to query + * @rae: Retain asynchronous events + * @log: User address to store the sanitize log + * + * The Sanitize Status log page reports sanitize operation time estimates and + * information about the most recent sanitize operation. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_sanitize(nvme_mi_ctrl_t ctrl, bool rae, + struct nvme_sanitize_log_page *log) +{ + return nvme_mi_admin_get_nsid_log(ctrl, rae, NVME_LOG_LID_SANITIZE, + NVME_NSID_ALL, sizeof(*log), log); +} + +/** + * nvme_mi_admin_get_log_zns_changed_zones() - Retrieve list of zones that have + * changed + * @ctrl: Controller to query + * @nsid: Namespace ID + * @rae: Retain asynchronous events + * @log: User address to store the changed zone log + * + * The list of zones that have changed state due to an exceptional event. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_zns_changed_zones(nvme_mi_ctrl_t ctrl, + __u32 nsid, bool rae, + struct nvme_zns_changed_zone_log *log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_ZNS_CHANGED_ZONES, + .len = sizeof(*log), + .nsid = nsid, + .csi = NVME_CSI_ZNS, + .lsi = NVME_LOG_LSI_NONE, + .lsp = NVME_LOG_LSP_NONE, + .uuidx = NVME_UUID_NONE, + .rae = rae, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** + * nvme_mi_admin_get_log_persistent_event() - Retrieve Persistent Event Log + * @ctrl: Controller to query + * @action: Action the controller should take during processing this command + * @size: Size of @pevent_log + * @pevent_log: User address to store the persistent event log + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_log_persistent_event(nvme_mi_ctrl_t ctrl, + enum nvme_pevent_log_action action, + __u32 size, void *pevent_log) +{ + struct nvme_get_log_args args = { + .lpo = 0, + .result = NULL, + .log = pevent_log, + .args_size = sizeof(args), + .lid = NVME_LOG_LID_PERSISTENT_EVENT, + .len = size, + .nsid = NVME_NSID_ALL, + .csi = NVME_CSI_NVM, + .lsi = NVME_LOG_LSI_NONE, + .lsp = (__u8)action, + .uuidx = NVME_UUID_NONE, + .rae = false, + .ot = false, + }; + return nvme_mi_admin_get_log(ctrl, &args); +} + +/** * nvme_mi_admin_security_send() - Perform a Security Send command on a * controller. * @ctrl: Controller to send command to @@ -1111,7 +2237,8 @@ int nvme_mi_admin_get_log(nvme_mi_ctrl_t ctrl, struct nvme_get_log_args *args); * Security Send data length should not be greater than 4096 bytes to * comply with specification limits. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_get_log_args */ @@ -1132,12 +2259,297 @@ int nvme_mi_admin_security_send(nvme_mi_ctrl_t ctrl, * Security Receive data length should not be greater than 4096 bytes to * comply with specification limits. * - * Return: 0 on success, non-zero on failure + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. * * See: &struct nvme_get_log_args */ int nvme_mi_admin_security_recv(nvme_mi_ctrl_t ctrl, struct nvme_security_receive_args *args); +/** + * nvme_mi_admin_get_features - Perform a Get Feature command on a controller + * @ctrl: Controller to send command to + * @args: Get Features command arguments + * + * Performs a Get Features Admin command as specified by @args. Returned + * feature data will be stored in @args->result and @args->data, depending + * on the specification of the feature itself; most features do not return + * additional data. See section 5.27.1 of the NVMe spec (v2.0b) for + * feature-specific information. + * + * On success, @args->data_len will be updated with the actual data length + * received. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_get_features(nvme_mi_ctrl_t ctrl, + struct nvme_get_features_args *args); + +/** + * nvme_mi_admin_get_features_data() - Helper function for &nvme_mi_admin_get_features() + * @ctrl: Controller to send command to + * @fid: Feature identifier + * @nsid: Namespace ID, if applicable for @fid + * @data_len: Length of feature data, if applicable for @fid, in bytes + * @data: User address of feature data, if applicable + * @result: The command completion result from CQE dword0 + * + * Helper for optionally features that optionally return data, using the + * SEL_CURRENT selector value. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_get_features_data(nvme_mi_ctrl_t ctrl, + enum nvme_features_id fid, + __u32 nsid, __u32 data_len, + void *data, __u32 *result) +{ + struct nvme_get_features_args args = { + .result = result, + .data = data, + .args_size = sizeof(args), + .nsid = nsid, + .sel = NVME_GET_FEATURES_SEL_CURRENT, + .cdw11 = 0, + .data_len = data_len, + .fid = (__u8)fid, + .uuidx = NVME_UUID_NONE, + }; + + return nvme_mi_admin_get_features(ctrl, &args); +} + +/** + * nvme_mi_admin_get_features_simple - Get a simple feature value with no data + * @ctrl: Controller to send command to + * @fid: Feature identifier + * @nsid: Namespace id, if required by @fid + * @result: output feature data + */ +static inline int nvme_mi_admin_get_features_simple(nvme_mi_ctrl_t ctrl, + enum nvme_features_id fid, + __u32 nsid, + __u32 *result) +{ + return nvme_mi_admin_get_features_data(ctrl, fid, nsid, + 0, NULL, result); +} + +/** + * nvme_mi_admin_set_features - Perform a Set Features command on a controller + * @ctrl: Controller to send command to + * @args: Set Features command arguments + * + * Performs a Set Features Admin command as specified by @args. Result + * data will be stored in @args->result. + * on the specification of the feature itself; most features do not return + * additional data. See section 5.27.1 of the NVMe spec (v2.0b) for + * feature-specific information. + * + * On success, @args->data_len will be updated with the actual data length + * received. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_set_features(nvme_mi_ctrl_t ctrl, + struct nvme_set_features_args *args); + +/** + * nvme_mi_admin_ns_mgmt - Issue a Namespace Management command + * @ctrl: Controller to send command to + * @args: Namespace management command arguments + * + * Issues a Namespace Management command to @ctrl, with arguments specified + * from @args. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_ns_mgmt(nvme_mi_ctrl_t ctrl, + struct nvme_ns_mgmt_args *args); + +/** + * nvme_mi_admin_ns_mgmt_create - Helper for Namespace Management Create command + * @ctrl: Controller to send command to + * @ns: New namespace parameters + * @csi: Command Set Identifier for new NS + * @nsid: Set to new namespace ID on create + * + * Issues a Namespace Management (Create) command to @ctrl, to create a + * new namespace specified by @ns, using command set @csi. On success, + * the new namespace ID will be written to @nsid. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_ns_mgmt_create(nvme_mi_ctrl_t ctrl, + struct nvme_id_ns *ns, + __u8 csi, __u32 *nsid) +{ + struct nvme_ns_mgmt_args args = { + .result = nsid, + .ns = ns, + .args_size = sizeof(args), + .nsid = NVME_NSID_NONE, + .sel = NVME_NS_MGMT_SEL_CREATE, + .csi = csi, + }; + + return nvme_mi_admin_ns_mgmt(ctrl, &args); +} + +/** + * nvme_mi_admin_ns_mgmt_delete - Helper for Namespace Management Delete command + * @ctrl: Controller to send command to + * @nsid: Namespace ID to delete + * + * Issues a Namespace Management (Delete) command to @ctrl, to delete the + * namespace with id @nsid. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_ns_mgmt_delete(nvme_mi_ctrl_t ctrl, __u32 nsid) +{ + struct nvme_ns_mgmt_args args = { + .args_size = sizeof(args), + .nsid = nsid, + .sel = NVME_NS_MGMT_SEL_DELETE, + }; + + return nvme_mi_admin_ns_mgmt(ctrl, &args); +} + +/** + * nvme_mi_admin_ns_attach() - Attach or detach namespace to controller(s) + * @ctrl: Controller to send command to + * @args: Namespace Attach command arguments + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_ns_attach(nvme_mi_ctrl_t ctrl, + struct nvme_ns_attach_args *args); + +/** + * nvme_mi_admin_ns_attach_ctrls() - Attach namespace to controllers + * @ctrl: Controller to send command to + * @nsid: Namespace ID to attach + * @ctrlist: Controller list to modify attachment state of nsid + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_ns_attach_ctrls(nvme_mi_ctrl_t ctrl, __u32 nsid, + struct nvme_ctrl_list *ctrlist) +{ + struct nvme_ns_attach_args args = { + .result = NULL, + .ctrlist = ctrlist, + .args_size = sizeof(args), + .nsid = nsid, + .sel = NVME_NS_ATTACH_SEL_CTRL_ATTACH, + }; + + return nvme_mi_admin_ns_attach(ctrl, &args); +} + +/** + * nvme_mi_admin_ns_detach_ctrls() - Detach namespace from controllers + * @ctrl: Controller to send command to + * @nsid: Namespace ID to detach + * @ctrlist: Controller list to modify attachment state of nsid + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +static inline int nvme_mi_admin_ns_detach_ctrls(nvme_mi_ctrl_t ctrl, __u32 nsid, + struct nvme_ctrl_list *ctrlist) +{ + struct nvme_ns_attach_args args = { + .result = NULL, + .ctrlist = ctrlist, + .args_size = sizeof(args), + .nsid = nsid, + .sel = NVME_NS_ATTACH_SEL_CTRL_DEATTACH, + }; + + return nvme_mi_admin_ns_attach(ctrl, &args); +} + +/** + * nvme_mi_admin_fw_download() - Download part or all of a firmware image to + * the controller + * @ctrl: Controller to send firmware data to + * @args: &struct nvme_fw_download_args argument structure + * + * 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 nvme_mi_admin_fw_commit() to activate a newly + * downloaded image. + * + * Return: 0 on success, non-zero on failure + */ +int nvme_mi_admin_fw_download(nvme_mi_ctrl_t ctrl, + struct nvme_fw_download_args *args); + +/** + * nvme_mi_admin_fw_commit() - Commit firmware using the specified action + * @ctrl: Controller to send firmware data to + * @args: &struct nvme_fw_download_args argument structure + * + * The Firmware Commit command modifies the firmware image or Boot Partitions. + * + * Return: 0 on success, non-zero on failure + */ +int nvme_mi_admin_fw_commit(nvme_mi_ctrl_t ctrl, + struct nvme_fw_commit_args *args); + +/** + * nvme_mi_admin_format_nvm() - Format NVMe namespace + * @ctrl: Controller to send command to + * @args: Format NVM command arguments + * + * Perform a low-level format to set the LBA data & metadata size. May destroy + * data & metadata on the specified namespaces + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_format_nvm(nvme_mi_ctrl_t ctrl, + struct nvme_format_nvm_args *args); + +/** + * nvme_mi_admin_sanitize_nvm() - Start a subsystem Sanitize operation + * @ctrl: Controller to send command to + * @args: Sanitize command arguments + * + * 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. + * + * Return: The nvme command status if a response was received (see + * &enum nvme_status_field) or -1 with errno set otherwise. + */ +int nvme_mi_admin_sanitize_nvm(nvme_mi_ctrl_t ctrl, + struct nvme_sanitize_nvm_args *args); #endif /* _LIBNVME_MI_MI_H */ diff --git a/src/nvme/private.h b/src/nvme/private.h index b5610f5..cdd1bbf 100644 --- a/src/nvme/private.h +++ b/src/nvme/private.h @@ -16,8 +16,6 @@ #include "fabrics.h" #include "mi.h" -#include <uuid.h> - extern const char *nvme_ctrl_sysfs_dir; extern const char *nvme_subsys_sysfs_dir; @@ -57,7 +55,7 @@ struct nvme_ns { uint8_t eui64[8]; uint8_t nguid[16]; - uuid_t uuid; + unsigned char uuid[NVME_UUID_LEN]; enum nvme_csi csi; }; @@ -83,6 +81,7 @@ struct nvme_ctrl { char *traddr; char *trsvcid; char *dhchap_key; + char *dhchap_ctrl_key; char *cntrltype; char *dctype; bool discovery_ctrl; diff --git a/src/nvme/tree.c b/src/nvme/tree.c index e3b41e7..b992824 100644 --- a/src/nvme/tree.c +++ b/src/nvme/tree.c @@ -810,12 +810,12 @@ struct nvme_fabrics_config *nvme_ctrl_get_config(nvme_ctrl_t c) return &c->cfg; } -const char *nvme_ctrl_get_dhchap_key(nvme_ctrl_t c) +const char *nvme_ctrl_get_dhchap_host_key(nvme_ctrl_t c) { return c->dhchap_key; } -void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key) +void nvme_ctrl_set_dhchap_host_key(nvme_ctrl_t c, const char *key) { if (c->dhchap_key) { free(c->dhchap_key); @@ -825,6 +825,21 @@ void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key) c->dhchap_key = strdup(key); } +const char *nvme_ctrl_get_dhchap_key(nvme_ctrl_t c) +{ + return c->dhchap_ctrl_key; +} + +void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key) +{ + if (c->dhchap_ctrl_key) { + free(c->dhchap_ctrl_key); + c->dhchap_ctrl_key = NULL; + } + if (key) + c->dhchap_ctrl_key = strdup(key); +} + void nvme_ctrl_set_discovered(nvme_ctrl_t c, bool discovered) { c->discovered = discovered; @@ -898,6 +913,7 @@ void nvme_deconfigure_ctrl(nvme_ctrl_t c) FREE_CTRL_ATTR(c->serial); FREE_CTRL_ATTR(c->sqsize); FREE_CTRL_ATTR(c->dhchap_key); + FREE_CTRL_ATTR(c->dhchap_ctrl_key); FREE_CTRL_ATTR(c->address); FREE_CTRL_ATTR(c->dctype); FREE_CTRL_ATTR(c->cntrltype); @@ -1146,6 +1162,7 @@ static int nvme_configure_ctrl(nvme_root_t r, nvme_ctrl_t c, const char *path, const char *name) { DIR *d; + char *host_key; d = opendir(path); if (!d) { @@ -1166,10 +1183,19 @@ static int nvme_configure_ctrl(nvme_root_t r, nvme_ctrl_t c, const char *path, c->queue_count = nvme_get_ctrl_attr(c, "queue_count"); c->serial = nvme_get_ctrl_attr(c, "serial"); c->sqsize = nvme_get_ctrl_attr(c, "sqsize"); - c->dhchap_key = nvme_get_ctrl_attr(c, "dhchap_ctrl_secret"); - if (c->dhchap_key && !strcmp(c->dhchap_key, "none")) { - free(c->dhchap_key); - c->dhchap_key = NULL; + host_key = nvme_get_ctrl_attr(c, "dhchap_secret"); + if (host_key && c->s && c->s->h && c->s->h->dhchap_key && + (!strcmp(c->s->h->dhchap_key, host_key) || + !strcmp("none", host_key))) { + free(host_key); + host_key = NULL; + } + if (host_key) + c->dhchap_key = host_key; + c->dhchap_ctrl_key = nvme_get_ctrl_attr(c, "dhchap_ctrl_secret"); + if (c->dhchap_ctrl_key && !strcmp(c->dhchap_ctrl_key, "none")) { + free(c->dhchap_ctrl_key); + c->dhchap_ctrl_key = NULL; } c->cntrltype = nvme_get_ctrl_attr(c, "cntrltype"); c->dctype = nvme_get_ctrl_attr(c, "dctype"); @@ -1525,9 +1551,9 @@ const uint8_t *nvme_ns_get_nguid(nvme_ns_t n) return n->nguid; } -void nvme_ns_get_uuid(nvme_ns_t n, uuid_t out) +void nvme_ns_get_uuid(nvme_ns_t n, unsigned char out[NVME_UUID_LEN]) { - uuid_copy(out, n->uuid); + memcpy(out, n->uuid, NVME_UUID_LEN); } int nvme_ns_identify(nvme_ns_t n, struct nvme_id_ns *ns) diff --git a/src/nvme/tree.h b/src/nvme/tree.h index 3a103c0..156cb79 100644 --- a/src/nvme/tree.h +++ b/src/nvme/tree.h @@ -15,7 +15,6 @@ #include <stddef.h> #include <sys/types.h> -#include <uuid.h> #include "ioctl.h" #include "util.h" @@ -521,7 +520,7 @@ const uint8_t *nvme_ns_get_nguid(nvme_ns_t n); * * Copies the namespace's uuid into @out */ -void nvme_ns_get_uuid(nvme_ns_t n, uuid_t out); +void nvme_ns_get_uuid(nvme_ns_t n, unsigned char out[NVME_UUID_LEN]); /** * nvme_ns_get_sysfs_dir() - sysfs directory of a namespace @@ -876,6 +875,21 @@ const char *nvme_ctrl_get_host_traddr(nvme_ctrl_t c); const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c); /** + * nvme_ctrl_get_dhchap_host_key() - Return host key + * @c: Controller to be checked + * + * Return: DH-HMAC-CHAP host key or NULL if not set + */ +const char *nvme_ctrl_get_dhchap_host_key(nvme_ctrl_t c); + +/** + * nvme_ctrl_set_dhchap_host_key() - Set host key + * @c: Host for which the key should be set + * @key: DH-HMAC-CHAP Key to set or NULL to clear existing key + */ +void nvme_ctrl_set_dhchap_host_key(nvme_ctrl_t c, const char *key); + +/** * nvme_ctrl_get_dhchap_key() - Return controller key * @c: Controller for which the key should be set * diff --git a/src/nvme/types.h b/src/nvme/types.h index 3d67bc8..94066fc 100644 --- a/src/nvme/types.h +++ b/src/nvme/types.h @@ -4857,6 +4857,34 @@ enum nvmf_tcp_sectype { }; /** + * enum nvmf_log_discovery_lid_support - Discovery log specific support + * @NVMF_LOG_DISC_LID_NONE: None + * @NVMF_LOG_DISC_LID_EXTDLPES: Extended Discovery Log Page Entries Supported + * @NVMF_LOG_DISC_LID_PLEOS: Port Local Entries Only Supported + * @NVMF_LOG_DISC_LID_ALLSUBES: All NVM Subsystem Entries Supported + */ +enum nvmf_log_discovery_lid_support { + NVMF_LOG_DISC_LID_NONE = 0, + NVMF_LOG_DISC_LID_EXTDLPES = (1 << 0), + NVMF_LOG_DISC_LID_PLEOS = (1 << 1), + NVMF_LOG_DISC_LID_ALLSUBES = (1 << 2), +}; + +/** + * enum nvmf_log_discovery_lsp - Discovery log specific field + * @NVMF_LOG_DISC_LSP_NONE: None + * @NVMF_LOG_DISC_LSP_EXTDLPE: Extended Discovery Log Page Entries + * @NVMF_LOG_DISC_LSP_PLEO: Port Local Entries Only + * @NVMF_LOG_DISC_LSP_ALLSUBE: All NVM Subsystem Entries + */ +enum nvmf_log_discovery_lsp { + NVMF_LOG_DISC_LSP_NONE = 0, + NVMF_LOG_DISC_LSP_EXTDLPE = (1 << 0), + NVMF_LOG_DISC_LSP_PLEO = (1 << 1), + NVMF_LOG_DISC_LSP_ALLSUBE = (1 << 2), +}; + +/** * struct nvmf_discovery_log - Discovery Log Page (Log Identifier 70h) * @genctr: Generation Counter (GENCTR): Indicates the version of the discovery * information, starting at a value of 0h. For each change in the @@ -6114,6 +6142,75 @@ static inline __u16 nvme_status_code(__u16 status_field) } /** + * enum nvme_status_type - type encoding for NVMe return values, when + * represented as an int. + * + * 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. + * + * @NVME_STATUS_TYPE_SHIFT: shift value for status bits + * @NVME_STATUS_TYPE_MASK: mask value for status bits + * + * @NVME_STATUS_TYPE_NVME: NVMe command status value, typically from CDW3 + * @NVME_STATUS_TYPE_MI: NVMe-MI header status + */ +enum nvme_status_type { + NVME_STATUS_TYPE_SHIFT = 27, + NVME_STATUS_TYPE_MASK = 0x7, + + NVME_STATUS_TYPE_NVME = 0, + NVME_STATUS_TYPE_MI = 1, +}; + +/** + * nvme_status_get_type() - extract the type from a nvme_* return value + * @status: the (non-negative) return value from the NVMe API + * + * Returns: the type component of the status. + */ +static inline __u32 nvme_status_get_type(int status) +{ + return NVME_GET(status, STATUS_TYPE); +} + +/** + * nvme_status_get_value() - extract the status value from a nvme_* return + * value + * @status: the (non-negative) return value from the NVMe API + * + * Returns: the value component of the status; the set of values will depend + * on the status type. + */ +static inline __u32 nvme_status_get_value(int status) +{ + return status & ~(NVME_STATUS_TYPE_MASK << NVME_STATUS_TYPE_SHIFT); +} + +/** + * nvme_status_equals() - helper to check a status against a type and value + * @status: the (non-negative) return value from the NVMe API + * @type: the status type + * @value: the status value + * + * Returns: true if @status is of the specified type and value + */ +static inline __u32 nvme_status_equals(int status, enum nvme_status_type type, + unsigned int value) +{ + if (status < 0) + return false; + + return nvme_status_get_type(status) == type && + nvme_status_get_value(status) == value; +} + +/** * enum nvme_admin_opcode - Known NVMe admin opcodes * @nvme_admin_delete_sq: Delete I/O Submission Queue * @nvme_admin_create_sq: Create I/O Submission Queue @@ -6950,6 +7047,20 @@ enum nvme_fctype { }; /** + * enum nvme_data_tfr - Data transfer direction of the command + * @NVME_DATA_TFR_NO_DATA_TFR: No data transfer + * @NVME_DATA_TFR_HOST_TO_CTRL: Host to controller + * @NVME_DATA_TFR_CTRL_TO_HOST: Controller to host + * @NVME_DATA_TFR_BIDIRECTIONAL: Bidirectional + */ +enum nvme_data_tfr { + NVME_DATA_TFR_NO_DATA_TFR = 0x0, + NVME_DATA_TFR_HOST_TO_CTRL = 0x1, + NVME_DATA_TFR_CTRL_TO_HOST = 0x2, + NVME_DATA_TFR_BIDIRECTIONAL = 0x3, +}; + +/** * enum nvme_io_opcode - Opcodes for I/O Commands * @nvme_cmd_flush: Flush * @nvme_cmd_write: Write diff --git a/src/nvme/util.c b/src/nvme/util.c index ff5e0d8..c61dbe9 100644 --- a/src/nvme/util.c +++ b/src/nvme/util.c @@ -11,6 +11,8 @@ #include <string.h> #include <errno.h> +#include <sys/stat.h> +#include <fcntl.h> #include <sys/param.h> #include <sys/types.h> #include <arpa/inet.h> @@ -23,6 +25,11 @@ #include "util.h" #include "log.h" +/* The bionic libc implementation doesn't define LINE_MAX */ +#ifndef LINE_MAX +#define LINE_MAX 2048 +#endif + /* Source Code Control System, query version of binary with 'what' */ const char sccsid[] = "@(#)libnvme " GIT_VERSION; @@ -489,6 +496,22 @@ int nvme_get_feature_length(int fid, __u32 cdw11, __u32 *len) return 0; } +int nvme_get_feature_length2(int fid, __u32 cdw11, enum nvme_data_tfr dir, + __u32 *len) +{ + switch (fid) { + case NVME_FEAT_FID_HOST_MEM_BUF: + if (dir == NVME_DATA_TFR_HOST_TO_CTRL) { + *len = 0; + break; + } + fallthrough; + default: + return nvme_get_feature_length(fid, cdw11, len); + } + return 0; +} + int nvme_get_directive_receive_length(enum nvme_directive_dtype dtype, enum nvme_directive_receive_doper doper, __u32 *len) { @@ -812,3 +835,57 @@ const char *nvme_get_version(enum nvme_version type) return "n/a"; } } + +int nvme_uuid_to_string(unsigned char uuid[NVME_UUID_LEN], char *str) +{ + int n; + n = snprintf(str, NVME_UUID_LEN_STRING, + "%02x%02x%02x%02x-%02x%02x-%02x%02x-" + "%02x%02x-%02x%02x%02x%02x%02x%02x", + uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], + uuid[6], uuid[7], uuid[8], uuid[9], uuid[10], uuid[11], + uuid[12], uuid[13], uuid[14], uuid[15]); + return n != NVME_UUID_LEN_STRING - 1 ? -EINVAL : 0; +} + +int nvme_uuid_from_string(const char *str, unsigned char uuid[NVME_UUID_LEN]) +{ + int n; + + n = sscanf(str, + "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-" + "%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx", + &uuid[0], &uuid[1], &uuid[2], &uuid[3], &uuid[4], &uuid[5], + &uuid[6], &uuid[7], &uuid[8], &uuid[9], &uuid[10], &uuid[11], + &uuid[12], &uuid[13], &uuid[14], &uuid[15]); + return n != NVME_UUID_LEN ? -EINVAL : 0; + +} + +int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN]) +{ + int f; + ssize_t n; + + f = open("/dev/urandom", O_RDONLY); + if (f < 0) + return -errno; + n = read(f, uuid, NVME_UUID_LEN); + if (n < 0) { + close(f); + return -errno; + } else if (n != NVME_UUID_LEN) { + close(f); + return -EIO; + } + + /* + * See https://www.rfc-editor.org/rfc/rfc4122#section-4.4 + * Algorithms for Creating a UUID from Truly Random + * or Pseudo-Random Numbers + */ + uuid[6] = (uuid[6] & 0x0f) | 0x40; + uuid[8] = (uuid[8] & 0x3f) | 0x80; + + return 0; +} diff --git a/src/nvme/util.h b/src/nvme/util.h index 6f1d3e9..e72c156 100644 --- a/src/nvme/util.h +++ b/src/nvme/util.h @@ -156,6 +156,23 @@ void nvme_init_copy_range_f1(struct nvme_copy_range_f1 *copy, __u16 *nlbs, int nvme_get_feature_length(int fid, __u32 cdw11, __u32 *len); /** + * nvme_get_feature_length2() - Retreive the command payload length for a + * specific feature identifier + * @fid: Feature identifier, see &enum nvme_features_id. + * @cdw11: The cdw11 value may affect the transfer (only known fid is + * %NVME_FEAT_FID_HOST_ID) + * @dir: 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). + * @len: On success, set to this features payload length in bytes. + * + * Return: 0 on success, -1 with errno set to EINVAL if the function did not + * recognize &fid. + */ +int nvme_get_feature_length2(int fid, __u32 cdw11, enum nvme_data_tfr dir, + __u32 *len); + +/** * nvme_get_directive_receive_length() - Get directive receive length * @dtype: Directive type, see &enum nvme_directive_dtype * @doper: Directive receive operation, see &enum nvme_directive_receive_doper @@ -575,4 +592,36 @@ enum nvme_version { */ const char *nvme_get_version(enum nvme_version type); +#define NVME_UUID_LEN_STRING 37 /* 1b4e28ba-2fa1-11d2-883f-0016d3cca427 + \0 */ +#define NVME_UUID_LEN 16 + +/** + * nvme_uuid_to_string - Return string represenation of encoded UUID + * @uuid: Binary encoded input UUID + * @str: Output string represenation of UUID + * + * Return: Returns error code if type conversion fails. + */ +int nvme_uuid_to_string(unsigned char uuid[NVME_UUID_LEN], char *str); + +/** + * nvme_uuid_from_string - Return encoded UUID represenation of string UUID + * @uuid: Binary encoded input UUID + * @str: Output string represenation of UUID + * + * Return: Returns error code if type conversion fails. + */ +int nvme_uuid_from_string(const char *str, unsigned char uuid[NVME_UUID_LEN]); + +/** + * nvme_uuid_random - Generate random UUID + * @uuid: Generated random UUID + * + * Generate random number according + * https://www.rfc-editor.org/rfc/rfc4122#section-4.4 + * + * Return: Returns error code if generating of random number fails. + */ +int nvme_uuid_random(unsigned char uuid[NVME_UUID_LEN]); + #endif /* _LIBNVME_UTIL_H */ diff --git a/test/meson.build b/test/meson.build index 00c9ceb..d90f835 100644 --- a/test/meson.build +++ b/test/meson.build @@ -12,7 +12,7 @@ main = executable( 'main-test', ['test.c'], - dependencies: [libnvme_dep, libuuid_dep], + dependencies: [libnvme_dep], include_directories: [incdir, internal_incdir] ) @@ -56,3 +56,12 @@ mi_mctp = executable( ) test('mi-mctp', mi_mctp) + +uuid = executable( + 'test-uuid', + ['uuid.c'], + dependencies: libnvme_dep, + include_directories: [incdir, internal_incdir] +) + +test('uuid', uuid) diff --git a/test/mi-mctp.c b/test/mi-mctp.c index 5b1a154..6d83d42 100644 --- a/test/mi-mctp.c +++ b/test/mi-mctp.c @@ -308,7 +308,8 @@ static void test_admin_resp_err(nvme_mi_ep_t ep, struct test_peer *peer) peer->tx_buf_len = 8; rc = nvme_mi_admin_identify_ctrl(ctrl, &id); - assert(rc == 0x2); + assert(nvme_status_get_type(rc) == NVME_STATUS_TYPE_MI); + assert(nvme_status_get_value(rc) == NVME_MI_RESP_INTERNAL_ERR); } /* test: all 4-byte aligned response sizes - should be decoded into the @@ -332,7 +333,8 @@ static void test_admin_resp_sizes(nvme_mi_ep_t ep, struct test_peer *peer) for (i = 8; i <= 4096 + 8; i+=4) { peer->tx_buf_len = i; rc = nvme_mi_admin_identify_ctrl(ctrl, &id); - assert(rc == 2); + assert(nvme_status_get_type(rc) == NVME_STATUS_TYPE_MI); + assert(nvme_status_get_value(rc) == NVME_MI_RESP_INTERNAL_ERR); } nvme_mi_close_ctrl(ctrl); @@ -407,6 +409,7 @@ static void test_poll_timeout(nvme_mi_ep_t ep, struct test_peer *peer) /* test: send a More Processing Required response, then the actual response */ struct mpr_tx_info { int msg_no; + bool admin_quirk; size_t final_len; }; @@ -422,6 +425,9 @@ static int tx_mpr(struct test_peer *peer, void *buf, size_t len) case 1: peer->tx_buf[4] = NVME_MI_RESP_MPR; peer->tx_buf_len = 8; + if (tx_info->admin_quirk) { + peer->tx_buf_len = 20; + } break; case 2: peer->tx_buf[4] = NVME_MI_RESP_SUCCESS; @@ -446,6 +452,7 @@ static void test_mpr_mi(nvme_mi_ep_t ep, struct test_peer *peer) tx_info.msg_no = 1; tx_info.final_len = sizeof(struct nvme_mi_mi_resp_hdr) + sizeof(ss_info); + tx_info.admin_quirk = false; peer->tx_fn = tx_mpr; peer->tx_data = &tx_info; @@ -463,6 +470,32 @@ static void test_mpr_admin(nvme_mi_ep_t ep, struct test_peer *peer) tx_info.msg_no = 1; tx_info.final_len = sizeof(struct nvme_mi_admin_resp_hdr) + sizeof(id); + tx_info.admin_quirk = false; + + peer->tx_fn = tx_mpr; + peer->tx_data = &tx_info; + + ctrl = nvme_mi_init_ctrl(ep, 1); + + rc = nvme_mi_admin_identify_ctrl(ctrl, &id); + assert(rc == 0); + + nvme_mi_close_ctrl(ctrl); +} + +/* We have seen drives that send a MPR response as a full Admin message, + * rather than a MI message; these have a larger message body + */ +static void test_mpr_admin_quirked(nvme_mi_ep_t ep, struct test_peer *peer) +{ + struct mpr_tx_info tx_info; + struct nvme_id_ctrl id; + nvme_mi_ctrl_t ctrl; + int rc; + + tx_info.msg_no = 1; + tx_info.final_len = sizeof(struct nvme_mi_admin_resp_hdr) + sizeof(id); + tx_info.admin_quirk = true; peer->tx_fn = tx_mpr; peer->tx_data = &tx_info; @@ -638,6 +671,7 @@ struct test { DEFINE_TEST(poll_timeout), DEFINE_TEST(mpr_mi), DEFINE_TEST(mpr_admin), + DEFINE_TEST(mpr_admin_quirked), DEFINE_TEST(mpr_timeouts), DEFINE_TEST(mpr_timeout_clamp), DEFINE_TEST(mpr_mprt_zero), @@ -11,6 +11,7 @@ #include <unistd.h> #include <ccan/array_size/array_size.h> +#include <ccan/endian/endian.h> /* we define a custom transport, so need the internal headers */ #include "nvme/private.h" @@ -747,6 +748,1037 @@ static void test_mi_config_set_freq_invalid(nvme_mi_ep_t ep) assert(rc == 4); } +/* Get Features callback, implementing Arbitration (which doesn't return + * additional data) and Timestamp (which does). + */ +static int test_admin_get_features_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + __u8 sel, fid, ror, mt, *rq_hdr, *rs_hdr, *rs_data; + __u16 ctrl_id; + int i; + + assert(req->hdr->type == NVME_MI_MSGTYPE_NVME); + + ror = req->hdr->nmp >> 7; + mt = req->hdr->nmp >> 3 & 0x7; + assert(ror == NVME_MI_ROR_REQ); + assert(mt == NVME_MI_MT_ADMIN); + + /* do we have enough for a mi header? */ + assert(req->hdr_len == sizeof(struct nvme_mi_admin_req_hdr)); + + /* inspect response as raw bytes */ + rq_hdr = (__u8 *)req->hdr; + + /* opcode */ + assert(rq_hdr[4] == nvme_admin_get_features); + + /* controller */ + ctrl_id = rq_hdr[7] << 8 | rq_hdr[6]; + assert(ctrl_id == 0x5); /* controller id */ + + /* sel & fid from lower bytes of cdw10 */ + fid = rq_hdr[44]; + sel = rq_hdr[45] & 0x7; + + /* reserved fields */ + assert(!(rq_hdr[46] || rq_hdr[47] || rq_hdr[45] & 0xf8)); + + assert(sel == 0x00); + + rs_hdr = (__u8 *)resp->hdr; + rs_hdr[4] = 0x00; /* status: success */ + rs_data = resp->data; + + /* feature-id specific checks, and response generation */ + switch (fid) { + case NVME_FEAT_FID_ARBITRATION: + /* arbitrary (hah!) arbitration value in cdw0 of response */ + rs_hdr[8] = 1; + rs_hdr[9] = 2; + rs_hdr[10] = 3; + rs_hdr[11] = 4; + resp->data_len = 0; + break; + + case NVME_FEAT_FID_TIMESTAMP: + resp->data_len = 8; + for (i = 0; i < 6; i++) + rs_data[i] = i; + rs_data[6] = 1; + break; + + default: + assert(0); + } + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_get_features_nodata(nvme_mi_ep_t ep) +{ + struct nvme_get_features_args args = { 0 }; + nvme_mi_ctrl_t ctrl; + uint32_t res; + int rc; + + test_set_transport_callback(ep, test_admin_get_features_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + args.args_size = sizeof(args); + args.fid = NVME_FEAT_FID_ARBITRATION; + args.sel = 0; + args.result = &res; + + rc = nvme_mi_admin_get_features(ctrl, &args); + assert(rc == 0); + assert(args.data_len == 0); + assert(res == 0x04030201); +} + +static void test_get_features_data(nvme_mi_ep_t ep) +{ + struct nvme_get_features_args args = { 0 }; + struct nvme_timestamp tstamp; + nvme_mi_ctrl_t ctrl; + uint8_t exp[6]; + uint32_t res; + int rc, i; + + test_set_transport_callback(ep, test_admin_get_features_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + args.args_size = sizeof(args); + args.fid = NVME_FEAT_FID_TIMESTAMP; + args.sel = 0; + args.result = &res; + args.data = &tstamp; + args.data_len = sizeof(tstamp); + + /* expected timestamp value */ + for (i = 0; i < sizeof(tstamp.timestamp); i++) + exp[i] = i; + + rc = nvme_mi_admin_get_features(ctrl, &args); + assert(rc == 0); + assert(args.data_len == sizeof(tstamp)); + assert(tstamp.attr == 1); + assert(!memcmp(tstamp.timestamp, exp, sizeof(tstamp.timestamp))); +} + +/* Set Features callback for timestamp */ +static int test_admin_set_features_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + __u8 save, fid, ror, mt, *rq_hdr, *rq_data, *rs_hdr; + __u16 ctrl_id; + uint8_t ts[6]; + int i; + + assert(req->hdr->type == NVME_MI_MSGTYPE_NVME); + + ror = req->hdr->nmp >> 7; + mt = req->hdr->nmp >> 3 & 0x7; + assert(ror == NVME_MI_ROR_REQ); + assert(mt == NVME_MI_MT_ADMIN); + assert(req->hdr_len == sizeof(struct nvme_mi_admin_req_hdr)); + assert(req->data_len == 8); + + rq_hdr = (__u8 *)req->hdr; + rq_data = req->data; + + /* opcode */ + assert(rq_hdr[4] == nvme_admin_set_features); + + /* controller */ + ctrl_id = rq_hdr[7] << 8 | rq_hdr[6]; + assert(ctrl_id == 0x5); /* controller id */ + + /* fid from lower bytes of cdw10, save from top bit */ + fid = rq_hdr[44]; + save = rq_hdr[47] & 0x80; + + /* reserved fields */ + assert(!(rq_hdr[45] || rq_hdr[46])); + + assert(fid == NVME_FEAT_FID_TIMESTAMP); + assert(save == 0x80); + + for (i = 0; i < sizeof(ts); i++) + ts[i] = i; + assert(!memcmp(ts, rq_data, sizeof(ts))); + + rs_hdr = (__u8 *)resp->hdr; + rs_hdr[4] = 0x00; + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_set_features(nvme_mi_ep_t ep) +{ + struct nvme_set_features_args args = { 0 }; + struct nvme_timestamp tstamp; + nvme_mi_ctrl_t ctrl; + uint32_t res; + int rc, i; + + test_set_transport_callback(ep, test_admin_set_features_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + for (i = 0; i < sizeof(tstamp.timestamp); i++) + tstamp.timestamp[i] = i; + + args.args_size = sizeof(args); + args.fid = NVME_FEAT_FID_TIMESTAMP; + args.save = 1; + args.result = &res; + args.data = &tstamp; + args.data_len = sizeof(tstamp); + + rc = nvme_mi_admin_set_features(ctrl, &args); + assert(rc == 0); + assert(args.data_len == 0); +} + +enum ns_type { + NS_ACTIVE, + NS_ALLOC, +}; + +static int test_admin_id_ns_list_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct nvme_ns_list *list; + enum ns_type type; + int offset; + __u8 *hdr; + __u16 cns; + + hdr = (__u8 *)req->hdr; + assert(hdr[4] == nvme_admin_identify); + + assert(req->data_len == 0); + + cns = hdr[45] << 8 | hdr[44]; + + /* NSID */ + assert(hdr[8] == 1 && !hdr[9] && !hdr[10] && !hdr[11]); + + type = *(enum ns_type *)data; + resp->data_len = sizeof(*list); + list = resp->data; + + switch (type) { + case NS_ALLOC: + assert(cns == NVME_IDENTIFY_CNS_ALLOCATED_NS_LIST); + offset = 2; + break; + case NS_ACTIVE: + assert(cns == NVME_IDENTIFY_CNS_NS_ACTIVE_LIST); + offset = 4; + break; + default: + assert(0); + } + + list->ns[0] = cpu_to_le32(offset); + list->ns[1] = cpu_to_le32(offset + 1); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_id_alloc_ns_list(struct nvme_mi_ep *ep) +{ + struct nvme_ns_list list; + nvme_mi_ctrl_t ctrl; + enum ns_type type; + int rc; + + type = NS_ALLOC; + test_set_transport_callback(ep, test_admin_id_ns_list_cb, &type); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_allocated_ns_list(ctrl, 1, &list); + assert(!rc); + + assert(le32_to_cpu(list.ns[0]) == 2); + assert(le32_to_cpu(list.ns[1]) == 3); + assert(le32_to_cpu(list.ns[2]) == 0); +} + +static void test_admin_id_active_ns_list(struct nvme_mi_ep *ep) +{ + struct nvme_ns_list list; + nvme_mi_ctrl_t ctrl; + enum ns_type type; + int rc; + + type = NS_ACTIVE; + test_set_transport_callback(ep, test_admin_id_ns_list_cb, &type); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_active_ns_list(ctrl, 1, &list); + assert(!rc); + + assert(le32_to_cpu(list.ns[0]) == 4); + assert(le32_to_cpu(list.ns[1]) == 5); + assert(le32_to_cpu(list.ns[2]) == 0); +} + +static int test_admin_id_ns_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct nvme_id_ns *id; + enum ns_type type; + __u16 nsid, cns; + __u8 *hdr; + + hdr = (__u8 *)req->hdr; + assert(hdr[4] == nvme_admin_identify); + + assert(req->data_len == 0); + + cns = hdr[45] << 8 | hdr[44]; + + /* NSID */ + nsid = hdr[8]; + assert(!hdr[9] && !hdr[10] && !hdr[11]); + + type = *(enum ns_type *)data; + resp->data_len = sizeof(*id); + id = resp->data; + id->nsze = cpu_to_le64(nsid); + + switch (type) { + case NS_ALLOC: + assert(cns == NVME_IDENTIFY_CNS_ALLOCATED_NS); + break; + case NS_ACTIVE: + assert(cns == NVME_IDENTIFY_CNS_NS); + break; + default: + assert(0); + } + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_id_alloc_ns(struct nvme_mi_ep *ep) +{ + struct nvme_id_ns id; + nvme_mi_ctrl_t ctrl; + enum ns_type type; + int rc; + + type = NS_ALLOC; + test_set_transport_callback(ep, test_admin_id_ns_cb, &type); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_allocated_ns(ctrl, 1, &id); + assert(!rc); + assert(le64_to_cpu(id.nsze) == 1); +} + +static void test_admin_id_active_ns(struct nvme_mi_ep *ep) +{ + struct nvme_id_ns id; + nvme_mi_ctrl_t ctrl; + enum ns_type type; + int rc; + + type = NS_ACTIVE; + test_set_transport_callback(ep, test_admin_id_ns_cb, &type); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_ns(ctrl, 1, &id); + assert(!rc); + assert(le64_to_cpu(id.nsze) == 1); +} + +static int test_admin_id_nsid_ctrl_list_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + __u16 cns, ctrlid; + __u32 nsid; + __u8 *hdr; + + hdr = (__u8 *)req->hdr; + assert(hdr[4] == nvme_admin_identify); + + assert(req->data_len == 0); + + cns = hdr[45] << 8 | hdr[44]; + assert(cns == NVME_IDENTIFY_CNS_CTRL_LIST); + + nsid = hdr[11] << 24 | hdr[10] << 16 | hdr[9] << 8 | hdr[8]; + assert(nsid == 0x01020304); + + ctrlid = hdr[47] << 8 | hdr[46]; + assert(ctrlid == 5); + + resp->data_len = sizeof(struct nvme_ctrl_list); + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_id_nsid_ctrl_list(struct nvme_mi_ep *ep) +{ + struct nvme_ctrl_list list; + nvme_mi_ctrl_t ctrl; + int rc; + + test_set_transport_callback(ep, test_admin_id_nsid_ctrl_list_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_nsid_ctrl_list(ctrl, 0x01020304, 5, &list); + assert(!rc); +} + +static int test_admin_id_secondary_ctrl_list_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + __u16 cns, ctrlid; + __u32 nsid; + __u8 *hdr; + + hdr = (__u8 *)req->hdr; + assert(hdr[4] == nvme_admin_identify); + + assert(req->data_len == 0); + + cns = hdr[45] << 8 | hdr[44]; + assert(cns == NVME_IDENTIFY_CNS_SECONDARY_CTRL_LIST); + + nsid = hdr[11] << 24 | hdr[10] << 16 | hdr[9] << 8 | hdr[8]; + assert(nsid == 0x01020304); + + ctrlid = hdr[47] << 8 | hdr[46]; + assert(ctrlid == 5); + + resp->data_len = sizeof(struct nvme_secondary_ctrl_list); + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_id_secondary_ctrl_list(struct nvme_mi_ep *ep) +{ + struct nvme_secondary_ctrl_list list; + nvme_mi_ctrl_t ctrl; + int rc; + + test_set_transport_callback(ep, test_admin_id_secondary_ctrl_list_cb, + NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_identify_secondary_ctrl_list(ctrl, 0x01020304, + 5, &list); + assert(!rc); +} + +static int test_admin_ns_mgmt_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + __u8 *rq_hdr, *rs_hdr, sel, csi; + struct nvme_id_ns *id; + __u32 nsid; + + rq_hdr = (__u8 *)req->hdr; + assert(rq_hdr[4] == nvme_admin_ns_mgmt); + + sel = rq_hdr[44]; + csi = rq_hdr[45]; + nsid = rq_hdr[11] << 24 | rq_hdr[10] << 16 | rq_hdr[9] << 8 | rq_hdr[8]; + + rs_hdr = (__u8 *)resp->hdr; + + switch (sel) { + case NVME_NS_MGMT_SEL_CREATE: + assert(req->data_len == sizeof(struct nvme_id_ns)); + id = req->data; + + /* No NSID on created namespaces */ + assert(nsid == 0); + assert(csi == 0); + + /* allow operations on nsze == 42, reject others */ + if (le64_to_cpu(id->nsze) != 42) { + rs_hdr[4] = 0; + /* response cdw0 is created NSID */ + rs_hdr[8] = 0x04; + rs_hdr[9] = 0x03; + rs_hdr[10] = 0x02; + rs_hdr[11] = 0x01; + } else { + rs_hdr[4] = NVME_MI_RESP_INVALID_PARAM; + } + break; + + case NVME_NS_MGMT_SEL_DELETE: + assert(req->data_len == 0); + /* NSID required on delete */ + assert(nsid == 0x05060708); + break; + + default: + assert(0); + } + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_ns_mgmt_create(struct nvme_mi_ep *ep) +{ + struct nvme_id_ns nsid; + nvme_mi_ctrl_t ctrl; + __u32 ns; + int rc; + + test_set_transport_callback(ep, test_admin_ns_mgmt_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_ns_mgmt_create(ctrl, &nsid, 0, &ns); + assert(!rc); + assert(ns == 0x01020304); + + nsid.nsze = 42; + rc = nvme_mi_admin_ns_mgmt_create(ctrl, &nsid, 0, &ns); + assert(rc); +} + +static void test_admin_ns_mgmt_delete(struct nvme_mi_ep *ep) +{ + nvme_mi_ctrl_t ctrl; + int rc; + + test_set_transport_callback(ep, test_admin_ns_mgmt_cb, NULL); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_ns_mgmt_delete(ctrl, 0x05060708); + assert(!rc); +} + +struct attach_op { + enum { + NS_ATTACH, + NS_DETACH, + } op; + struct nvme_ctrl_list *list; +}; + +static int test_admin_ns_attach_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct attach_op *op = data; + __u8 *rq_hdr, sel; + __u32 nsid; + + rq_hdr = (__u8 *)req->hdr; + assert(rq_hdr[4] == nvme_admin_ns_attach); + + sel = rq_hdr[44]; + nsid = rq_hdr[11] << 24 | rq_hdr[10] << 16 | rq_hdr[9] << 8 | rq_hdr[8]; + + assert(req->data_len == sizeof(*op->list)); + + assert(nsid == 0x02030405); + switch (op->op) { + case NS_ATTACH: + assert(sel == NVME_NS_ATTACH_SEL_CTRL_ATTACH); + break; + case NS_DETACH: + assert(sel == NVME_NS_ATTACH_SEL_CTRL_DEATTACH); + break; + default: + assert(0); + } + + assert(!memcmp(req->data, op->list, sizeof(*op->list))); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_ns_attach(struct nvme_mi_ep *ep) +{ + struct nvme_ctrl_list list = { 0 }; + struct attach_op aop; + nvme_mi_ctrl_t ctrl; + int rc; + + list.num = cpu_to_le16(2); + list.identifier[0] = 4; + list.identifier[1] = 5; + + aop.op = NS_ATTACH; + aop.list = &list; + + test_set_transport_callback(ep, test_admin_ns_attach_cb, &aop); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_ns_attach_ctrls(ctrl, 0x02030405, &list); + assert(!rc); +} + +static void test_admin_ns_detach(struct nvme_mi_ep *ep) +{ + struct nvme_ctrl_list list = { 0 }; + struct attach_op aop; + nvme_mi_ctrl_t ctrl; + int rc; + + list.num = cpu_to_le16(2); + list.identifier[0] = 6; + list.identifier[1] = 7; + + aop.op = NS_DETACH; + aop.list = &list; + + test_set_transport_callback(ep, test_admin_ns_attach_cb, &aop); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + rc = nvme_mi_admin_ns_detach_ctrls(ctrl, 0x02030405, &list); + assert(!rc); +} + +struct fw_download_info { + uint32_t offset; + uint32_t len; + void *data; +}; + +static int test_admin_fw_download_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct fw_download_info *info = data; + __u32 len, off; + __u8 *rq_hdr; + + rq_hdr = (__u8 *)req->hdr; + assert(rq_hdr[4] == nvme_admin_fw_download); + + len = rq_hdr[47] << 24 | rq_hdr[46] << 16 | rq_hdr[45] << 8 | rq_hdr[44]; + off = rq_hdr[51] << 24 | rq_hdr[50] << 16 | rq_hdr[49] << 8 | rq_hdr[48]; + + assert(off << 2 == info->offset); + assert(((len+1) << 2) == info->len); + + /* ensure that the request len matches too */ + assert(req->data_len == info->len); + + assert(!memcmp(req->data, info->data, len)); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_fw_download(struct nvme_mi_ep *ep) +{ + struct nvme_fw_download_args args; + struct fw_download_info info; + unsigned char fw[4096]; + nvme_mi_ctrl_t ctrl; + int rc, i; + + for (i = 0; i < sizeof(fw); i++) + fw[i] = i % 0xff; + + info.offset = 0; + info.len = 0; + info.data = fw; + args.data = fw; + args.args_size = sizeof(args); + + test_set_transport_callback(ep, test_admin_fw_download_cb, &info); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + /* invalid (zero) len */ + args.data_len = info.len = 1; + args.offset = info.offset = 0; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(rc); + + /* invalid (unaligned) len */ + args.data_len = info.len = 1; + args.offset = info.offset = 0; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(rc); + + /* invalid offset */ + args.data_len = info.len = 4; + args.offset = info.offset = 1; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(rc); + + /* smallest len */ + args.data_len = info.len = 4; + args.offset = info.offset = 0; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(!rc); + + /* largest len */ + args.data_len = info.len = 4096; + args.offset = info.offset = 0; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(!rc); + + /* offset value */ + args.data_len = info.len = 4096; + args.offset = info.offset = 4096; + rc = nvme_mi_admin_fw_download(ctrl, &args); + assert(!rc); +} + +struct fw_commit_info { + __u8 bpid; + __u8 action; + __u8 slot; +}; + +static int test_admin_fw_commit_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct fw_commit_info *info = data; + __u8 bpid, action, slot; + __u8 *rq_hdr; + + rq_hdr = (__u8 *)req->hdr; + assert(rq_hdr[4] == nvme_admin_fw_commit); + + bpid = (rq_hdr[47] >> 7) & 0x1; + slot = rq_hdr[44] & 0x7; + action = (rq_hdr[44] >> 3) & 0x7; + + assert(!!bpid == !!info->bpid); + assert(slot == info->slot); + assert(action == info->action); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_fw_commit(struct nvme_mi_ep *ep) +{ + struct nvme_fw_commit_args args; + struct fw_commit_info info; + nvme_mi_ctrl_t ctrl; + int rc; + + args.args_size = sizeof(args); + info.bpid = args.bpid = 0; + + test_set_transport_callback(ep, test_admin_fw_commit_cb, &info); + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + /* all zeros */ + info.bpid = args.bpid = 0; + info.slot = args.slot = 0; + info.action = args.action = 0; + rc = nvme_mi_admin_fw_commit(ctrl, &args); + assert(!rc); + + /* all ones */ + info.bpid = args.bpid = 1; + info.slot = args.slot = 0x7; + info.action = args.action = 0x7; + rc = nvme_mi_admin_fw_commit(ctrl, &args); + assert(!rc); + + /* correct fields */ + info.bpid = args.bpid = 1; + info.slot = args.slot = 2; + info.action = args.action = 3; + rc = nvme_mi_admin_fw_commit(ctrl, &args); + assert(!rc); +} + +struct format_data { + __u32 nsid; + __u8 lbafu; + __u8 ses; + __u8 pil; + __u8 pi; + __u8 mset; + __u8 lbafl; +}; + +static int test_admin_format_nvm_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct nvme_format_nvm_args *args = data; + __u8 *rq_hdr; + __u32 nsid; + + assert(req->data_len == 0); + + rq_hdr = (__u8 *)req->hdr; + + assert(rq_hdr[4] == nvme_admin_format_nvm); + + nsid = rq_hdr[11] << 24 | rq_hdr[10] << 16 | rq_hdr[9] << 8 | rq_hdr[8]; + assert(nsid == args->nsid); + + assert(((rq_hdr[44] >> 0) & 0xf) == args->lbaf); + assert(((rq_hdr[44] >> 4) & 0x1) == args->mset); + assert(((rq_hdr[44] >> 5) & 0x7) == args->pi); + + assert(((rq_hdr[45] >> 0) & 0x1) == args->pil); + assert(((rq_hdr[45] >> 1) & 0x7) == args->ses); + assert(((rq_hdr[45] >> 4) & 0x3) == args->lbafu); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_format_nvm(struct nvme_mi_ep *ep) +{ + struct nvme_format_nvm_args args = { 0 }; + nvme_mi_ctrl_t ctrl; + int rc; + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + test_set_transport_callback(ep, test_admin_format_nvm_cb, &args); + + /* ensure we have the cdw0 bit field encoding correct, by testing twice + * with inverted bit values */ + args.args_size = sizeof(args); + args.nsid = 0x04030201; + args.lbafu = 0x3; + args.ses = 0x0; + args.pil = 0x1; + args.pi = 0x0; + args.mset = 0x1; + args.lbaf = 0x0; + + rc = nvme_mi_admin_format_nvm(ctrl, &args); + assert(!rc); + + args.nsid = ~args.nsid; + args.lbafu = 0; + args.ses = 0x7; + args.pil = 0x0; + args.pi = 0x7; + args.mset = 0x0; + args.lbaf = 0xf; + + rc = nvme_mi_admin_format_nvm(ctrl, &args); + assert(!rc); +} + +static int test_admin_sanitize_nvm_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct nvme_sanitize_nvm_args *args = data; + __u8 *rq_hdr; + __u32 ovrpat; + + assert(req->data_len == 0); + + rq_hdr = (__u8 *)req->hdr; + + assert(rq_hdr[4] == nvme_admin_sanitize_nvm); + + assert(((rq_hdr[44] >> 0) & 0x7) == args->sanact); + assert(((rq_hdr[44] >> 3) & 0x1) == args->ause); + assert(((rq_hdr[44] >> 4) & 0xf) == args->owpass); + + assert(((rq_hdr[45] >> 0) & 0x1) == args->oipbp); + assert(((rq_hdr[45] >> 1) & 0x1) == args->nodas); + + ovrpat = rq_hdr[51] << 24 | rq_hdr[50] << 16 | + rq_hdr[49] << 8 | rq_hdr[48]; + assert(ovrpat == args->ovrpat); + + test_transport_resp_calc_mic(resp); + + return 0; +} + +static void test_admin_sanitize_nvm(struct nvme_mi_ep *ep) +{ + struct nvme_sanitize_nvm_args args = { 0 }; + nvme_mi_ctrl_t ctrl; + int rc; + + ctrl = nvme_mi_init_ctrl(ep, 5); + assert(ctrl); + + test_set_transport_callback(ep, test_admin_sanitize_nvm_cb, &args); + + args.args_size = sizeof(args); + args.sanact = 0x7; + args.ause = 0x0; + args.owpass = 0xf; + args.oipbp = 0x0; + args.nodas = 0x1; + args.ovrpat = ~0x04030201; + + rc = nvme_mi_admin_sanitize_nvm(ctrl, &args); + assert(!rc); + + args.sanact = 0x0; + args.ause = 0x1; + args.owpass = 0x0; + args.oipbp = 0x1; + args.nodas = 0x0; + args.ovrpat = 0x04030201; + + rc = nvme_mi_admin_sanitize_nvm(ctrl, &args); + assert(!rc); +} + +/* test that we set the correct offset and size on get_log() calls that + * are split into multiple requests */ +struct log_data { + int n; +}; + +static int test_admin_get_log_split_cb(struct nvme_mi_ep *ep, + struct nvme_mi_req *req, + struct nvme_mi_resp *resp, + void *data) +{ + struct log_data *ldata = data; + uint32_t len, off; + __u8 *rq_hdr; + + assert(req->data_len == 0); + + rq_hdr = (__u8 *)req->hdr; + + assert(rq_hdr[4] == nvme_admin_get_log_page); + + /* from the MI message's DOFST/DLEN fields */ + off = rq_hdr[31] << 24 | rq_hdr[30] << 16 | rq_hdr[29] << 8 | rq_hdr[28]; + len = rq_hdr[35] << 24 | rq_hdr[34] << 16 | rq_hdr[33] << 8 | rq_hdr[32]; + + /* we should have a full-sized start and middle, and a short end */ + switch (ldata->n) { + case 0: + assert(len == 4096); + assert(off == 0); + break; + case 1: + assert(len == 4096); + assert(off == 4096); + break; + case 2: + assert(len == 4); + assert(off == 4096 * 2); + break; + default: + assert(0); + } + + /* ensure we've sized the expected response correctly */ + assert(resp->data_len == len); + memset(resp->data, ldata->n & 0xff, len); + + test_transport_resp_calc_mic(resp); + + ldata->n++; + + return 0; +} + +static void test_admin_get_log_split(struct nvme_mi_ep *ep) +{ + unsigned char buf[4096 * 2 + 4]; + struct nvme_get_log_args args; + struct log_data ldata; + nvme_mi_ctrl_t ctrl; + int rc; + + ldata.n = 0; + test_set_transport_callback(ep, test_admin_get_log_split_cb, &ldata); + + ctrl = nvme_mi_init_ctrl(ep, 5); + + args.args_size = sizeof(args); + args.lid = 1; + args.log = buf; + args.len = sizeof(buf); + + rc = nvme_mi_admin_get_log(ctrl, &args); + + assert(!rc); + + /* we should have sent three commands */ + assert(ldata.n == 3); +} + #define DEFINE_TEST(name) { #name, test_ ## name } struct test { const char *name; @@ -769,6 +1801,24 @@ struct test { DEFINE_TEST(mi_config_get_mtu), DEFINE_TEST(mi_config_set_freq), DEFINE_TEST(mi_config_set_freq_invalid), + DEFINE_TEST(get_features_nodata), + DEFINE_TEST(get_features_data), + DEFINE_TEST(set_features), + DEFINE_TEST(admin_id_alloc_ns_list), + DEFINE_TEST(admin_id_active_ns_list), + DEFINE_TEST(admin_id_alloc_ns), + DEFINE_TEST(admin_id_active_ns), + DEFINE_TEST(admin_id_nsid_ctrl_list), + DEFINE_TEST(admin_id_secondary_ctrl_list), + DEFINE_TEST(admin_ns_mgmt_create), + DEFINE_TEST(admin_ns_mgmt_delete), + DEFINE_TEST(admin_ns_attach), + DEFINE_TEST(admin_ns_detach), + DEFINE_TEST(admin_fw_download), + DEFINE_TEST(admin_fw_commit), + DEFINE_TEST(admin_format_nvm), + DEFINE_TEST(admin_sanitize_nvm), + DEFINE_TEST(admin_get_log_split), }; static void run_test(struct test *test, FILE *logfd, nvme_mi_ep_t ep) diff --git a/test/test.c b/test/test.c index bc5393b..2f24e1e 100644 --- a/test/test.c +++ b/test/test.c @@ -19,7 +19,6 @@ #include <string.h> #include <stdbool.h> #include <inttypes.h> -#include <uuid.h> #include <libnvme.h> #include <ccan/endian/endian.h> @@ -377,8 +376,8 @@ int main(int argc, char **argv) nvme_ctrl_get_state(c)); nvme_ctrl_for_each_ns(c, n) { - char uuid_str[40]; - uuid_t uuid; + char uuid_str[NVME_UUID_LEN_STRING]; + unsigned char uuid[NVME_UUID_LEN]; printf(" `- %s lba size:%d lba max:%" PRIu64 "\n", nvme_ns_get_name(n), nvme_ns_get_lba_size(n), @@ -388,7 +387,7 @@ int main(int argc, char **argv) printf(" nguid:"); print_hex(nvme_ns_get_nguid(n), 16); nvme_ns_get_uuid(n, uuid); - uuid_unparse_lower(uuid, uuid_str); + nvme_uuid_to_string(uuid, uuid_str); printf(" uuid:%s csi:%d\n", uuid_str, nvme_ns_get_csi(n)); } diff --git a/test/uuid.c b/test/uuid.c new file mode 100644 index 0000000..9146453 --- /dev/null +++ b/test/uuid.c @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/** + * This file is part of libnvme. + * Copyright (c) 2022 Daniel Wagner, SUSE Software Solutions + */ + +#include <string.h> +#include <stdlib.h> + +#include <ccan/array_size/array_size.h> + +#include <libnvme.h> + +static int test_rc; + +struct test_data { + unsigned char uuid[NVME_UUID_LEN]; + const char *str; +}; + +static struct test_data test_data[] = { + { { 0 }, "00000000-0000-0000-0000-000000000000" }, + { { [0 ... 15] = 0xff }, "ffffffff-ffff-ffff-ffff-ffffffffffff" }, + { { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10 }, + "00010203-0405-0607-0809-0a0b0c0d0f10" }, +}; + +static void check_str(const char *exp, const char *res) +{ + if (!strcmp(res, exp)) + return; + + printf("ERROR: got '%s', expected '%s'\n", res, exp); + + test_rc = 1; +} + +static void print_uuid_hex(const unsigned char uuid[NVME_UUID_LEN]) +{ + for (int i = 0; i < NVME_UUID_LEN; i++) + printf("%02x", uuid[i]); +} + +static void check_uuid(unsigned char exp[NVME_UUID_LEN], + unsigned char res[NVME_UUID_LEN]) +{ + if (!memcmp(exp, res, NVME_UUID_LEN)) + return; + + printf("ERROR: got '"); + print_uuid_hex(exp); + printf("', expected '"); + print_uuid_hex(res); + printf("'\n"); +} + +static void tostr_test(struct test_data *test) +{ + char str[NVME_UUID_LEN_STRING]; + + if (nvme_uuid_to_string(test->uuid, str)) { + test_rc = 1; + printf("ERROR: nvme_uuid_to_string() failed\n"); + return; + } + check_str(test->str, str); +} + +static void fromstr_test(struct test_data *test) +{ + + unsigned char uuid[NVME_UUID_LEN]; + + if (nvme_uuid_from_string(test->str, uuid)) { + test_rc = 1; + printf("ERROR: nvme_uuid_from_string() failed\n"); + return; + } + check_uuid(test->uuid, uuid); +} + +static void random_uuid_test(void) +{ + unsigned char uuid1[NVME_UUID_LEN], uuid2[NVME_UUID_LEN]; + char str1[NVME_UUID_LEN_STRING], str2[NVME_UUID_LEN_STRING]; + + if (nvme_uuid_random(uuid1) || nvme_uuid_random(uuid2)) { + test_rc = 1; + printf("ERROR: nvme_uuid_random() failed\n"); + return; + } + + if (!memcmp(uuid1, uuid2, NVME_UUID_LEN)) { + test_rc = 1; + printf("ERROR: generated random numbers are equal\n"); + return; + } + + if (nvme_uuid_to_string(uuid1, str1) || + nvme_uuid_to_string(uuid2, str2)) { + test_rc = 1; + printf("ERROR: could not stringify randomly generated UUID\n"); + return; + } + printf("PASS: generated UUIDs %s %s\n", str1, str2); +} + +int main(void) +{ + for (int i = 0; i < ARRAY_SIZE(test_data); i++) + tostr_test(&test_data[i]); + + for (int i = 0; i < ARRAY_SIZE(test_data); i++) + fromstr_test(&test_data[i]); + + random_uuid_test(); + + return test_rc ? EXIT_FAILURE : EXIT_SUCCESS; +} |