OSDN Git Service

md: register new md sysfs file 'uuid' read-only
authorSebastian Parschauer <s.parschauer@gmx.de>
Tue, 28 Jul 2020 10:01:39 +0000 (12:01 +0200)
committerSong Liu <songliubraving@fb.com>
Mon, 3 Aug 2020 06:03:51 +0000 (23:03 -0700)
Report the UUID of the MD array in the following format:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

This is useful if you don't want to wait for udev to identify array.
And it is also easy for script to monitor it with the format.

Signed-off-by: Sebastian Parschauer <s.parschauer@gmx.de>
[Guoqing: mention the change in md.rst]
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Documentation/admin-guide/md.rst
drivers/md/md.c

index d973d46..cc8781b 100644 (file)
@@ -426,6 +426,10 @@ All md devices contain:
      The accepted values when writing to this file are ``ppl`` and ``resync``,
      used to enable and disable PPL.
 
+  uuid
+     This indicates the UUID of the array in the following format:
+     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+
 
 As component devices are added to an md array, they appear in the ``md``
 directory as new directories named::
index 5e8f772..5116d29 100644 (file)
@@ -4253,6 +4253,14 @@ static struct md_sysfs_entry md_raid_disks =
 __ATTR(raid_disks, S_IRUGO|S_IWUSR, raid_disks_show, raid_disks_store);
 
 static ssize_t
+uuid_show(struct mddev *mddev, char *page)
+{
+       return sprintf(page, "%pU\n", mddev->uuid);
+}
+static struct md_sysfs_entry md_uuid =
+__ATTR(uuid, S_IRUGO, uuid_show, NULL);
+
+static ssize_t
 chunk_size_show(struct mddev *mddev, char *page)
 {
        if (mddev->reshape_position != MaxSector &&
@@ -5508,6 +5516,7 @@ static struct attribute *md_default_attrs[] = {
        &md_level.attr,
        &md_layout.attr,
        &md_raid_disks.attr,
+       &md_uuid.attr,
        &md_chunk_size.attr,
        &md_size.attr,
        &md_resync_start.attr,