NVME-RESV-REPORT(1)

πŸ’… nvme-resv-report β€” the NVMe Manual, but make it bestie (section 1, obvi)

okay so this is nvme-resv-report from the NVMe Manual (section 1, she's a user command, very demure) β€” "Send NVMe Reservation Report, parse the result" ✨


🌸 NAME 🌸

nvme-resv-report β€” send the NVMe Reservation Report and then parse whatever comes back, bestie πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

nvme [<global-options>] resv report <device>
                        [--namespace-id=<nsid> | -n <nsid>]
                        [--numd=<num-dwords> | -d <num-dwords>]
                        [--eds | -e]
                        [--raw-binary | -b]

like, look at her. iconic. πŸ‘‘


πŸŽ€ DESCRIPTION πŸŽ€

the Reservation Report command returns a Reservation Status data structure to host memory, and that structure describes the registration and reservation status of a namespace. no cap, that's the whole job. πŸ’…

the size of the Reservation Status data structure is a function of the number of controllers in the NVM Subsystem that are associated with hosts that are registrants of the namespace β€” basically, there's a Registered Controller data structure for each such controller. one per controller, periodt. ✨

and here's the thing: that size is not known in advance, so the transfer gets sized automatically. the fixed-size header of the structure is read first, and then the structure is read again with a buffer large enough to hold every registrant the namespace reports. it's giving "measure twice, read twice" 🫢 if you'd rather not vibe with the automatic sizing, pass --numd to transfer a fixed length instead.

okay so heads up, because this matters: the bare nvme resv-report form (without a space) still works as a deprecated alias and will be removed in a future major version. new scripts should use nvme resv report instead. we're moving on, she's retiring, wish her well 😭

✨ OPTIONS ✨

  • -n <nsid>, --namespace-id=<nsid> β€” retrieve the reservation report structure for the given nsid. this is required for the character devices, or it overrides the block nsid if given. also you can pass the broadcast value 0xffffffff as either all or -1. iykyk πŸ’œ
  • -d <num-dwords>, --numd=<num-dwords> β€” transfer a fixed number of Dwords of the Reservation Status structure instead of sizing the transfer automatically. careful though: the count is zero-based, so one Dword more than requested gets transferred. she's quirky like that πŸ™ˆ
  • -e, --eds β€” request extended Data Structure: if this bit is set to a 1, then the controller returns the Extended Data Structure. slay πŸ¦‹
  • -b, --raw-binary β€” print the raw buffer to stdout. structure is not parsed by the program, so it's just vibes and bytes πŸ”₯

πŸ‘‘ GLOBAL OPTIONS πŸ‘‘

these live at the top-level nvme command, but they're available to this subcommand too. so generous of them πŸ’–

  • --dry-run β€” print the command that would be executed, but do not actually execute it. manifesting without committing 🧚
  • --no-ioctl-probing β€” disable probing for 64-bit IOCTL support.
  • --no-retries β€” disable retry logic on transient errors. one shot, one opportunity ⭐
  • -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, so pick your fighter πŸ’€
  • --output-format-version=<version> β€” select the output format version. version 1 uses the original field naming, while version 2 (the default) provides more consistent and script-friendly field names. other versions are rejected. sorry to those versions 😭
  • --quiet β€” suppress informational messages. errors are still reported, and --quiet cancels any --verbose for the library log level. she's not silencing the truth, just the chatter 🌸
  • --set-options=<key=value>[,<key=value>...] β€” set libnvme library options for this invocation. supported keys are force-4k, mi-probe-enabled, test-base-dir and test-sysfs-dir. mix and match, it's a whole menu πŸ“
  • --timeout=<ms> β€” set the timeout for the command in milliseconds. infinite or -1 waits without a time limit (0xffffffff). no clock, no stress πŸ’œ
  • -v, --verbose β€” increase the level of detail in the output. may be specified multiple times to further increase verbosity. go off, stack her 🌈
also!! these options can be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file. the command line is the main character, always πŸ’…

⭐ EXAMPLES ⭐

No examples yet. (tragic, i know. we're waiting on the lore 😭)


πŸ’€ NVME πŸ’€

Part of the nvme-user suite. one of us, one of us 🫢


and that's the page, bestie!! this one came from the NVMe Manual, dated 10/30/2026, and it's the work of the nvme-user suite β€” go be iconic with your reservations πŸ‘‘βœ¨πŸ’–

πŸ“¦ where this page comes from