NVME-REGISTRY-UPDA(1)
π nvme-registry-update β like, the page for writing an attribute into a controller's registry entry
okay so bestie, you're reading the nvme-registry-update(1) page from the NVMe Manual and honestly? it's giving "tiny command, big responsibility" β¨ let's get into it.
πΈ NAME πΈ
nvme-registry-update β write an attribute to a controller's registry entry
β¨ SYNOPSIS β¨
nvme [<global-options>] registry update <device>
--attr=<ATTR> | -a <ATTR>
--value=<VAL> | -V <VAL>
that's the whole shape of it, no cap π«Ά
π¦ DESCRIPTION π¦
so basically you're writing an attribute into the ownership registry entry for an NVMe-oF controller. the registry lives under /run/nvme/registry/ and it's literally one directory per live controller, with one plain-text file per attribute. if the entry directory isn't there yet? it gets created. main character energy π
the <device> is the NVMe controller name (like nvme3), and it's given as a positional argument β the /dev/ prefix is optional, so you can include it or not, no stress.
okay now the important part, listen up π the owner attribute is normally recorded when the connection is created (like, by nvme connect --owner). changing it by hand can stop an orchestrator from protecting the controller, so updating owner prompts for confirmation when you run it interactively. non-interactive callers (hi, scripts π) just proceed without prompting. and before you ask β no, this is not access control, it's a guard against accidental mistakes. a user with root can just edit the files under /run/nvme/registry/ directly. iykyk.
writes are atomic, which is iconic: a temporary file gets written and synced, then renamed into place, so you don't get corruption under concurrent access. slay π₯
π OPTIONS π
-a <ATTR>,--attr=<ATTR>β the attribute name you wanna write (e.g.note,owner).-V <VAL>,--value=<VAL>β the new value for that attribute. periodt.
π GLOBAL OPTIONS π
these bad boys are defined at the top-level nvme command and they're available to this subcommand too:
--dry-runβ print the command that would be executed, but don't actually execute it. vibes only, no consequences β¨--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 tonormal,tabular,'json, orbinary. 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 (the default) gives you more consistent and script-friendly field names. other versions are rejected, sorry bestie π--quietβ suppress informational messages. errors still get reported, and--quietcancels any--verbosefor the library log level.--set-options=<key=value>[,<key=value>...]β set libnvme library options for this invocation. supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir.--timeout=<ms>β set the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff).-v,--verboseβ increase the level of detail in the output. may be specified multiple times to further increase verbosity. the way that just keeps going π
these options can also be set as machine-wide defaults in nvme-cli.conf(5). a command-line flag always overrides the file β flag wins, always π
π EXAMPLES π
- attach a free-form note to
nvme3:
# nvme registry update nvme3 --attr note --value "maintenance 2026-07"
- update a previously written note:
# nvme registry update nvme3 --attr note --value "released"
π§ SEE ALSO π§
nvme-registry-list(1) nvme-registry-retrieve(1) nvme-registry-delete(1) nvme-disconnect-all(1)
π NVME π
part of the nvme-user suite π«Ά
and that's the whole page bestie!! π this little gem landed on 10/30/2026 and it's part of the nvme-user suite β go forth and update those registry attributes responsibly, mwah ππ
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms