Introduce a read-write 'uuid' sysfs entry at
/sys/bus/dax/devices/daxX.Y/ with stubbed handlers: show returns the
null uuid 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]>

---
Changes:
- uuid_show() emits the null uuid ("%pUb" of uuid_null) instead of "0".
- ABI: describe the no-uuid read value as a null uuid instead of "0";
  bump Date to June, 2026 and KernelVersion to v7.3.
---
 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..3219c09dea01 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:          June, 2026
+KernelVersion: v7.3
+Contact:       [email protected]
+Description:
+               (RW) On read, reports the uuid identifying the capacity
+               backing this dax device.  A null uuid (all-zeroes) 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 ffa6b303fc9b..f61309a6f934 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -1573,6 +1573,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, "%pUb\n", &uuid_null);
+}
+
+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)
 {
@@ -1644,6 +1657,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