[PATCH v10 24/31] dax/bus: Add uuid sysfs attribute to dax devices
From: Anisa Su <hidden>
Date: 2026-05-23 09:44:23
Also in:
lkml, nvdimm
Subsystem:
device direct access (dax), the rest · Maintainers:
Dan Williams, Vishal Verma, Dave Jiang, Linus Torvalds
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 <redacted> --- 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@lists.linux.dev +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