On 6/25/26 4:05 AM, Anisa Su wrote:
> 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]>

Reviewed-by: Dave Jiang <[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,
>  };
>  


Reply via email to