[PATCH v10 24/31] dax/bus: Add uuid sysfs attribute to dax devices

From: Anisa Su

Date: Sat May 23 2026 - 05:51:10 EST


Introduce a read-write 'uuid' sysfs entry at
/sys/bus/dax/devices/daxX.Y/ with stubbed handlers: show returns "0"
and store returns -EOPNOTSUPP. A follow-on patch wires both
directions to dax_resource tracking.

Document the attribute in the dax sysfs ABI.

Signed-off-by: Anisa Su <anisa.su@xxxxxxxxxxx>
---
Documentation/ABI/testing/sysfs-bus-dax | 18 ++++++++++++++++++
drivers/dax/bus.c | 14 ++++++++++++++
2 files changed, 32 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-bus-dax b/Documentation/ABI/testing/sysfs-bus-dax
index b34266bfae49..23400824073b 100644
--- a/Documentation/ABI/testing/sysfs-bus-dax
+++ b/Documentation/ABI/testing/sysfs-bus-dax
@@ -59,6 +59,24 @@ Description:
backing device for this dax device, emit the CPU node
affinity for this device.

+What: /sys/bus/dax/devices/daxX.Y/uuid
+Date: May, 2026
+KernelVersion: v6.16
+Contact: nvdimm@xxxxxxxxxxxxxxx
+Description:
+ (RW) On read, reports the uuid identifying the capacity
+ backing this dax device. A value of "0" indicates that the
+ device has no associated uuid — either it is not backed by
+ DCD capacity, or the backing extents are untagged.
+
+ Writes are accepted only on dax devices in sparse (DCD)
+ regions; writes to non-sparse devices return -EOPNOTSUPP.
+ Writing a non-null uuid claims every dax_resource in the
+ parent region whose tag matches the written uuid, consuming
+ any available capacity in each matching resource. Writing
+ "0" is shorthand for the null uuid and claims a single
+ untagged dax_resource.
+
What: /sys/bus/dax/devices/daxX.Y/target_node
Date: February, 2019
KernelVersion: v5.1
diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 5c1b93890d30..1d6f82920be6 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -1526,6 +1526,19 @@ static ssize_t numa_node_show(struct device *dev,
}
static DEVICE_ATTR_RO(numa_node);

+static ssize_t uuid_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ return sysfs_emit(buf, "%d\n", 0);
+}
+
+static ssize_t uuid_store(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t len)
+{
+ return -EOPNOTSUPP;
+}
+static DEVICE_ATTR_RW(uuid);
+
static ssize_t memmap_on_memory_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -1597,6 +1610,7 @@ static struct attribute *dev_dax_attributes[] = {
&dev_attr_resource.attr,
&dev_attr_numa_node.attr,
&dev_attr_memmap_on_memory.attr,
+ &dev_attr_uuid.attr,
NULL,
};

--
2.43.0