From 5d64e8a26388e2abbf6a6585d17392d6e944ae7b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 1 Jul 2023 00:38:51 +0200 Subject: Merging upstream version 2.5. Signed-off-by: Daniel Baumann --- completions/_nvme | 1070 +++++++++++++++++++++++++++++++++-- completions/bash-nvme-completion.sh | 114 +++- 2 files changed, 1141 insertions(+), 43 deletions(-) (limited to 'completions') diff --git a/completions/_nvme b/completions/_nvme index 7702fcc..49736f5 100644 --- a/completions/_nvme +++ b/completions/_nvme @@ -8,8 +8,11 @@ _nvme () { local -a _cmds _cmds=( + 'list:identify basic information for all NVMe namespaces' + 'list-subsys:identify information for subsystems' 'id-ctrl:display information about the controller' 'id-ns:display information about the namespace' + 'id-ns-granularity:display namespace granularity list' 'id-ns-lba-format:display information about the namespace capability fields for specific LBA format' 'list-ns:identify all namespace(s) attached' 'cmdset-ind-id-ns:display I/O Command Set Independent information about the namespace' @@ -22,48 +25,87 @@ _nvme () { 'list-ctrl:identify all controller(s) attached' 'nvm-id-ctrl:display information about the nvm command set' 'nvm-id-ns:display information about the namespace of nvm command set' - 'id-ns-lba-format:display information about the namespace of nvm command set capability fields for specific LBA format' + 'nvm-id-ns-lba-format:display information about the namespace of nvm command set capability fields for specific LBA format' + 'primary-ctrl-caps:display primary controller capabilities' + 'list-secondary:identify secondary controller list associated with the primary controller' + 'ns-descs:display namespace identification descriptors' + 'id-nvmset:display entries for NVM Set identifiers' + 'id-uuid:display list of supported Vendor Specific UUIDs' 'list-endgrp:display information about nvme endurance group list' 'get-ns-id:get namespace id of opened block device' 'get-log:retrieve any log in raw format' 'predictable-lat-log:retrieve predictable latency per nvmset log' 'pred-lat-event-agg-log:retrieve predictable latency event aggregate log' 'persistent-event-log:retrieve presistent event log' + 'telemetry-log:retrieve telemetry log' 'fw-log:retrieve fw log' + 'changed-ns-list-log:retrieve changed namespaces log' 'smart-log:retrieve SMART log' 'smart-log-add:retrieve additional SMART log' + 'ana-log:retrieve ANA log' 'error-log:retrieve error log' + 'effects-log:retrieve command effects log page and print the table' + 'endurance-log:retrieves endurance groups log page and prints the log' 'endurance-event-agg-log:retrieve endurance group event aggregate log' 'lba-status-log:retrieve lba status log' - 'resv-notif-log: retrieve reservation notification log' + 'resv-notif-log:retrieve reservation notification log' 'get-feature:display a controller feature' + 'device-self-test:implementing the device self-test feature' + 'self-test-log:retrieve the self-test log' 'set-feature:set a controller feature and show results' + 'set-property:writes and shows the defined NVMe controller property for NVMe over Fabric' + 'get-property:Reads and shows the defined NVMe controller property for NVMe over Fabric' 'format:apply new block format to namespace' 'fw-activate:activate a firmware on the device' 'fw-download:download a firmware to the device' - 'admin-passthru:submit a passthrough IOCTL' - 'io-passthru:submit a passthrough IOCTL' + 'admin-passthru:submit a passthrough admin command IOCTL' + 'io-passthru:submit a passthrough io command IOCTL' 'security-send:send security/secure data to controller' 'security-recv:ask for security/secure data from controller' + 'get-lba-status:display information about potentially unrecoverable LBAs' 'resv-acquire:acquire reservation on a namespace' 'resv-register:register reservation on a namespace' 'resv-release:release reservation on a namespace' 'resv-report:report reservation on a namespace' + 'dsm:submit a Data Set Management command' 'copy:submit a simple copy command' 'flush:submit a flush' 'compare:compare data on device to data elsewhere' 'read:submit a read command' 'write:submit a write command' - 'capacity-mgmt: submit capacity management command' - 'show-regs:shows the controller registers; requires admin character device' - 'boot-part-log: retrieve boot partition log' + 'capacity-mgmt:submit capacity management command' + 'write-zeroes:submit an NVMe write zeroes command' + 'write-uncor:submit an NVMe write uncorrectable command' + 'verify:submit an NVMe Verify command' + 'sanitize:submit a sanitize command' + 'sanitize-log:retrieve sanitize log and show it' + 'reset:reset the NVMe controller' + 'subsystem-reset:reset the NVMe subsystem' + 'ns-rescan:rescan the NVMe namespaces' + 'show-regs:show the controller registers; require admin character device' + 'boot-part-log:retrieve boot partition log' 'fid-support-effects-log:retrieve fid support and effects log' - 'supported-log-pages: retrieve support log pages details' + 'supported-log-pages:retrieve support log pages details' 'lockdown:submit a lockdown command' - 'media-unit-stat-log: retrieve media unit status log pages details' - 'supported-cap-config-log: retrieve support log pages details' - 'show-topology: show subystem topology' + 'media-unit-stat-log:retrieve media unit status log pages details' + 'supported-cap-config-log:retrieve the list of Supported Capacity Configuration Descriptors' + 'discover:send Get Log Page request to Discovery Controller' + 'connect-all:discover NVMeoF subsystems and connect to them' + 'connect:connect to NVMeoF subsystem' + 'dim:send Discovery Information Management command to a Discovery Controller (DC)' + 'disconnect:disconnect from NVMeoF subsystem' + 'disconnect-all:disconnect from all connected NVMeoF subsystems' + 'gen-hostnqn:generate a host NVMe Qualified Name' + 'show-hostnqn:show the host NQN configured for the system' + 'dir-receive:read directive parameters of the specified directive type' + 'dir-send:set directive parameters of the specified directive type' + 'virt-mgmt:submit a Virtualization Management command' + 'rpmb:submit an NVMe RPMB command' + 'show-topology:show subsystem topology' + 'version:show the program version' + 'ocp:OCP cloud SSD extensions' 'help:print brief descriptions of all nvme commands' + 'json:dump output in json format' ) local expl @@ -73,8 +115,172 @@ _nvme () { if (( CURRENT == 1 )); then _describe -t commands "nvme subcommands" _cmds return + elif (( CURRENT > 2 )); then + case ${words[1]} in + (ocp) + case ${words[2]} in + (smart-add-log) + local _smart_add_log + _smart_add_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp smart-add-log options" _smart_add_log + ;; + (latency-monitor-log) + local _latency_monitor_log + _latency_monitor_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp latency-monitor-log options" _latency_monitor_log + ;; + (set-latency-monitor-feature) + local _set_latency_monitor_feature + _set_latency_monitor_feature=( + /dev/nvme':supply a device to use (required)' + --active_bucket_timer_threshold=':Active Bucket Timer Threshold' + -t':alias for --active_bucket_timer_threshold' + --active_threshold_a=':Active Threshold A' + -a':alias for --active_threshold_a' + --active_threshold_a=':Active Threshold B' + -b':alias for --active_threshold_b' + --active_threshold_c=':Active Threshold C' + -c':alias for --active_threshold_c' + --active_threshold_d=':Active Threshold D' + -d':alias for --active_threshold_d' + --active_latency_config=':Active Latency Configuration' + -f':alias for --active_latency_config' + --active_latency_minimum_window=':Active Latency Minimum Window' + -w':alias for --active_latency_minimum_window' + --debug_log_trigger_enable='Debug Log Trigger Enable' + -r':alias for --debug_log_trigger_enable' + --discard_debug_log='Discard Debug Log' + -l':alias for --discard_debug_log' + --latency_monitor_feature_enable='Latency Monitor Feature Enable' + -e':alias for --latency_monitor_feature_enable' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp set-latency-monitor-feature options" _set_latency_monitor_feature + ;; + (internal-log) + local _internal_log + _internal_log=( + /dev/nvme':supply a device to use (required)' + --telemetry_type=':Telemetry Type; host (Create bit) or controller' + -t':alias for --telemetry_type' + --telemetry_data_area=':Telemetry Data Area; 1 or 3' + -a':alias for --telemetry_data_area' + --output-file=':Output file name with path' + -o':alias for --output-file' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp internal-log options" _internal_log + ;; + (clear-fw-activate-history) + local _clear_fw_activate_history + _clear_fw_activate_history=( + /dev/nvme':supply a device to use (required)' + --no-uuid':Skip UUID index search' + -n':alias for --no-uuid' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp clear-fw-activate-history options" _clear_fw_activate_history + ;; + (eol-plp-failure-mode) + local _eol_plp_failure_mode + _eol_plp_failure_mode=( + /dev/nvme':supply a device to use (required)' + --mode=':0-3: default/rom/wtm/normal' + -m':alias for --mode' + --save':Specifies that the controller shall save the attribute' + -s':alias for --save' + --sel=':0-3,8: current/default/saved/supported/changed:' + -S':alias for --sel' + --no-uuid':Skip UUID index search' + -n':alias for --no-uuid' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp eol-plp-failure-mode options" _eol_plp_failure_mode + ;; + (clear-pcie-correctable-error-counters) + local _clear_pcie_correctable_error_counters + _clear_pcie_correctable_error_counters=( + /dev/nvme':supply a device to use (required)' + --no-uuid':Skip UUID index search' + -n':alias for --no-uuid' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp clear-pcie-correctable-error-counters options" _clear_pcie_correctable_error_counters + ;; + (vs-fw-activate-history) + local _vs_fw_activate_history + _vs_fw_activate_history=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp vs-fw-activate-history options" _vs_fw_activate_history + ;; + (device-capability-log) + local _device_capability_log + _device_capability_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp device-capability-log options" _device_capability_log + ;; + (*) + _files + ;; + esac + ;; + (sanitize) + case ${words[CURRENT-1]} in + (--sanact=|-a) + _values '' 'exit-failure' 'start-block-erase' 'start-overwrite' 'start-crypto-erase' + ;; + (*) + _files + ;; + esac + ;; + (*) + _files + ;; + esac + return else case ${words[CURRENT-1]} in + (list) + local _list + _list=( + --output-format=':Output format: normal|json' + -o':alias for --output-format' + --verbose':show infos verbosely' + -v':alias of --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme list options" _list + ;; + (list-subsys) + local _listsubsys + _listsubsys=( + --output-format=':Output format: normal|json' + -o':alias for --output-format' + --verbose':show infos verbosely' + -v':alias of --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme list-subsys options" _listsubsys + ;; (id-ctrl) local _idctrl _idctrl=( @@ -86,7 +292,6 @@ _nvme () { --vendor-specific':also dump binary vendor infos' -v':alias of --vendor-specific' ) - _arguments '*:: :->subcmds' _describe -t commands "nvme id-ctrl options" _idctrl ;; @@ -106,6 +311,16 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme id-ns options" _idns ;; + (id-ns-granularity) + local _idns_granularity + _idns_granularity=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme id-ns-granularity options" _idns_granularity + ;; (id-ns-lba-format) local _idns_lba_format _idns_lba_format=( @@ -130,6 +345,10 @@ _nvme () { -n':alias of --namespace-id' --csi=':command set identifier' -y':alias of --csi' + --all':show all namespaces in the subsystem, whether attached or inactive' + -a':alias of --all' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' ) _arguments '*:: :->subcmds' _describe -t commands "nvme list-ns options" _listns @@ -192,7 +411,7 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme nvm-id-ns options" _nvmidns ;; - (id-ns-lba-format) + (nvm-id-ns-lba-format) local _nvm_idns_lba_format _nvm_idns_lba_format=( /dev/nvme':supply a device to use (required)' @@ -208,6 +427,76 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme nvm-id-ns-lba-format options" _nvm_idns_lba_format ;; + (primary-ctrl-caps) + local _primary_ctrl_caps + _primary_ctrl_caps=( + /dev/nvme':supply a device to use (required)' + --cntlid=':show infos for controller ' + -c':alias of --cntlid' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme primary-ctrl-caps options" _primary_ctrl_caps + ;; + (list-secondary) + local _listsecondary + _listsecondary=( + /dev/nvme':supply a device to use (required)' + --cntid=':show infos for lowest controller ' + -c':alias of --cntid' + --namespace-id=':show infos for namespace ' + -n':alias of --namespace-id' + --num-entries=':number of entries to retrieve' + -e':alias of --num-entries' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme list-secondary options" _listsecondary + ;; + (ns-descs) + local _ns_descs + _ns_descs=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':show infos for namespace ' + -n':alias of --namespace-id' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --raw-binary':dump infos in binary format' + -b':alias of --raw-binary' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ns-descs options" _ns_descs + ;; + (id-nvmset) + local _id_nvmset + _id_nvmset=( + /dev/nvme':supply a device to use (required)' + --nvmset_id=':NVM Set Identify value' + -i':alias of --nvmset_id' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme id-nvmset options" _id_nvmset + ;; + (id-uuid) + local _id_uuid + _id_uuid=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --raw-binary':dump infos in binary format' + -b':alias of --raw-binary' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme id-uuid options" _id_uuid + ;; (list-endgrp) local _listendgrp _listendgrp=( @@ -216,7 +505,7 @@ _nvme () { -i':alias of --endgrp-id' ) _arguments '*:: :->subcmds' - _describe -t commands "nvme list-ns options" _listendgrp + _describe -t commands "nvme list-endgrp options" _listendgrp ;; (create-ns) local _createns @@ -320,6 +609,22 @@ _nvme () { -n':alias of --namespace-id' --raw-binary':dump infos in binary format' -b':alias of --raw-binary' + --aen=':result of the aen, use to override log id' + -a':alias of --aen' + --lpo=':log page offset specifies the location within a log page from where to start returning data' + -o':alias of --lpo' + --lsi=':log specific identifier specifies an identifier that is required for a particular log page' + -S':alias of --lsi' + --rae':Retain an Asynchronous Event' + -r':alias of --rae' + --uuid-index=':uuid index' + -U':alias for --uuid-index' + --csi=':command set identifier' + -y':alias of --csi' + --ot':offset type' + -O':alias of --ot' + --xfer-len=':read chunk size (default 4k)' + -x':alias of --xfer-len' ) _arguments '*:: :->subcmds' _describe -t commands "nvme get-log options" _getlog @@ -328,7 +633,7 @@ _nvme () { local _persistenteventlog _persistenteventlog=( /dev/nvme':supply a device to use (required)' - --action=': action the controller shall take for this log page' + --action=':action the controller shall take for this log page' -a':alias to --action' --log-len=':number of bytes to show for requested log' -l':alias of --log-len' @@ -336,15 +641,35 @@ _nvme () { -b':alias of --raw-binary' ) _arguments '*:: :->subcmds' - _describe -t commands "persistent-event-log options" _persistenteventlog + _describe -t commands "nvme persistent-event-log options" _persistenteventlog + ;; + (telemetry-log) + local _telemetry_log + _telemetry_log=( + /dev/nvme':supply a device to use (required)' + --output-file=':telemetry data output write' + -o':alias for --output-file' + --host-generate=':Have the host tell the controller to generate the report' + -g':alias to --host-generate' + --controller-init':Gather report generated by the controller' + -c':alias of --controller-init' + --data-area':Pick which telemetry data area to report' + -d':alias of --data-area' + --data-area':Pick which telemetry data area to report' + -d':alias of --data-area' + --rae':Retain an Asynchronous Event' + -r':alias to --rae' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme telemetry-log options" _telemetry_log ;; (pred-lat-event-agg-log) local _predlateventagglog _predlateventagglog=( /dev/nvme':supply a device to use (required)' - --log-entries=': Number of pending NVM Set Entries log list' + --log-entries=':Number of pending NVM Set Entries log list' -e':alias to --log-entries' - --rae': Retain an Asynchronous Event' + --rae':Retain an Asynchronous Event' -r':alias to --rae' --raw-binary':dump infos in binary format' -b':alias of --raw-binary' @@ -356,7 +681,7 @@ _nvme () { local _predictablelatlog _predictablelatlog=( /dev/nvme':supply a device to use (required)' - --nvmset-id=': NVM Set Identifier on which log page retrieve info' + --nvmset-id=':NVM Set Identifier on which log page retrieve info' -i':alias to --nvmset-id' --raw-binary':dump infos in binary format' -b':alias of --raw-binary' @@ -374,6 +699,18 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme fw-log options" _fwlog ;; + (changed-ns-list-log) + local _changed_ns_list_log + _changed_ns_list_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --raw-binary':dump infos in binary format' + -b':alias of --raw-binary' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme changed-ns-list-log options" _changed_ns_list_log + ;; (smart-log) local _smartlog _smartlog=( @@ -398,6 +735,18 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme smart-log-add options" _add ;; + (ana-log) + local _ana_log + _ana_log=( + /dev/nvme':supply a device to use (required)' + --groups':Return ANA groups only' + -g':alias to --groups' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ana-log options" _ana_log + ;; (error-log) local _errlog _errlog=( @@ -412,13 +761,41 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme error-log options" _errlog ;; + (effects-log) + local _effects_log + _effects_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + --raw-binary':dump infos in binary format' + -b':alias to --raw-binary' + --csi=':command set identifier' + -c':alias of --csi' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme effects-log options" _effects_log + ;; + (endurance-log) + local _endurance_log + _endurance_log=( + /dev/nvme':supply a device to use (required)' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --group-id=':The endurance group identifier' + -g':alias of --group-id' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme endurance-log options" _endurance_log + ;; (endurance-event-agg-log) local _enduranceeventagglog _enduranceeventagglog=( /dev/nvme':supply a device to use (required)' - --log-entries=': Number of Endurance Group Event Agg Entries log list' + --log-entries=':Number of Endurance Group Event Agg Entries log list' -e':alias to --log-entries' - --rae': Retain an Asynchronous Event' + --rae':Retain an Asynchronous Event' -r':alias to --rae' --raw-binary':dump infos in binary format' -b':alias of --raw-binary' @@ -430,7 +807,7 @@ _nvme () { local _lbastatuslog _lbastatuslog=( /dev/nvme':supply a device to use (required)' - --rae': Retain an Asynchronous Event' + --rae':Retain an Asynchronous Event' -r':alias to --rae' ) _arguments '*:: :->subcmds' @@ -448,9 +825,9 @@ _nvme () { local _bootpartlog _bootpartlog=( /dev/nvme':supply a device to use (required)' - --lsp=': log specific field' + --lsp=':log specific field' -s':alias to --lsp' - --output-file=': boot partition data output write' + --output-file=':boot partition data output write' -f':alias for --output-file' ) _arguments '*:: :->subcmds' @@ -477,11 +854,39 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme get-feature options" _getf ;; + (device-self-test) + local _device_self_test + _device_self_test=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':Indicate the namespace in which the device self-test has to be carried out' + -n':alias to --namespace-id' + --self-test-code=':This field specifies the action taken by the device self-test command' + -s':alias for --self-test-code' + --wait':Wait for the test to finish' + -w':alias to --wait' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme device-self-test options" _device_self_test + ;; + (self-test-log) + local _self_test_log + _self_test_log=( + /dev/nvme':supply a device to use (required)' + --dst-entries=':Indicate how many DST log entries to be retrieved' + -e':alias to --dst-entries' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --verbose':show infos verbosely' + -v':alias of --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme self-test-log options" _self_test_log + ;; (lockdown) local _lockdown _lockdown=( /dev/nvme':supply a device to use (required)' - --ofi=': Opcode or Feature Identifier(OFI) (required)' + --ofi=':Opcode or Feature Identifier(OFI) (required)' -o':alias of --ofi' --ifc=':Interface (INF) field Information (required)' -f':alias of --ifc' @@ -515,6 +920,30 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme set-feature options" _setf ;; + (set-property) + local _set_property + _set_property=( + /dev/nvme':supply a device to use (required)' + --offset=':the offset of the property' + -o':alias to --offset' + --value=':the value of the property to be set' + -v':alias to --value' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme set-property options" _set_property + ;; + (get-property) + local _get_property + _get_property=( + /dev/nvme':supply a device to use (required)' + --offset=':the offset of the property' + -o':alias to --offset' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme get-property options" _get_property + ;; (format) local _format _format=( @@ -579,6 +1008,150 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme capacity-mgmt options" _fwd ;; + (write-zeroes) + local _write_zeroes + _write_zeroes=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --start-block=':64-bit address of the first logical block to be written' + -s':alias of --start-block' + --block-count=':number of logical blocks on device to write' + -c':alias of --block-count' + --dir-type=':directive type' + -T':alias of --dir-type' + --deac':Set DEAC bit, requesting controller to deallocate specified logical blocks' + -d':alias of --deac' + --limited-retry':if included, controller should try less hard to send data to media (if not included, all available data-recovery means used)' + -l':alias of --limited-retry' + --force-unit-access':data shall be written to nonvolatile media before command completion is indicated' + -f':alias of --force-unit-access' + --prinfo=':protection information and check field' + -p':alias of --prinfo' + --ref-tag=':reference tag (for end to end PI)' + -r':alias of --ref-tag' + --app-tag-mask=':application tag mask (for end to end PI)' + -m':alias of --app-tag-mask' + --app-tag=':application tag (for end to end PI)' + -a':alias of --app-tag' + --storage-tag=':storage tag for end-to-end PI' + -S':alias of --storage-tag' + --storage-tag-check':Storage Tag field shall be checked as part of end-to-end data protection processing' + -C':alias of --storage-tag-check' + --dir-spec=':directive specific' + -D':alias of --dir-spec' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme write-zeroes options" _write_zeroes + ;; + (write-uncor) + local _write_uncor + _write_uncor=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --start-block=':64-bit address of the first logical block to be written' + -s':alias of --start-block' + --block-count=':number of logical blocks on device to write' + -c':alias of --block-count' + --dir-type=':directive type' + -T':alias of --dir-type' + --dir-spec':directive specific' + -S':alias of --dir-spec' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme write-uncor options" _write_uncor + ;; + (verify) + local _verify + _verify=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --start-block=':64-bit address of the first logical block to be verified' + -s':alias of --start-block' + --block-count=':number of logical blocks on device to verify' + -c':alias of --block-count' + --limited-retry':if included, controller should try less hard to send data to media (if not included, all available data-recovery means used)' + -l':alias of --limited-retry' + --force-unit-access':data shall be verified from nonvolatile media before command completion is indicated' + -f':alias of --force-unit-access' + --prinfo=':protection information and check field' + -p':alias of --prinfo' + --ref-tag=':reference tag (for end to end PI)' + -r':alias of --ref-tag' + --app-tag=':application tag (for end to end PI)' + -a':alias of --app-tag' + --app-tag-mask=':application tag mask (for end to end PI)' + -m':alias of --app-tag-mask' + --storage-tag=':storage tag for end-to-end PI' + -S':alias of --storage-tag' + --storage-tag-check':Storage Tag field shall be checked as part of end-to-end data protection processing' + -C':alias of --storage-tag-check' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme verify options" _verify + ;; + (sanitize) + local _sanitize + _sanitize=( + /dev/nvme':supply a device to use (required)' + --no-dealloc':No deallocate after sanitize' + -d':alias of --no-dealloc' + --oipbp':Overwrite invert pattern between passes' + -i':alias of --oipbp' + --owpass=':Overwrite pass count' + -n':alias of --owpass' + --ause':Allow unrestricted sanitize exit' + -u':alias of --ause' + --sanact=':Sanitize action: 1 = Exit failure mode, 2 = Start block erase, 3 = Start overwrite, 4 = Start crypto erase' + -a':alias of --sanact' + --ovrpat=':Overwrite pattern' + -p':alias of --ovrpat' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme sanitize options" _sanitize + ;; + (sanitize-log) + local _sanitize_log + _sanitize_log=( + /dev/nvme':supply a device to use (required)' + --rae':Retain an Asynchronous Event' + -r':alias of --rae' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + --raw-binary':dump infos in binary format' + -b':alias of --raw-binary' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme sanitize-log options" _sanitize_log + ;; + (reset) + local _reset + _reset=( + /dev/nvme':supply a device to use (required)' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme reset options" _reset + ;; + (subsystem-reset) + local _subsystem_reset + _subsystem_reset=( + /dev/nvme':supply a device to use (required)' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme subsystem-reset options" _subsystem_reset + ;; + (ns-rescan) + local _ns_rescan + _ns_rescan=( + /dev/nvme':supply a device to use (required)' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ns-rescan options" _ns_rescan + ;; (supported-log-pages) local _support _support=( @@ -747,6 +1320,28 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme security-recv options" _srecv ;; + (get-lba-status) + local _get_lba_status + _get_lba_status=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':show infos for namespace ' + -n':alias of --namespace-id' + --start-lba=':Starting LBA(SLBA) in 64-bit address of the first logical block' + -s':alias for --start-lba' + --max-dw=':Maximum Number of Dwords(MNDW) specifies maximum number of dwords to return' + -m':alias for --max-dw' + --action=':Action Type(ATYPE) specifies the mechanism' + -a':alias for --action' + --range-len=':Range Length(RL) specifies the length of the range of contiguous LBAs beginning at SLBA' + -l':alias for --range-len' + --timeout':value for timeout' + -t':alias for --timeout' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme get-lba-status options" _get_lba_status + ;; (resv-acquire) local _acq _acq=( @@ -819,6 +1414,30 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme resv-register options" _reg ;; + (dsm) + local _dsm + _dsm=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --ctx-attrs=':Comma separated list of the context attributes in each range' + -a':alias of --ctx-attrs' + --blocks':Comma separated list of the number of blocks in each range' + -b':alias of --blocks' + --slbs':Comma separated list of the starting block in each range' + -s':alias of --slbs' + --ad':Attribute Deallocate' + -d':alias of --ad' + --idw':Attribute Integral Dataset for Write' + -w':alias of --idw' + --idr':Attribute Integral Dataset for Read' + -r':alias of --idr' + --cdw11=':value for command dword 11' + -c':alias for --cdw11' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme dsm options" _dsm + ;; (copy) local _copy _copy=( @@ -849,11 +1468,11 @@ _nvme () { -m':alias of --app-tag-mask' --expected-app-tag-masks=':expected lba application tag masks (read part, comma-separated list)' -M':alias of --expected-app-tag-masks' - --dir-type':directive type (write part)' + --dir-type=':directive type (write part)' -T':alias of --dir-type' - --dir-spec':directive specific (write part)' + --dir-spec=':directive specific (write part)' -S':alias of --dir-spec' - --format':source range entry format' + --format=':source range entry format' -F':alias of --format' ) _arguments '*:: :->subcmds' @@ -923,7 +1542,7 @@ _nvme () { -m':alias of --app-tag-mask' --app-tag=':application tag (for end to end PI)' -a':alias of --app-tag' - --limited-retry=':if included, controller should try less hard to retrieve data from media (if not included, all available data-recovery means used)' + --limited-retry':if included, controller should try less hard to retrieve data from media (if not included, all available data-recovery means used)' -l':alias of --limited-retry' --latency':latency statistics will be output following read' -t':alias of --latency' @@ -959,7 +1578,7 @@ _nvme () { -m':alias of --app-tag-mask' --app-tag=':application tag (for end to end PI)' -a':alias of --app-tag' - --limited-retry=':if included, controller should try less hard to send data to media (if not included, all available data-recovery means used)' + --limited-retry':if included, controller should try less hard to send data to media (if not included, all available data-recovery means used)' -l':alias of --limited-retry' --latency':latency statistics will be output following write' -t':alias of --latency' @@ -989,6 +1608,357 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme fid-support-effects-log options" _fidsupporteffectslog ;; + (discover) + local _discover + _discover=( + --device=':use existing discovery controller device' + -d':alias for --device' + --transport=':transport type' + -t':alias for --transport' + --nqn=':subsystem nqn' + -n':alias for --nqn' + --traddr=':transport address' + -a':alias for --traddr' + --trsvcid=':transport service id (e.g. IP port)' + -s':alias for --trsvcid' + --host-traddr=':host traddr (e.g. FC WWN's)' + -w':alias for --host-traddr' + --host-iface=':host interface (for tcp transport)' + -f':alias for --host-iface' + --hostnqn=':user-defined hostnqn' + -q':alias for --hostnqn' + --hostid=':user-defined hostid (if default not used)' + -I':alias for --hostid' + --dhchap-secret=':user-defined dhchap key (if default not used)' + -S':alias for --dhchap-secret' + --nr-io-queues=':number of io queues to use (default is core count)' + -i':alias for --nr-io-queues' + --nr-write-queues=':number of write queues to use (default 0)' + -W':alias for --nr-write-queues' + --nr-poll-queues=':number of poll queues to use (default 0)' + -P':alias for --nr-poll-queues' + --queue-size=':number of io queue elements to use (default 128)' + -Q':alias for --queue-size' + --keep-alive-tmo=':keep alive timeout period in seconds' + -k':alias for --keep-alive-tmo' + --reconnect-delay=':reconnect timeout period in seconds' + -c':alias for --reconnect-delay' + --ctrl-loss-tmo=':controller loss timeout period in seconds' + -l':alias for --ctrl-loss-tmo' + --tos=':type of service' + -T':alias for --tos' + --keyring=':Keyring for TLS key lookup' + --tls_key=':TLS key to use' + --duplicate-connect':allow duplicate connections between same transport host and subsystem port' + -D':alias for --duplicate-connect' + --disable-sqflow':disable controller sq flow control (default false)' + -d':alias for --disable-sqflow' + --hdr-digest':enable transport protocol header digest (TCP transport)' + -g':alias for --hdr-digest' + --data-digest':enable transport protocol data digest (TCP transport)' + -G':alias for --data-digest' + --tls':enable TLS' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --raw':save raw output to file' + -r':alias of --raw' + --persistent':' + -p':alias for --' + --quiet':' + -S':alias for --' + --config=':Use specified JSON configuration file or none to disable' + -J':alias for --config' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + --dump-config':Dump configuration file to stdout' + -O':alias for --dump-config' + --force':Force persistent discovery controller creation' + --nbft':Only look at NBFT tables' + --no-nbft':Do not look at NBFT tables' + --nbft-patch=':user-defined path for NBFT tables' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme discover options" _discover + ;; + (connect-all) + local _connect_all + _connect_all=( + --device=':use existing discovery controller device' + -d':alias for --device' + --transport=':transport type' + -t':alias for --transport' + --nqn=':subsystem nqn' + -n':alias for --nqn' + --traddr=':transport address' + -a':alias for --traddr' + --trsvcid=':transport service id (e.g. IP port)' + -s':alias for --trsvcid' + --host-traddr=':host traddr (e.g. FC WWN's)' + -w':alias for --host-traddr' + --host-iface=':host interface (for tcp transport)' + -f':alias for --host-iface' + --hostnqn=':user-defined hostnqn' + -q':alias for --hostnqn' + --hostid=':user-defined hostid (if default not used)' + -I':alias for --hostid' + --dhchap-secret=':user-defined dhchap key (if default not used)' + -S':alias for --dhchap-secret' + --nr-io-queues=':number of io queues to use (default is core count)' + -i':alias for --nr-io-queues' + --nr-write-queues=':number of write queues to use (default 0)' + -W':alias for --nr-write-queues' + --nr-poll-queues=':number of poll queues to use (default 0)' + -P':alias for --nr-poll-queues' + --queue-size=':number of io queue elements to use (default 128)' + -Q':alias for --queue-size' + --keep-alive-tmo=':keep alive timeout period in seconds' + -k':alias for --keep-alive-tmo' + --reconnect-delay=':reconnect timeout period in seconds' + -c':alias for --reconnect-delay' + --ctrl-loss-tmo=':controller loss timeout period in seconds' + -l':alias for --ctrl-loss-tmo' + --tos=':type of service' + -T':alias for --tos' + --keyring=':Keyring for TLS key lookup' + --tls_key=':TLS key to use' + --duplicate-connect':allow duplicate connections between same transport host and subsystem port' + -D':alias for --duplicate-connect' + --disable-sqflow':disable controller sq flow control (default false)' + -d':alias for --disable-sqflow' + --hdr-digest':enable transport protocol header digest (TCP transport)' + -g':alias for --hdr-digest' + --data-digest':enable transport protocol data digest (TCP transport)' + -G':alias for --data-digest' + --tls':enable TLS' + --output-format=':Output format: normal|json|binary' + -o':alias for --output-format' + --raw':save raw output to file' + -r':alias of --raw' + --persistent':' + -p':alias for --' + --quiet':' + -S':alias for --' + --config=':Use specified JSON configuration file or none to disable' + -J':alias for --config' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + --dump-config':Dump configuration file to stdout' + -O':alias for --dump-config' + --force':Force persistent discovery controller creation' + --nbft':Only look at NBFT tables' + --no-nbft':Do not look at NBFT tables' + --nbft-patch=':user-defined path for NBFT tables' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme connect-all options" _connect_all + ;; + (connect) + local _connect + _connect=( + --transport=':transport type' + -t':alias for --transport' + --nqn=':subsystem nqn' + -n':alias for --nqn' + --traddr=':transport address' + -a':alias for --traddr' + --trsvcid=':transport service id (e.g. IP port)' + -s':alias for --trsvcid' + --host-traddr=':host transport address' + -w':alias for --host-traddr' + --host-iface=':host interface (for tcp transport)' + -f':alias for --host-iface' + --hostnqn=':user-defined hostnqn' + -q':alias for --hostnqn' + --hostid=':user-defined hostid (if default not used)' + -I':alias for --hostid' + --dhchap-secret=':user-defined dhchap key (if default not used)' + -S':alias for --dhchap-secret' + --nr-io-queues=':number of io queues to use (default is core count)' + -i':alias for --nr-io-queues' + --nr-write-queues=':number of write queues to use (default 0)' + -W':alias for --nr-write-queues' + --nr-poll-queues=':number of poll queues to use (default 0)' + -P':alias for --nr-poll-queues' + --queue-size=':number of io queue elements to use (default 128)' + -Q':alias for --queue-size' + --keep-alive-tmo=':keep alive timeout period in seconds' + -k':alias for --keep-alive-tmo' + --reconnect-delay=':reconnect timeout period in seconds' + -c':alias for --reconnect-delay' + --ctrl-loss-tmo=':controller loss timeout period in seconds' + -l':alias for --ctrl-loss-tmo' + --tos=':type of service' + -T':alias for --tos' + --keyring=':Keyring for TLS key lookup' + --tls_key=':TLS key to use' + --duplicate-connect':allow duplicate connections between same transport host and subsystem port' + -D':alias for --duplicate-connect' + --disable-sqflow':disable controller sq flow control (default false)' + -d':alias for --disable-sqflow' + --hdr-digest':enable transport protocol header digest (TCP transport)' + -g':alias for --hdr-digest' + --data-digest':enable transport protocol data digest (TCP transport)' + -G':alias for --data-digest' + --tls':enable TLS' + --dhchap-ctrl-secret=':user-defined dhchap controller key (for bi-directional authentication)' + -C':alias for --dhchap-ctrl-secret' + --config=':Use specified JSON configuration file or none to disable' + -J':alias for --config' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + --dump-config':Dump configuration file to stdout' + -O':alias for --dump-config' + --output-format=':Output format: normal|json' + -o':alias for --output-format' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme connect options" _connect + ;; + (dim) + local _dim + _dim=( + --nqn=':Comma-separated list of DC nqn' + -n':alias for --nqn' + --device=':Comma-separated list of DC nvme device handle' + -d':alias for --device' + --task=':The task to perform: register|deregister' + -t':alias for --task' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme dim options" _dim + ;; + (disconnect) + local _disconnect + _disconnect=( + --nqn=':subsystem nqn' + -n':alias for --nqn' + --device=':nvme device handle' + -d':alias for --device' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme disconnect options" _disconnect + ;; + (disconnect-all) + local _disconnect_all + _disconnect_all=( + --transport=':transport type' + -r':alias for --transport' + --verbose':Increase logging verbosity' + -v':alias for --verbose' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme disconnect-all options" _disconnect_all + ;; + (gen-hostnqn) + local _gen_hostnqn + _gen_hostnqn=( + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme gen-hostnqn options" _gen_hostnqn + ;; + (show-hostnqn) + local _show_hostnqn + _show_hostnqn=( + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme show-hostnqn options" _show_hostnqn + ;; + (dir-receive) + local _dir_receive + _dir_receive=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --data-len=':length for data buffer' + -l':alias of --data-len' + --raw-binary':dump output in binary format' + -b':alias for --raw-binary' + --dir-type=':directive type' + -D':alias of --dir-type' + --dir-spec=':directive specific' + -S':alias of --dir-spec' + --dir-oper=':directive operation' + -O':alias of --dir-oper' + --req-resource=':namespace stream requested' + -r':alias of --req-resource' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme dir-receive options" _dir_receive + ;; + (dir-send) + local _dir_send + _dir_send=( + /dev/nvme':supply a device to use (required)' + --namespace-id=':value for nsid' + -n':alias of --namespace-id' + --data-len=':length for data buffer' + -l':alias of --data-len' + --dir-type=':directive type' + -D':alias of --dir-type' + --target-dir=':target directive type to be enabled/disabled' + -T':alias of --target-dir' + --dir-spec=':directive specific' + -S':alias of --dir-spec' + --dir-oper=':directive operation' + -O':alias of --dir-oper' + --endir=':directive enable' + -e':alias of --endir' + --human-readable':show infos in readable format' + -H':alias of --human-readable' + --raw-binary':dump output in binary format' + -b':alias for --raw-binary' + --input-file=':write/send file (default stdin)' + -i':alias of --input-file' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme dir-send options" _dir_send + ;; + (virt-mgmt) + local _virt_mgmt + _virt_mgmt=( + /dev/nvme':supply a device to use (required)' + --cntlid=':Controller Identifier(CNTLID)' + -c':alias of --cntlid' + --rt=':Resource Type(RT): 0|1' + -r':alias of --rt' + --act=':Action(ACT): 1|7|8|9' + -a':alias of --act' + --nr=':Number of Controller Resources(NR)' + -n':alias of --nr' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme virt-mgmt options" _virt_mgmt + ;; + (rpmb) + local _rpmb + _rpmb=( + /dev/nvme':supply a device to use (required)' + --cmd=':RPMB action: info|program-key|read-counter|write-data|read-data|write-config|read-config' + -c':alias of --cmd' + --msgfile=':data file for read/write-data, read/write-config options' + -f':alias of --msgfile' + --keyfile=':key file that has authentication key to be used' + -g':alias of --keyfile' + --key=':key to be used for authentication' + -k':alias of --key' + --msg=':data to be written on write-data or write-config commands' + -d':alias of --msg' + --address=':Sector offset to read from or write to for an RPMB target, default 0' + -o':alias of --address' + --blocks=':Number of 512 blocks to read or write' + -b':alias of --blocks' + --target=':RPMB target - numerical value of 0 to 6, default 0' + -t':alias of --target' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme rpmb options" _rpmb + ;; (show-topology) local _showtopology _showtopology=( @@ -1002,6 +1972,29 @@ _nvme () { _arguments '*:: :->subcmds' _describe -t commands "nvme show-topology options" _showtopology ;; + (version) + local _version + _version=( + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme version options" _version + ;; + (ocp) + local _ocp + _ocp=( + smart-add-log':Retrieve extended SMART Information' + latency-monitor-log':Get Latency Monitor Log Page' + set-latency-monitor-feature':Set Latency Monitor feature' + internal-log':Retrieve and save internal device telemetry log' + clear-fw-activate-history':Clear firmware update history log"' + eol-plp-failure-mode':Define EOL or PLP circuitry failure mode' + clear-pcie-correctable-error-counters':Clear PCIe correctable error counters' + vs-fw-activate-history':Get firmware activation history log' + device-capability-log':Get Device capability log' + ) + _arguments '*:: :->subcmds' + _describe -t commands "nvme ocp options" _ocp + ;; (help) local _h _h=( id-ctrl id-ns list-ns id-iocs create-ns delete-ns attach-ns detach-ns @@ -1009,11 +2002,18 @@ _nvme () { set-feature format fw-activate fw-download admin-passthru io-passthru security-send security-recv resv-acquire resv-register resv-release resv-report flush compare read write copy show-regs persistent-event-log - pred-lat-event-agg-log nvm-id-ctrl endurance-event-agg-log lba-status-log - resv-notif-log capacity-mgmt id-domain boot-part-log fid-support-effects-log - supported-log-pages lockdown media-unit-stat-log id-ns-lba-format nvm-id-ns - nvm-id-ns-lba-format supported-cap-config-log show-topology - ) + pred-lat-event-agg-log nvm-id-ctrl endurance-event-agg-log lba-status-log + resv-notif-log capacity-mgmt id-domain boot-part-log fid-support-effects-log + supported-log-pages lockdown media-unit-stat-log id-ns-lba-format nvm-id-ns + nvm-id-ns-lba-format supported-cap-config-log show-topology + list list-subsys id-ns-granularity primary-ctrl-caps list-secondary ns-descs + id-nvmset id-uuid list-endgrp telemetry-log changed-ns-list-log ana-log + effects-log endurance-log device-self-test self-test-log set-property + get-property write-zeroes write-uncor verify sanitize sanitize-log reset + subsystem-reset ns-rescan get-lba-status dsm discover connect-all connect + dim disconnect disconnect-all gen-hostnqn show-hostnqn dir-receive dir-send + virt-mgmt rpmb version ocp + ) _arguments '*:: :->subcmds' _describe -t commands "help: infos on a specific nvme command, or provide no option to see a synopsis of all nvme commands" _h ;; diff --git a/completions/bash-nvme-completion.sh b/completions/bash-nvme-completion.sh index fae3ab4..8f451ff 100644 --- a/completions/bash-nvme-completion.sh +++ b/completions/bash-nvme-completion.sh @@ -5,8 +5,11 @@ # Kelly Kaoudis kelly.n.kaoudis at intel.com, Aug. 2015 nvme_list_opts () { - local opts="" + local opts="" local compargs="" + local vals="" + local opt="" + local val="" local nonopt_args=0 for (( i=0; i < ${#words[@]}-1; i++ )); do @@ -20,6 +23,19 @@ nvme_list_opts () { fi opts+=" " + vals+=" " + + if [[ $cur != -* ]] && [[ $cur != "" ]] && [[ $prev == "=" ]] && [[ ${words[$cword-2]} == --* ]]; then + opt+="${words[$cword-2]}" + val+="$cur" + elif [[ $cur == "" ]] && [[ $prev != "=" ]] || [[ $cur == "=" ]] && [[ $prev == --* ]]; then + opt+="$prev" + elif [[ $cur != "=" ]] && [[ $prev != --* ]] && [[ $prev != "=" ]]; then + opt+="$prev" + val+="$cur" + else + opt+="$cur" + fi # Listed here in the same order as in nvme-builtin.h case "$1" in @@ -88,13 +104,17 @@ nvme_list_opts () { opts+=" --endgrp-id= -i --output-format= -o" ;; "id-iocs") - opts+=" --controller-id= -c --output-format= -o --human-readable -H" + opts+=" --controller-id= -c" + ;; + "id-domain") + opts+=" --domain-id= -c --output-format= -o" ;; "create-ns") opts+=" --nsze= -s --ncap= -c --flbas= -f \ --dps= -d --nmic= -m --anagrp-id= -a --nvmset-id= -i \ --block-size= -b --timeout= -t --csi= -y --lbstm= -l \ - --nsze-si= -S --ncap-si= -C" + --nphndls= -n --nsze-si= -S --ncap-si= -C --azr -z --rar= -r \ + --ror= -o --rnumzrwa= -u --phndls= -p" ;; "delete-ns") opts+=" -namespace-id= -n --timeout= -t" @@ -318,11 +338,12 @@ nvme_list_opts () { --block-count= -c --deac -d --limited-retry -l \ --force-unit-access -f --prinfo= -p --ref-tag= -r \ --app-tag-mask= -m --app-tag= -a \ - --storage-tag= -S --storage-tag-check -C" + --storage-tag= -S --storage-tag-check -C \ + --dir-type= -T --dir-spec= -S" ;; "write-uncor") opts+=" --namespace-id= -n --start-block= -s \ - --block-count= -c" + --block-count= -c --dir-type= -T --dir-spec= -S" ;; "verify") opts+=" --namespace-id= -n --start-block= -s \ @@ -334,6 +355,11 @@ nvme_list_opts () { "sanitize") opts+=" --no-dealloc -d --oipbp -i --owpass= -n \ --ause -u --sanact= -a --ovrpat= -p" + case $opt in + --sanact|-a) + vals+=" exit-failure start-block-erase start-overwrite start-crypto-erase" + ;; + esac ;; "sanitize-log") opts+=" --rae -r --output-format= -o --human-readable -H \ @@ -428,9 +454,13 @@ nvme_list_opts () { ;; esac - opts+=" -h --help" + opts+=" -h --help -j --json" - COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) ) + if [[ $vals == " " ]]; then + COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) ) + else + COMPREPLY+=( $( compgen $compargs -W "$vals" -- $val ) ) + fi return 0 } @@ -1266,6 +1296,68 @@ plugin_inspur_opts () { return 0 } +plugin_ocp_opts () { + local opts="" + local compargs="" + + local nonopt_args=0 + for (( i=0; i < ${#words[@]}-1; i++ )); do + if [[ ${words[i]} != -* ]]; then + let nonopt_args+=1 + fi + done + + if [ $nonopt_args -eq 3 ]; then + opts="/dev/nvme* " + fi + + opts+=" " + + case "$1" in + "smart-add-log") + opts+=" --output-format= -o" + ;; + "latency-monitor-log") + opts+=" --output-format= -o" + ;; + "set-latency-monitor-feature") + opts+=" --active_bucket_timer_threshold= -t \ + --active_threshold_a= -a --active_threshold_b= -b \ + --active_threshold_c= -c --active_threshold_d= -d \ + --active_latency_config= -f \ + --active_latency_minimum_window= -w \ + --debug_log_trigger_enable -r --discard_debug_log= -l \ + --latency_monitor_feature_enable= -e" + ;; + "internal-log") + opts+=" --telemetry_type= -t --telemetry_data_area= -a \ + --output-file= -o" + ;; + "clear-fw-activate-history") + opts+=" --no-uuid -n" + ;; + "eol-plp-failure-mode") + opts+=" --mode= -m --save -s --sel= -S --no-uuid -n" + ;; + "clear-pcie-correctable-error-counters") + opts+=" --no-uuid -n" + ;; + "vs-fw-activate-history") + opts+=" --output-format= -o" + ;; + "device-capability-log") + opts+=" --output-format= -o" + ;; + "help") + opts+=$NO_OPTS + ;; + esac + + COMPREPLY+=( $( compgen $compargs -W "$opts" -- $cur ) ) + + return 0 +} + _nvme_subcmds () { local cur prev words cword _init_completion || return @@ -1320,6 +1412,11 @@ _nvme_subcmds () { [nvidia]="id-ctrl" [ymtc]="smart-log-add" [inspur]="nvme-vendor-log" + [ocp]="smart-add-log latency-monitor-log \ + set-latency-monitor-feature internal-log \ + clear-fw-activate-history eol-plp-failure-mode \ + clear-pcie-correctable-error-counters \ + vs-fw-activate-history device-capability-log" ) # Associative array mapping plugins to coresponding option completions @@ -1341,6 +1438,7 @@ _nvme_subcmds () { [nvidia]="plugin_nvidia_opts" [ymtc]="plugin_ymtc_opts" [inspur]="plugin_inspur_opts" + [ocp]="plugin_ocp_opts" ) # Top level commands @@ -1348,7 +1446,7 @@ _nvme_subcmds () { id-ns-granularity list-ns list-ctrl \ id-ns-lba-format nvm-id-ns nvm-id-ns-lba-format \ nvm-id-ctrl primary-ctrl-caps list-secondary \ - ns-descs id-nvmset id-uuid id-iocs create-ns \ + ns-descs id-nvmset id-uuid id-iocs id-domain create-ns \ delete-ns get-ns-id get-log telemetry-log \ fw-log changed-ns-list-log smart-log ana-log \ error-log effects-log endurance-log \ -- cgit v1.2.3