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 <[email protected]>
---
 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:       [email protected]
+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


Reply via email to