On 5/23/26 2:43 AM, Anisa Su wrote:
> 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

update

> +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);

Should it just emit null UUID instead of 0 to not screw up user apps?

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)
>  {
> @@ -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,
>  };
>  


Reply via email to