From: AlanCui4080 <me@alancui.cc>
To: linux-nvme@lists.infradead.org, Keith Busch <kbusch@kernel.org>,
Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@lst.de>,
Sagi Grimberg <sagi@grimberg.me>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH RFC V2 RESEND] nvme: make providing NGUID as UUID usage less scary
Date: Mon, 11 May 2026 16:29:58 +0800 [thread overview]
Message-ID: <p3A0AxbHQ4aKNhfIeaPQng@alancui.cc> (raw)
In-Reply-To: <UPNVP7_KTI2VieaAyBtUMA@alancui.cc>
Since we decide to show the prp passthrough usage warning at device
initial discovery stage and degrade it to a informational message,
here is a warning that I think are essentially the same.
grep -C3 -rn "dev_warn_once" ./drivers/nvme/*
```
./drivers/nvme/host/sysfs.c-147- * we have no UUID set
./drivers/nvme/host/sysfs.c-148- */
./drivers/nvme/host/sysfs.c-149- if (uuid_is_null(&ids->uuid)) {
./drivers/nvme/host/sysfs.c:150: dev_warn_once(dev,
./drivers/nvme/host/sysfs.c-151- "No UUID available providing old NGUID\n");
./drivers/nvme/host/sysfs.c-152- return sysfs_emit(buf, "%pU\n", ids->nguid);
./drivers/nvme/host/sysfs.c-153- }
```
This warning will only complain for the first partition of the first device also.
And for NVMe devices, according to the NVM-Express-1_4 specification p.175 Figure 251:
"Bit 9 (UUID List): ...", UUID is not mandatory. So let's degrade it into a
informational message on initial discovery for every device.
Signed-off-by: Alan Cui <me@alancui.cc>
---
v2: move the hint to nvme_init_ns_head instead of nvme_validate_ns
v2: clean the commit message lines
In my understanding, the nvme_init_ns_head will be called each time
a namespace created, and it does some checking on ids so we also place
the hint there, and here is the result of dmesg applied current patch.
resend v2: add Ccs to all maintainers
resend v2: see https://lists.infradead.org/pipermail/linux-nvme/2026-May/062831.html
After discussion, I begin to think we should treat this as a warning,
since the way kernel generate UUID by NGUID is not a valid RFC4122 UUID,
and NVMe specification requires "The Universally Unique Identifier is defined in RFC4122"
However the "No UUID available providing old NGUID" is should be reported
per device anyway.
[ 4.502052] nvme nvme1: pci function 0000:05:00.0
[ 4.502060] nvme nvme0: pci function 0000:01:00.0
[ 4.508544] nvme nvme1: missing or invalid SUBNQN field.
[ 4.508664] nvme nvme1: D3 entry latency set to 8 seconds
[ 4.512422] nvme nvme0: missing or invalid SUBNQN field.
[ 4.517581] nvme nvme0: allocated 32 MiB host memory buffer (1 segment).
[ 4.523519] nvme nvme0: 8/0/0 default/read/poll queues
[ 4.524761] nvme nvme1: 16/0/0 default/read/poll queues
[ 4.525438] nvme nvme0: No UUID available, uuid_show providing old NGUID
[ 4.526683] nvme nvme1: No UUID available, uuid_show providing old NGUID
[ 4.527243] nvme0n1: p1 p2 p3 p4 p5 p6
[ 4.528351] nvme1n1: p1
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 766e9cc4ffca..70856856a99c 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -4007,6 +4007,10 @@ static int nvme_init_ns_head(struct nvme_ns *ns, struct nvme_ns_info *info)
ctrl->quirks |= NVME_QUIRK_BOGUS_NID;
}
+ if (uuid_is_null(&info->ids.uuid)) {
+ dev_info(ctrl->device, "No UUID available, uuid_show providing old NGUID\n");
+ }
+
mutex_lock(&ctrl->subsys->lock);
head = nvme_find_ns_head(ctrl, info->nsid);
if (!head) {
diff --git a/drivers/nvme/host/sysfs.c b/drivers/nvme/host/sysfs.c
index 16c6fea4b2db..ea8bce9887f9 100644
--- a/drivers/nvme/host/sysfs.c
+++ b/drivers/nvme/host/sysfs.c
@@ -147,8 +147,6 @@ static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,
* we have no UUID set
*/
if (uuid_is_null(&ids->uuid)) {
- dev_warn_once(dev,
- "No UUID available providing old NGUID\n");
return sysfs_emit(buf, "%pU\n", ids->nguid);
}
return sysfs_emit(buf, "%pU\n", &ids->uuid);
--
2.54.0
next prev parent reply other threads:[~2026-05-11 8:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-07 16:36 [PATCH] nvme: make providing NGUID as UUID usage less scary AlanCui4080
2026-05-07 23:33 ` [PATCH V2] " AlanCui4080
2026-05-10 22:19 ` [PATCH] " Sagi Grimberg
2026-05-11 7:59 ` AlanCui4080
2026-05-11 8:16 ` Christoph Hellwig
2026-05-11 8:59 ` AlanCui4080
2026-05-11 9:16 ` AlanCui4080
2026-05-11 12:22 ` Christoph Hellwig
2026-05-11 14:48 ` Keith Busch
2026-05-12 6:02 ` Christoph Hellwig
2026-05-11 8:29 ` AlanCui4080 [this message]
2026-05-11 11:26 ` [PATCH RFC V2 RESEND] " AlanCui4080
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=p3A0AxbHQ4aKNhfIeaPQng@alancui.cc \
--to=me@alancui.cc \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox