NVME-GET-FEATURE(1)

NAME
nvme-get-feature - Gets an NVMe feature, returns applicable results

SYNOPSIS

nvme [<global-options>] get-feature <device>
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--feature-id=<fid> | -f <fid>]
                        [--uuid-index=<uuid-index> | -U <uuid_index>]
                        [--data-len=<data-len> | -l <data-len>]
                        [--sel=<select> | -s <select>] [--raw-binary | -b]
                        [--cdw11=<cdw11> | -c <cdw11>] [--changed | -C]

DESCRIPTION

Submits an NVMe Get Feature admin command and returns the applicable results. This may be the feature’s value, or may also include a feature structure if the feature requires it (ex: LBA Range Type).

The <device> parameter is mandatory and may be either the NVMe character device (ex: /dev/nvme0), or a namespace block device (ex: /dev/nvme0n1).

On success, the returned feature’s structure (if applicable) may be returned in one of several ways depending on the option flags; the structure may parsed by the program and printed in a readable format if it is a known structure, displayed in hex, or the raw buffer may be printed to stdout for another program to parse.

OPTIONS

-n <nsid>, --namespace-id=<nsid>
    Retrieve the feature for the given nsid. This is optional and most features do not use this value.

-f <fid>, --feature-id=<fid>
    The feature id to send with the command. Value provided should be in hex.
    Value | Definition
    0x01 | arbitration | Arbitration
    0x02 | power-mgmt | Power Management
    0x03 | lba-range | LBA Range Type
    0x04 | temp-thresh | Temperature Threshold
    0x05 | err-recovery | Error Recovery
    0x06 | volatile-wc | Volatile Write Cache
    0x07 | num-queues | Number of Queues
    0x08 | irq-coalesce | Interrupt Coalescing
    0x09 | irq-config | Interrupt Vector Configuration
    0x0a | write-atomic | Write Atomicity Normal
    0x0b | async-event | Asynchronous Event Configuration
    0x0c | auto-pst | Autonomous Power State Transition
    0x0d | host-mem-buf | Host Memory Buffer
    0x0e | timestamp | Timestamp
    0x0f | kato | Keep Alive Timer
    0x10 | hctm | Host Controlled Thermal Management
    0x11 | nopsc | Non-Operational Power State Config
    0x12 | rrl | Read Recovery Level Config
    0x13 | plm-config | Predictable Latency Mode Config
    0x14 | plm-window | Predictable Latency Mode Window
    0x15 | lba-sts-interval | LBA Status Information Report Interval
    0x16 | host-behavior | Host Behavior Support
    0x17 | sanitize | Sanitize Config
    0x18 | endurance-evt-cfg | Endurance Group Event Configuration
    0x19 | iocs-profile | I/O Command Set Profile
    0x1a | spinup-control | Spinup Control
    0x1b | power-loss-signal | Power Loss Signaling Config
    0x1c | perf-characteristics | Performance Characteristics
    0x1d | fdp | Flexible Data Placement
    0x1e | fdp-events | FDP Events
    0x1f | ns-admin-label | Namespace Admin Label
    0x20 | key-value | Key Value Configuration
    0x21 | ctrl-data-queue | Controller Data Queue
    0x78 | emb-mgmt-ctrl-addr | Embedded Management Controller Address
    0x79 | host-mgmt-agent-addr | Host Management Agent Address
    0x7d | enh-ctrl-metadata | Enhanced Controller Metadata
    0x7e | ctrl-metadata | Controller Metadata
    0x7f | ns-metadata | Namespace Metadata
    0x80 | sw-progress | Software Progress Marker
    0x81 | host-id | Host Identifier
    0x82 | resv-mask | Reservation Notification Mask
    0x83 | resv-persist | Reservation Persistence
    0x84 | write-protect | Namespace Write Protection Config
    0x85 | bp-write-protect | Boot Partition Write Protection Config

-s <select>, --sel=<select>
    Select (SEL): This field specifies which value of the attributes to return in the provided data:
    Select | Description
    0 | Current
    1 | Default
    2 | Saved
    3 | Supported capabilities
    4-7 | Reserved

-U <uuid-index>, --uuid-index=<uuid-index>
    UUID Index of the feature

-l <data-len>, --data-len=<data-len>
    The data length for the buffer returned for this feature. Most known features do not use this value. The exception is LBA Range Type

-c <cdw11>, --cdw11=<cdw11>
    The value for command dword 11, if applicable.

-b, --raw-binary
    Print the raw feature buffer to stdout if the feature returns a structure.

-C, --changed
    This option will show feature changed.

GLOBAL OPTIONS

The following options are defined at the top-level nvme command and are available to this subcommand:

--dry-run
    Print the command that would be executed, but do not actually execute it.

--no-ioctl-probing
    Disable probing for 64-bit IOCTL support.

--no-retries
    Disable retry logic on transient errors.

-o <fmt>, --output-format=<fmt>
    Set the reporting format to normal, tabular, 'json, or binary. Only one output format may be used at a time.

--output-format-version=<version>
    Select the output format version. Version 1 uses the original field naming, while version 2 (default) provides more consistent and script-friendly field names.

--timeout=<ms>
    Set the timeout for the command in milliseconds.

-v, --verbose
    Increase the level of detail in the output. May be specified multiple times to further increase verbosity.

These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file.

EXAMPLES

    • Retrieves the feature for Number of Queues, or feature id 7:

        # nvme get-feature /dev/nvme0 -f 7

    • The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be printed to the screen in human readable format:

        # nvme get-feature /dev/nvme0 -f 3

    • Retrieves the feature for the some vendor specific feature and specifically requesting a buffer be allocate for this feature, which will be displayed to the user in as a hex dump:

        # nvme get-feature /dev/nvme0 -f 0xc0 -l 512

    Get feature with UUID index

    # nvme get-feature /dev/nvme0 -f 0xc0 -l 512 -U 0x1

    • The following retrieves the feature for the LBA Range Type, which implicitly requires a buffer and will be saved to a file in its raw format:

        # nvme get-feature /dev/nvme0 -f 3 --raw-binary > lba_range.raw

    It is probably a bad idea to not redirect stdout when using this mode.

NVME

Part of the nvme-user suite