Vojtech Trefny ba16cb
From 4ad6f485a1e569feb5fd23ffcf78e08a7756e084 Mon Sep 17 00:00:00 2001
Vojtech Trefny 45cf2e
From: Vojtech Trefny <vtrefny@redhat.com>
Vojtech Trefny 45cf2e
Date: Wed, 17 Aug 2022 14:24:21 +0200
Vojtech Trefny ba16cb
Subject: [PATCH 1/2] Use MD populator instead of DM to handle DDF RAID format
Vojtech Trefny 45cf2e
Vojtech Trefny 45cf2e
---
Vojtech Trefny 45cf2e
 blivet/formats/dmraid.py | 2 +-
Vojtech Trefny 45cf2e
 blivet/formats/mdraid.py | 2 +-
Vojtech Trefny 45cf2e
 2 files changed, 2 insertions(+), 2 deletions(-)
Vojtech Trefny 45cf2e
Vojtech Trefny 45cf2e
diff --git a/blivet/formats/dmraid.py b/blivet/formats/dmraid.py
Vojtech Trefny ba16cb
index 2ba9dcfe..ce15905d 100644
Vojtech Trefny 45cf2e
--- a/blivet/formats/dmraid.py
Vojtech Trefny 45cf2e
+++ b/blivet/formats/dmraid.py
Vojtech Trefny 45cf2e
@@ -43,7 +43,7 @@ class DMRaidMember(DeviceFormat):
Vojtech Trefny 45cf2e
     #
Vojtech Trefny 45cf2e
     #     One problem that presents is the possibility of someone passing
Vojtech Trefny 45cf2e
     #     a dmraid member to the MDRaidArrayDevice constructor.
Vojtech Trefny 45cf2e
-    _udev_types = ["adaptec_raid_member", "ddf_raid_member",
Vojtech Trefny 45cf2e
+    _udev_types = ["adaptec_raid_member",
Vojtech Trefny 45cf2e
                    "hpt37x_raid_member", "hpt45x_raid_member",
Vojtech Trefny 45cf2e
                    "isw_raid_member",
Vojtech Trefny 45cf2e
                    "jmicron_raid_member", "lsi_mega_raid_member",
Vojtech Trefny 45cf2e
diff --git a/blivet/formats/mdraid.py b/blivet/formats/mdraid.py
Vojtech Trefny ba16cb
index 41ddef81..4aa3f3b0 100644
Vojtech Trefny 45cf2e
--- a/blivet/formats/mdraid.py
Vojtech Trefny 45cf2e
+++ b/blivet/formats/mdraid.py
Vojtech Trefny 45cf2e
@@ -41,7 +41,7 @@ class MDRaidMember(DeviceFormat):
Vojtech Trefny 45cf2e
     """ An mdraid member disk. """
Vojtech Trefny 45cf2e
     _type = "mdmember"
Vojtech Trefny 45cf2e
     _name = N_("software RAID")
Vojtech Trefny 45cf2e
-    _udev_types = ["linux_raid_member"]
Vojtech Trefny 45cf2e
+    _udev_types = ["linux_raid_member", "ddf_raid_member"]
Vojtech Trefny 45cf2e
     parted_flag = PARTITION_RAID
Vojtech Trefny 45cf2e
     _formattable = True                 # can be formatted
Vojtech Trefny 45cf2e
     _supported = True                   # is supported
Vojtech Trefny ba16cb
-- 
Vojtech Trefny ba16cb
2.37.3
Vojtech Trefny 45cf2e
Vojtech Trefny ba16cb
Vojtech Trefny ba16cb
From abc7e018f43976cdab286d67207d515a74693d16 Mon Sep 17 00:00:00 2001
Vojtech Trefny 45cf2e
From: Vojtech Trefny <vtrefny@redhat.com>
Vojtech Trefny 45cf2e
Date: Wed, 17 Aug 2022 14:24:58 +0200
Vojtech Trefny ba16cb
Subject: [PATCH 2/2] Do not read DDF RAID UUID from udev
Vojtech Trefny 45cf2e
Vojtech Trefny 45cf2e
The UUID we get from udev isn't the array UUID, we need to get
Vojtech Trefny 45cf2e
that using libblockdev.
Vojtech Trefny 45cf2e
---
Vojtech Trefny 45cf2e
 blivet/populator/helpers/mdraid.py | 16 ++++++++++------
Vojtech Trefny 45cf2e
 1 file changed, 10 insertions(+), 6 deletions(-)
Vojtech Trefny 45cf2e
Vojtech Trefny 45cf2e
diff --git a/blivet/populator/helpers/mdraid.py b/blivet/populator/helpers/mdraid.py
Vojtech Trefny ba16cb
index 3479e3f7..a7602d20 100644
Vojtech Trefny 45cf2e
--- a/blivet/populator/helpers/mdraid.py
Vojtech Trefny 45cf2e
+++ b/blivet/populator/helpers/mdraid.py
Vojtech Trefny 45cf2e
@@ -98,17 +98,21 @@ class MDFormatPopulator(FormatPopulator):
Vojtech Trefny 45cf2e
 
Vojtech Trefny 45cf2e
     def _get_kwargs(self):
Vojtech Trefny 45cf2e
         kwargs = super(MDFormatPopulator, self)._get_kwargs()
Vojtech Trefny 45cf2e
-        try:
Vojtech Trefny 45cf2e
-            # ID_FS_UUID contains the array UUID
Vojtech Trefny 45cf2e
-            kwargs["md_uuid"] = udev.device_get_uuid(self.data)
Vojtech Trefny 45cf2e
-        except KeyError:
Vojtech Trefny 45cf2e
-            log.warning("mdraid member %s has no md uuid", udev.device_get_name(self.data))
Vojtech Trefny 45cf2e
+        kwargs["biosraid"] = udev.device_is_biosraid_member(self.data)
Vojtech Trefny 45cf2e
+        if not kwargs["biosraid"]:
Vojtech Trefny 45cf2e
+            try:
Vojtech Trefny 45cf2e
+                # ID_FS_UUID contains the array UUID
Vojtech Trefny 45cf2e
+                kwargs["md_uuid"] = udev.device_get_uuid(self.data)
Vojtech Trefny 45cf2e
+            except KeyError:
Vojtech Trefny 45cf2e
+                log.warning("mdraid member %s has no md uuid", udev.device_get_name(self.data))
Vojtech Trefny 45cf2e
+        else:
Vojtech Trefny 45cf2e
+            # for BIOS RAIDs we can't get the UUID from udev, we'll get it from mdadm in `run` below
Vojtech Trefny 45cf2e
+            kwargs["md_uuid"] = None
Vojtech Trefny 45cf2e
 
Vojtech Trefny 45cf2e
         # reset the uuid to the member-specific value
Vojtech Trefny 45cf2e
         # this will be None for members of v0 metadata arrays
Vojtech Trefny 45cf2e
         kwargs["uuid"] = udev.device_get_md_device_uuid(self.data)
Vojtech Trefny 45cf2e
 
Vojtech Trefny 45cf2e
-        kwargs["biosraid"] = udev.device_is_biosraid_member(self.data)
Vojtech Trefny 45cf2e
         return kwargs
Vojtech Trefny 45cf2e
 
Vojtech Trefny 45cf2e
     def run(self):
Vojtech Trefny ba16cb
-- 
Vojtech Trefny ba16cb
2.37.3
Vojtech Trefny 45cf2e