NVME-CONFIG-STATUS(1)
π nvme-config-status β a little vibe check for your legacy NVMe-oF config files (from the NVMe Manual, bestie)
okay so picture this: you're on the nvme command, and you want the tea on your legacy pre-3.0 config files. That's literally what nvme-config-status is for β it reports the legacy NVMe-oF config.json/discovery.conf conversion status. It does not touch anything. It's the friend who just tells you what's going on. π«Ά
β¨ SYNOPSIS β¨
nvme [<global-options>] config status
that's it. that's the whole thing. slay. π
π¦ DESCRIPTION π¦
So this command reports the on-disk state of the legacy pre-3.0 configuration files, which are:
/usr/local/etc/nvme/config.json/usr/local/etc/nvme/discovery.conf
β¦and also the state of the *.converted marker that nvme config convert leaves sitting next to each one it converts. π
Heads up bestie: this command never modifies or converts anything. It only reports state. No cap. It literally just looks and tells you.
You get one line printed for each legacy file that has something to report, and there are three possible vibes a file can be giving:
- present, not yet converted β the file exists and has never been converted. (it's justβ¦ sitting there. untouched. iconic in a lazy way.)
- present, already converted β the file exists and a
<file>.convertedmarker confirms it was converted. That marker is a symlink pointing back at the file itself, and it's left in place deliberately so that a rollback to a pre-INI installation still finds the original legacy file. Once rollback is no longer a concern, both the file and the marker can be deleted. β¨ - not present (a stale marker exists) β the file is gone but its
<file>.convertedmarker is still hanging around, dangling. This is left over from an earlier conversion and is always safe to delete. ποΈ
Now β a file with neither itself nor a marker present is silently skipped. There's just nothing to say about it, and honestly? fair. But if that's true of both config.json and discovery.conf, you don't get two silent files and zero output β instead you get a single line:
no legacy configuration found
β¦which is so much better than staring at a blank terminal wondering if it broke. π
π§ the stale marker situation (important lore)
Because the marker is a symlink keyed on the file's path, not its content, you can get a little chaos: if a file gets deleted and later replaced by a different, never-converted file at the same path (for example, a package rollback followed by a reinstall), the marker will resolve again β even though the new file itself was never converted. π
This command does not try to detect that case. Instead, when a file and a resolving marker are both present, it adds a note that the marker may be stale and that the file's contents should be verified against the INI configuration β so a human can decide what to do. You! You're the human! π
And if you're in doubt? Just use nvme config convert. Converting an already-converted file is a safe no-op, so you literally cannot mess it up. π₯
πΈ OPTIONS πΈ
π GLOBAL OPTIONS π
These are defined at the top-level nvme command and are available to this subcommand (yes, even here, they love to be everywhere):
--dry-runβ Print the command that would be executed, but do not actually execute it. (window shopping, basically ποΈ)--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. (the original really does have that stray apostrophe beforejsonβ we keep it, character for character, because we respect the lore π)--output-format-version=<version>β Select the output format version. Version1uses the original field naming, while version2(default) provides more consistent and script-friendly field names. Other versions are rejected. β--quietβ Suppress informational messages. Errors are still reported, and--quietcancels any--verbosefor the library log level. (shhh π€«)--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. (spam it, honestly)
Btw these options can also be set as machine-wide defaults in nvme-cli.conf(5). But a command-line flag always overrides the file. always. periodt. π
β EXIT STATUS β
- Returns
0if neither legacy file has anything to report. π - Returns a non-zero status if
config.jsonordiscovery.conf, or a.convertedmarker for either, is present β regardless of which of the states listed above applies. π€
and this is the key part, bestie: use the printed output, not the exit status, to tell those states apart. The exit code is giving "something's there," not "here's which thing." iykyk.
π EXAMPLES π
okay let's actually look at it in action:
- Check the system's legacy configuration state,
config.jsonalready converted and nodiscovery.confever present:
# nvme config status
/usr/local/etc/nvme/config.json: present, already converted (/usr/local/etc/nvme/config.json.converted exists) -- delete both once rollback is no longer a concern
note: if /usr/local/etc/nvme/config.json was replaced after conversion (for example, a package rollback followed by reinstall), this marker may be stale; verify its contents against the INI configuration before deleting either file
- Check a system that never had a legacy configuration:
# nvme config status
no legacy configuration found; nothing to convert
look at that clean output. not a single legacy config in sight. we love a fresh install. π
π SEE ALSO π
go read these too, they're all part of the family:
nvme-config-convert(1)nvme-config-show(1)nvme-config-validate(1)nvme-connect-all(1)nvme-discover(1)https://github.com/linux-nvme/nvme-cli/blob/master/libnvme/design/CONFIG.md
π NVME π
Part of the nvme-user suite. π§
and that's the whole page!! mwah π β this lil rewrite was brought to you by the NVMe manual source, version/date 10/30/2026, filed under NVME-CONFIG-STATUS(1). take care of your legacy files, bestie, and remember: verify before you delete πβ¨
π¦ 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