New version 3.7.0
- Remove unused BLOCKDEV_DM_RAID technology from tasks (vtrefny) - tests: Force remove LVM VG /dev/ entry not removed by vgremove (vtrefny) - Mark LUKS2 integrity devices as always controllable (vtrefny) - Ignore parent dependencies during action execute (vtrefny) - tests: Patch checking stratis pool metadata size (vtrefny) - Remove support for DMRAID devices (vtrefny) - Do not read DDF RAID UUID from udev (vtrefny) - Check physical and logical block size when creating a LUKS format (vtrefny) - Add separate properties for logical and physical block size (vtrefny) - Use DMI product_name for t2 mac detection. (83884198+sharpenedblade) - vmtests: add a --logs arg to capture blivet.log from failed tests (berrange) - examples: illustrate GPT GUID usage in partitioning example (berrange) - vmtests: add test for GPT part type UUID validation (berrange) - blivet: allow 'mountpoint' to be passed to PartitionDevice (berrange) - deviceaction: retain explicit part type UUID when formatting (berrange) - devices/partition: add ability to auto apply a GPT UUID (berrange) - gpt: add helper API for discoverable partition UUIDs (berrange) - devices/partition: allow passing partition type UUID (berrange) - formats/disklabel: allow passing partition type UUID (berrange) - Add a forced delay to udev settle in chroot environments (vlad.bespalov) - Update public API documentation (vtrefny) - tests/README: Clarify various test classes (vtrefny) - Rename unit_tests.storagetestcase to unit_tests.blivettestcase (vtrefny) - Add additional identifiers to NVMeNamespaceDevice (vtrefny) - Add transport and address to NVMeController info (vtrefny) - Make sure we close the streams when reading a file (vtrefny) - Style changes. (sharpenedblade) - Do not report mactel on T2 macs. (sharpenedblade) - Add function to check for T2 apple macs. (sharpenedblade) - Add a basic read-only support for UDF filesystem (vtrefny) - add loongarch support (mahailiang) - Add a basic support for NVMe and NVMe Fabrics devices (vtrefny)
This commit is contained in:
parent
be0f89d540
commit
9790bf0f9a
2
.gitignore
vendored
2
.gitignore
vendored
@ -149,3 +149,5 @@
|
|||||||
/blivet-3.6.0-tests.tar.gz
|
/blivet-3.6.0-tests.tar.gz
|
||||||
/blivet-3.6.1-tests.tar.gz
|
/blivet-3.6.1-tests.tar.gz
|
||||||
/blivet-3.6.1.tar.gz
|
/blivet-3.6.1.tar.gz
|
||||||
|
/blivet-3.7.0-tests.tar.gz
|
||||||
|
/blivet-3.7.0.tar.gz
|
||||||
|
@ -1,461 +0,0 @@
|
|||||||
From 2645236684b12a9a029f27c758fe5db12befabd7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Vojtech Trefny <vtrefny@redhat.com>
|
|
||||||
Date: Wed, 17 Aug 2022 14:24:58 +0200
|
|
||||||
Subject: [PATCH 1/2] Do not read DDF RAID UUID from udev
|
|
||||||
|
|
||||||
The UUID we get from udev isn't the array UUID, we need to get
|
|
||||||
that using libblockdev.
|
|
||||||
---
|
|
||||||
blivet/populator/helpers/mdraid.py | 16 ++++++++++------
|
|
||||||
1 file changed, 10 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/blivet/populator/helpers/mdraid.py b/blivet/populator/helpers/mdraid.py
|
|
||||||
index 3479e3f7..a7602d20 100644
|
|
||||||
--- a/blivet/populator/helpers/mdraid.py
|
|
||||||
+++ b/blivet/populator/helpers/mdraid.py
|
|
||||||
@@ -98,17 +98,21 @@ class MDFormatPopulator(FormatPopulator):
|
|
||||||
|
|
||||||
def _get_kwargs(self):
|
|
||||||
kwargs = super(MDFormatPopulator, self)._get_kwargs()
|
|
||||||
- try:
|
|
||||||
- # ID_FS_UUID contains the array UUID
|
|
||||||
- kwargs["md_uuid"] = udev.device_get_uuid(self.data)
|
|
||||||
- except KeyError:
|
|
||||||
- log.warning("mdraid member %s has no md uuid", udev.device_get_name(self.data))
|
|
||||||
+ kwargs["biosraid"] = udev.device_is_biosraid_member(self.data)
|
|
||||||
+ if not kwargs["biosraid"]:
|
|
||||||
+ try:
|
|
||||||
+ # ID_FS_UUID contains the array UUID
|
|
||||||
+ kwargs["md_uuid"] = udev.device_get_uuid(self.data)
|
|
||||||
+ except KeyError:
|
|
||||||
+ log.warning("mdraid member %s has no md uuid", udev.device_get_name(self.data))
|
|
||||||
+ else:
|
|
||||||
+ # for BIOS RAIDs we can't get the UUID from udev, we'll get it from mdadm in `run` below
|
|
||||||
+ kwargs["md_uuid"] = None
|
|
||||||
|
|
||||||
# reset the uuid to the member-specific value
|
|
||||||
# this will be None for members of v0 metadata arrays
|
|
||||||
kwargs["uuid"] = udev.device_get_md_device_uuid(self.data)
|
|
||||||
|
|
||||||
- kwargs["biosraid"] = udev.device_is_biosraid_member(self.data)
|
|
||||||
return kwargs
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
||||||
|
|
||||||
From 951410368163de375174b4a9da1479695b5cd77d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Vojtech Trefny <vtrefny@redhat.com>
|
|
||||||
Date: Wed, 18 Jan 2023 13:23:14 +0100
|
|
||||||
Subject: [PATCH 2/2] Remove support for DMRAID devices
|
|
||||||
|
|
||||||
Firmware/BIOS RAID devices will be handled by the MD code.
|
|
||||||
---
|
|
||||||
blivet/devices/__init__.py | 2 +-
|
|
||||||
blivet/devices/disk.py | 87 ------------------------
|
|
||||||
blivet/flags.py | 2 -
|
|
||||||
blivet/formats/dmraid.py | 55 +---------------
|
|
||||||
blivet/formats/mdraid.py | 10 +--
|
|
||||||
blivet/populator/helpers/__init__.py | 1 -
|
|
||||||
blivet/populator/helpers/dmraid.py | 98 ----------------------------
|
|
||||||
blivet/populator/populator.py | 4 +-
|
|
||||||
8 files changed, 7 insertions(+), 252 deletions(-)
|
|
||||||
delete mode 100644 blivet/populator/helpers/dmraid.py
|
|
||||||
|
|
||||||
diff --git a/blivet/devices/__init__.py b/blivet/devices/__init__.py
|
|
||||||
index 8bb0a979..d90f0d0f 100644
|
|
||||||
--- a/blivet/devices/__init__.py
|
|
||||||
+++ b/blivet/devices/__init__.py
|
|
||||||
@@ -22,7 +22,7 @@
|
|
||||||
from .lib import device_path_to_name, device_name_to_disk_by_path, ParentList
|
|
||||||
from .device import Device
|
|
||||||
from .storage import StorageDevice
|
|
||||||
-from .disk import DiskDevice, DiskFile, DMRaidArrayDevice, MultipathDevice, iScsiDiskDevice, FcoeDiskDevice, DASDDevice, ZFCPDiskDevice, NVDIMMNamespaceDevice
|
|
||||||
+from .disk import DiskDevice, DiskFile, MultipathDevice, iScsiDiskDevice, FcoeDiskDevice, DASDDevice, ZFCPDiskDevice, NVDIMMNamespaceDevice
|
|
||||||
from .partition import PartitionDevice
|
|
||||||
from .dm import DMDevice, DMLinearDevice, DMCryptDevice, DMIntegrityDevice, DM_MAJORS
|
|
||||||
from .luks import LUKSDevice, IntegrityDevice
|
|
||||||
diff --git a/blivet/devices/disk.py b/blivet/devices/disk.py
|
|
||||||
index bc4a1b5e..18c8897f 100644
|
|
||||||
--- a/blivet/devices/disk.py
|
|
||||||
+++ b/blivet/devices/disk.py
|
|
||||||
@@ -43,7 +43,6 @@ log = logging.getLogger("blivet")
|
|
||||||
|
|
||||||
from .lib import Tags
|
|
||||||
from .storage import StorageDevice
|
|
||||||
-from .container import ContainerDevice
|
|
||||||
from .network import NetworkStorageDevice
|
|
||||||
from .dm import DMDevice
|
|
||||||
|
|
||||||
@@ -216,92 +215,6 @@ class DiskFile(DiskDevice):
|
|
||||||
return size
|
|
||||||
|
|
||||||
|
|
||||||
-class DMRaidArrayDevice(DMDevice, ContainerDevice):
|
|
||||||
-
|
|
||||||
- """ A dmraid (device-mapper RAID) device """
|
|
||||||
- _type = "dm-raid array"
|
|
||||||
- _packages = ["dmraid"]
|
|
||||||
- _partitionable = True
|
|
||||||
- _is_disk = True
|
|
||||||
- _format_class_name = property(lambda s: "dmraidmember")
|
|
||||||
- _format_uuid_attr = property(lambda s: None)
|
|
||||||
- _external_dependencies = [availability.BLOCKDEV_DM_PLUGIN_RAID]
|
|
||||||
-
|
|
||||||
- def __init__(self, name, fmt=None,
|
|
||||||
- size=None, parents=None, sysfs_path='', wwn=None):
|
|
||||||
- """
|
|
||||||
- :param name: the device name (generally a device node's basename)
|
|
||||||
- :type name: str
|
|
||||||
- :keyword size: the device's size
|
|
||||||
- :type size: :class:`~.size.Size`
|
|
||||||
- :keyword parents: a list of parent devices
|
|
||||||
- :type parents: list of :class:`StorageDevice`
|
|
||||||
- :keyword fmt: this device's formatting
|
|
||||||
- :type fmt: :class:`~.formats.DeviceFormat` or a subclass of it
|
|
||||||
- :keyword sysfs_path: sysfs device path
|
|
||||||
- :type sysfs_path: str
|
|
||||||
- :keyword str wwn: the device's WWN
|
|
||||||
-
|
|
||||||
- DMRaidArrayDevices always exist. Blivet cannot create or destroy
|
|
||||||
- them.
|
|
||||||
- """
|
|
||||||
- super(DMRaidArrayDevice, self).__init__(name, fmt=fmt, size=size,
|
|
||||||
- parents=parents, exists=True,
|
|
||||||
- sysfs_path=sysfs_path)
|
|
||||||
- self.wwn = wwn or None
|
|
||||||
- self.tags.add(Tags.local)
|
|
||||||
-
|
|
||||||
- @property
|
|
||||||
- def devices(self):
|
|
||||||
- """ Return a list of this array's member device instances. """
|
|
||||||
- return self.parents
|
|
||||||
-
|
|
||||||
- def deactivate(self):
|
|
||||||
- """ Deactivate the raid set. """
|
|
||||||
- log_method_call(self, self.name, status=self.status)
|
|
||||||
- # This call already checks if the set is not active.
|
|
||||||
- blockdev.dm.deactivate_raid_set(self.name)
|
|
||||||
-
|
|
||||||
- def activate(self):
|
|
||||||
- """ Activate the raid set. """
|
|
||||||
- log_method_call(self, self.name, status=self.status)
|
|
||||||
- # This call already checks if the set is active.
|
|
||||||
- blockdev.dm.activate_raid_set(self.name)
|
|
||||||
- udev.settle()
|
|
||||||
-
|
|
||||||
- def _setup(self, orig=False):
|
|
||||||
- """ Open, or set up, a device. """
|
|
||||||
- log_method_call(self, self.name, orig=orig, status=self.status,
|
|
||||||
- controllable=self.controllable)
|
|
||||||
- self.activate()
|
|
||||||
-
|
|
||||||
- def teardown(self, recursive=None):
|
|
||||||
- """ Close, or tear down, a device. """
|
|
||||||
- log_method_call(self, self.name, status=self.status,
|
|
||||||
- controllable=self.controllable)
|
|
||||||
- if not self._pre_teardown(recursive=recursive):
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
- log.debug("not tearing down dmraid device %s", self.name)
|
|
||||||
-
|
|
||||||
- def _add(self, member):
|
|
||||||
- raise NotImplementedError()
|
|
||||||
-
|
|
||||||
- def _remove(self, member):
|
|
||||||
- raise NotImplementedError()
|
|
||||||
-
|
|
||||||
- @property
|
|
||||||
- def description(self):
|
|
||||||
- return "BIOS RAID set (%s)" % blockdev.dm.get_raid_set_type(self.name)
|
|
||||||
-
|
|
||||||
- @property
|
|
||||||
- def model(self):
|
|
||||||
- return self.description
|
|
||||||
-
|
|
||||||
- def dracut_setup_args(self):
|
|
||||||
- return set(["rd.dm.uuid=%s" % self.name])
|
|
||||||
-
|
|
||||||
-
|
|
||||||
class MultipathDevice(DMDevice):
|
|
||||||
|
|
||||||
""" A multipath device """
|
|
||||||
diff --git a/blivet/flags.py b/blivet/flags.py
|
|
||||||
index 6364164d..4929b656 100644
|
|
||||||
--- a/blivet/flags.py
|
|
||||||
+++ b/blivet/flags.py
|
|
||||||
@@ -46,7 +46,6 @@ class Flags(object):
|
|
||||||
else:
|
|
||||||
self.selinux = selinux.is_selinux_enabled()
|
|
||||||
|
|
||||||
- self.dmraid = True
|
|
||||||
self.ibft = True
|
|
||||||
self.noiswmd = False
|
|
||||||
|
|
||||||
@@ -103,7 +102,6 @@ class Flags(object):
|
|
||||||
def update_from_boot_cmdline(self):
|
|
||||||
self.get_boot_cmdline()
|
|
||||||
self.multipath = "nompath" not in self.boot_cmdline
|
|
||||||
- self.dmraid = "nodmraid" not in self.boot_cmdline
|
|
||||||
self.noiswmd = "noiswmd" in self.boot_cmdline
|
|
||||||
self.gfs2 = "gfs2" in self.boot_cmdline
|
|
||||||
self.jfs = "jfs" in self.boot_cmdline
|
|
||||||
diff --git a/blivet/formats/dmraid.py b/blivet/formats/dmraid.py
|
|
||||||
index 2ba9dcfe..fe1a4f13 100644
|
|
||||||
--- a/blivet/formats/dmraid.py
|
|
||||||
+++ b/blivet/formats/dmraid.py
|
|
||||||
@@ -21,7 +21,6 @@
|
|
||||||
#
|
|
||||||
|
|
||||||
from ..storage_log import log_method_call
|
|
||||||
-from ..flags import flags
|
|
||||||
from ..errors import DMRaidMemberError
|
|
||||||
from ..i18n import N_
|
|
||||||
from . import DeviceFormat, register_device_format
|
|
||||||
@@ -35,54 +34,14 @@ class DMRaidMember(DeviceFormat):
|
|
||||||
""" A dmraid member disk. """
|
|
||||||
_type = "dmraidmember"
|
|
||||||
_name = N_("dm-raid member device")
|
|
||||||
- # XXX This looks like trouble.
|
|
||||||
- #
|
|
||||||
- # Maybe a better approach is a RaidMember format with subclass
|
|
||||||
- # for MDRaidMember, letting all *_raid_member types fall through
|
|
||||||
- # to the generic RaidMember format, which is basically read-only.
|
|
||||||
- #
|
|
||||||
- # One problem that presents is the possibility of someone passing
|
|
||||||
- # a dmraid member to the MDRaidArrayDevice constructor.
|
|
||||||
- _udev_types = ["adaptec_raid_member", "ddf_raid_member",
|
|
||||||
- "hpt37x_raid_member", "hpt45x_raid_member",
|
|
||||||
- "isw_raid_member",
|
|
||||||
+
|
|
||||||
+ _udev_types = ["adaptec_raid_member", "hpt37x_raid_member", "hpt45x_raid_member",
|
|
||||||
"jmicron_raid_member", "lsi_mega_raid_member",
|
|
||||||
"nvidia_raid_member", "promise_fasttrack_raid_member",
|
|
||||||
"silicon_medley_raid_member", "via_raid_member"]
|
|
||||||
- _supported = True # is supported
|
|
||||||
- _packages = ["dmraid"] # required packages
|
|
||||||
+ _supported = False # is supported
|
|
||||||
_hidden = True # hide devices with this formatting?
|
|
||||||
|
|
||||||
- def __init__(self, **kwargs):
|
|
||||||
- """
|
|
||||||
- :keyword device: path to the underlying device (required)
|
|
||||||
- :type device: str
|
|
||||||
- :keyword uuid: this format's UUID
|
|
||||||
- :type uuid: str
|
|
||||||
- :keyword exists: whether this is an existing format
|
|
||||||
- :type exists: bool
|
|
||||||
-
|
|
||||||
- """
|
|
||||||
- log_method_call(self, **kwargs)
|
|
||||||
- DeviceFormat.__init__(self, **kwargs)
|
|
||||||
-
|
|
||||||
- # Initialize the attribute that will hold the block object.
|
|
||||||
- self._raidmem = None
|
|
||||||
-
|
|
||||||
- def __repr__(self):
|
|
||||||
- s = DeviceFormat.__repr__(self)
|
|
||||||
- s += (" raidmem = %(raidmem)r" % {"raidmem": self.raidmem})
|
|
||||||
- return s
|
|
||||||
-
|
|
||||||
- def _get_raidmem(self):
|
|
||||||
- return self._raidmem
|
|
||||||
-
|
|
||||||
- def _set_raidmem(self, raidmem):
|
|
||||||
- self._raidmem = raidmem
|
|
||||||
-
|
|
||||||
- raidmem = property(lambda d: d._get_raidmem(),
|
|
||||||
- lambda d, r: d._set_raidmem(r))
|
|
||||||
-
|
|
||||||
def create(self, **kwargs):
|
|
||||||
log_method_call(self, device=self.device,
|
|
||||||
type=self.type, status=self.status)
|
|
||||||
@@ -94,12 +53,4 @@ class DMRaidMember(DeviceFormat):
|
|
||||||
raise DMRaidMemberError("destruction of dmraid members is non-sense")
|
|
||||||
|
|
||||||
|
|
||||||
-if not flags.noiswmd:
|
|
||||||
- DMRaidMember._udev_types.remove("isw_raid_member")
|
|
||||||
-
|
|
||||||
-# The anaconda cmdline has not been parsed yet when we're first imported,
|
|
||||||
-# so we can not use flags.dmraid here
|
|
||||||
-if not flags.dmraid:
|
|
||||||
- DMRaidMember._udev_types = []
|
|
||||||
-
|
|
||||||
register_device_format(DMRaidMember)
|
|
||||||
diff --git a/blivet/formats/mdraid.py b/blivet/formats/mdraid.py
|
|
||||||
index 41ddef81..af1e4505 100644
|
|
||||||
--- a/blivet/formats/mdraid.py
|
|
||||||
+++ b/blivet/formats/mdraid.py
|
|
||||||
@@ -28,7 +28,6 @@ from gi.repository import BlockDev as blockdev
|
|
||||||
from ..storage_log import log_method_call
|
|
||||||
from parted import PARTITION_RAID
|
|
||||||
from . import DeviceFormat, register_device_format
|
|
||||||
-from ..flags import flags
|
|
||||||
from ..i18n import N_
|
|
||||||
from ..tasks import availability
|
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@ class MDRaidMember(DeviceFormat):
|
|
||||||
""" An mdraid member disk. """
|
|
||||||
_type = "mdmember"
|
|
||||||
_name = N_("software RAID")
|
|
||||||
- _udev_types = ["linux_raid_member"]
|
|
||||||
+ _udev_types = ["linux_raid_member", "ddf_raid_member", "isw_raid_member"]
|
|
||||||
parted_flag = PARTITION_RAID
|
|
||||||
_formattable = True # can be formatted
|
|
||||||
_supported = True # is supported
|
|
||||||
@@ -113,11 +112,4 @@ class MDRaidMember(DeviceFormat):
|
|
||||||
self.md_uuid = uuid
|
|
||||||
|
|
||||||
|
|
||||||
-# nodmraid -> Wether to use BIOS RAID or not
|
|
||||||
-# Note the anaconda cmdline has not been parsed yet when we're first imported,
|
|
||||||
-# so we can not use flags.dmraid here
|
|
||||||
-if not flags.noiswmd and flags.dmraid:
|
|
||||||
- MDRaidMember._udev_types.append("isw_raid_member")
|
|
||||||
-
|
|
||||||
-
|
|
||||||
register_device_format(MDRaidMember)
|
|
||||||
diff --git a/blivet/populator/helpers/__init__.py b/blivet/populator/helpers/__init__.py
|
|
||||||
index c5ac412f..57f68c73 100644
|
|
||||||
--- a/blivet/populator/helpers/__init__.py
|
|
||||||
+++ b/blivet/populator/helpers/__init__.py
|
|
||||||
@@ -9,7 +9,6 @@ from .boot import AppleBootFormatPopulator, EFIFormatPopulator, MacEFIFormatPopu
|
|
||||||
from .disk import DiskDevicePopulator, iScsiDevicePopulator, FCoEDevicePopulator, MDBiosRaidDevicePopulator, DASDDevicePopulator, ZFCPDevicePopulator, NVDIMMNamespaceDevicePopulator
|
|
||||||
from .disklabel import DiskLabelFormatPopulator
|
|
||||||
from .dm import DMDevicePopulator
|
|
||||||
-from .dmraid import DMRaidFormatPopulator
|
|
||||||
from .loop import LoopDevicePopulator
|
|
||||||
from .luks import LUKSDevicePopulator, LUKSFormatPopulator, IntegrityDevicePopulator, IntegrityFormatPopulator
|
|
||||||
from .lvm import LVMDevicePopulator, LVMFormatPopulator
|
|
||||||
diff --git a/blivet/populator/helpers/dmraid.py b/blivet/populator/helpers/dmraid.py
|
|
||||||
deleted file mode 100644
|
|
||||||
index b126ac46..00000000
|
|
||||||
--- a/blivet/populator/helpers/dmraid.py
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,98 +0,0 @@
|
|
||||||
-# populator/helpers/dmraid.py
|
|
||||||
-# DM RAID backend code for populating a DeviceTree.
|
|
||||||
-#
|
|
||||||
-# Copyright (C) 2009-2015 Red Hat, Inc.
|
|
||||||
-#
|
|
||||||
-# This copyrighted material is made available to anyone wishing to use,
|
|
||||||
-# modify, copy, or redistribute it subject to the terms and conditions of
|
|
||||||
-# the GNU Lesser General Public License v.2, or (at your option) any later
|
|
||||||
-# version. This program is distributed in the hope that it will be useful,
|
|
||||||
-# but WITHOUT ANY WARRANTY expressed or implied, including the implied
|
|
||||||
-# warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
||||||
-# the GNU Lesser General Public License for more details. You should have
|
|
||||||
-# received a copy of the GNU Lesser General Public License along with this
|
|
||||||
-# program; if not, write to the Free Software Foundation, Inc., 51 Franklin
|
|
||||||
-# Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat trademarks
|
|
||||||
-# that are incorporated in the source code or documentation are not subject
|
|
||||||
-# to the GNU Lesser General Public License and may only be used or
|
|
||||||
-# replicated with the express permission of Red Hat, Inc.
|
|
||||||
-#
|
|
||||||
-# Red Hat Author(s): David Lehman <dlehman@redhat.com>
|
|
||||||
-#
|
|
||||||
-
|
|
||||||
-import gi
|
|
||||||
-gi.require_version("BlockDev", "2.0")
|
|
||||||
-
|
|
||||||
-from gi.repository import BlockDev as blockdev
|
|
||||||
-
|
|
||||||
-from ... import udev
|
|
||||||
-from ...devices import DMRaidArrayDevice
|
|
||||||
-from ...flags import flags
|
|
||||||
-from ...storage_log import log_method_call
|
|
||||||
-from .formatpopulator import FormatPopulator
|
|
||||||
-
|
|
||||||
-import logging
|
|
||||||
-log = logging.getLogger("blivet")
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-class DMRaidFormatPopulator(FormatPopulator):
|
|
||||||
- priority = 100
|
|
||||||
- _type_specifier = "dmraidmember"
|
|
||||||
-
|
|
||||||
- def run(self):
|
|
||||||
- super(DMRaidFormatPopulator, self).run()
|
|
||||||
-
|
|
||||||
- # if dmraid usage is disabled skip any dmraid set activation
|
|
||||||
- if not flags.dmraid:
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
- log_method_call(self, name=self.device.name)
|
|
||||||
- name = udev.device_get_name(self.data)
|
|
||||||
- uuid = udev.device_get_uuid(self.data)
|
|
||||||
- major = udev.device_get_major(self.data)
|
|
||||||
- minor = udev.device_get_minor(self.data)
|
|
||||||
-
|
|
||||||
- # Have we already created the DMRaidArrayDevice?
|
|
||||||
- try:
|
|
||||||
- rs_names = blockdev.dm.get_member_raid_sets(name, uuid, major, minor)
|
|
||||||
- except blockdev.DMError as e:
|
|
||||||
- log.error("Failed to get RAID sets information for '%s': %s", name, str(e))
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
- if len(rs_names) == 0:
|
|
||||||
- log.warning("dmraid member %s does not appear to belong to any "
|
|
||||||
- "array", self.device.name)
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
- for rs_name in rs_names:
|
|
||||||
- dm_array = self._devicetree.get_device_by_name(rs_name, incomplete=True)
|
|
||||||
- if dm_array is not None:
|
|
||||||
- # We add the new device.
|
|
||||||
- dm_array.parents.append(self.device)
|
|
||||||
- else:
|
|
||||||
- if not blockdev.dm.map_exists(rs_name, True, True):
|
|
||||||
- # Activate the Raid set.
|
|
||||||
- try:
|
|
||||||
- blockdev.dm.activate_raid_set(rs_name)
|
|
||||||
- except blockdev.DMError:
|
|
||||||
- log.warning("Failed to activate the RAID set '%s'", rs_name)
|
|
||||||
- return
|
|
||||||
-
|
|
||||||
- dm_array = DMRaidArrayDevice(rs_name,
|
|
||||||
- parents=[self.device],
|
|
||||||
- wwn=self.device.wwn)
|
|
||||||
-
|
|
||||||
- self._devicetree._add_device(dm_array)
|
|
||||||
-
|
|
||||||
- # Wait for udev to scan the just created nodes, to avoid a race
|
|
||||||
- # with the udev.get_device() call below.
|
|
||||||
- udev.settle()
|
|
||||||
-
|
|
||||||
- # Get the DMRaidArrayDevice a DiskLabel format *now*, in case
|
|
||||||
- # its partitions get scanned before it does.
|
|
||||||
- dm_array.update_sysfs_path()
|
|
||||||
- dm_array.update_size()
|
|
||||||
- dm_array_info = udev.get_device(dm_array.sysfs_path)
|
|
||||||
- if dm_array_info:
|
|
||||||
- dm_array.wwn = udev.device_get_wwn(dm_array_info)
|
|
||||||
- self._devicetree.handle_device(dm_array_info, update_orig_fmt=True)
|
|
||||||
diff --git a/blivet/populator/populator.py b/blivet/populator/populator.py
|
|
||||||
index 3a419418..139d2c76 100644
|
|
||||||
--- a/blivet/populator/populator.py
|
|
||||||
+++ b/blivet/populator/populator.py
|
|
||||||
@@ -32,7 +32,7 @@ gi.require_version("BlockDev", "2.0")
|
|
||||||
from gi.repository import BlockDev as blockdev
|
|
||||||
|
|
||||||
from ..errors import DeviceError, DeviceTreeError, NoParentsError
|
|
||||||
-from ..devices import DMLinearDevice, DMRaidArrayDevice
|
|
||||||
+from ..devices import DMLinearDevice
|
|
||||||
from ..devices import FileDevice, LoopDevice
|
|
||||||
from ..devices import MDRaidArrayDevice
|
|
||||||
from ..devices import MultipathDevice
|
|
||||||
@@ -219,7 +219,7 @@ class PopulatorMixin(object):
|
|
||||||
def _update_exclusive_disks(self, device):
|
|
||||||
# If we just added a multipath or fwraid disk that is in exclusive_disks
|
|
||||||
# we have to make sure all of its members are in the list too.
|
|
||||||
- mdclasses = (DMRaidArrayDevice, MDRaidArrayDevice, MultipathDevice)
|
|
||||||
+ mdclasses = (MDRaidArrayDevice, MultipathDevice)
|
|
||||||
if device.is_disk and isinstance(device, mdclasses):
|
|
||||||
if device.name in self.exclusive_disks:
|
|
||||||
for ancestor in device.ancestors:
|
|
||||||
|
|
||||||
--
|
|
||||||
2.39.1
|
|
||||||
|
|
@ -19,11 +19,11 @@
|
|||||||
Summary: A python module for system storage configuration
|
Summary: A python module for system storage configuration
|
||||||
Name: python-blivet
|
Name: python-blivet
|
||||||
Url: https://storageapis.wordpress.com/projects/blivet
|
Url: https://storageapis.wordpress.com/projects/blivet
|
||||||
Version: 3.6.1
|
Version: 3.7.0
|
||||||
|
|
||||||
#%%global prerelease .b2
|
#%%global prerelease .b2
|
||||||
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
|
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
|
||||||
Release: 3%{?prerelease}%{?dist}
|
Release: 1%{?prerelease}%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
%global realname blivet
|
%global realname blivet
|
||||||
@ -35,8 +35,6 @@ Source1: http://github.com/storaged-project/blivet/archive/%{realname}-%{realver
|
|||||||
Patch0: 0001-remove-btrfs-plugin.patch
|
Patch0: 0001-remove-btrfs-plugin.patch
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Patch1: 0002-Fedora-dmraid-mdadm.patch
|
|
||||||
|
|
||||||
# Versions of required components (done so we make sure the buildrequires
|
# Versions of required components (done so we make sure the buildrequires
|
||||||
# match the requires versions of things).
|
# match the requires versions of things).
|
||||||
%global partedver 1.8.1
|
%global partedver 1.8.1
|
||||||
@ -198,6 +196,40 @@ configuration.
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Feb 08 2023 Vojtech Trefny <vtrefny@redhat.com> - 3.7.0-1
|
||||||
|
- Remove unused BLOCKDEV_DM_RAID technology from tasks (vtrefny)
|
||||||
|
- tests: Force remove LVM VG /dev/ entry not removed by vgremove (vtrefny)
|
||||||
|
- Mark LUKS2 integrity devices as always controllable (vtrefny)
|
||||||
|
- Ignore parent dependencies during action execute (vtrefny)
|
||||||
|
- tests: Patch checking stratis pool metadata size (vtrefny)
|
||||||
|
- Remove support for DMRAID devices (vtrefny)
|
||||||
|
- Do not read DDF RAID UUID from udev (vtrefny)
|
||||||
|
- Check physical and logical block size when creating a LUKS format (vtrefny)
|
||||||
|
- Add separate properties for logical and physical block size (vtrefny)
|
||||||
|
- Use DMI product_name for t2 mac detection. (83884198+sharpenedblade)
|
||||||
|
- vmtests: add a --logs arg to capture blivet.log from failed tests (berrange)
|
||||||
|
- examples: illustrate GPT GUID usage in partitioning example (berrange)
|
||||||
|
- vmtests: add test for GPT part type UUID validation (berrange)
|
||||||
|
- blivet: allow 'mountpoint' to be passed to PartitionDevice (berrange)
|
||||||
|
- deviceaction: retain explicit part type UUID when formatting (berrange)
|
||||||
|
- devices/partition: add ability to auto apply a GPT UUID (berrange)
|
||||||
|
- gpt: add helper API for discoverable partition UUIDs (berrange)
|
||||||
|
- devices/partition: allow passing partition type UUID (berrange)
|
||||||
|
- formats/disklabel: allow passing partition type UUID (berrange)
|
||||||
|
- Add a forced delay to udev settle in chroot environments (vlad.bespalov)
|
||||||
|
- Update public API documentation (vtrefny)
|
||||||
|
- tests/README: Clarify various test classes (vtrefny)
|
||||||
|
- Rename unit_tests.storagetestcase to unit_tests.blivettestcase (vtrefny)
|
||||||
|
- Add additional identifiers to NVMeNamespaceDevice (vtrefny)
|
||||||
|
- Add transport and address to NVMeController info (vtrefny)
|
||||||
|
- Make sure we close the streams when reading a file (vtrefny)
|
||||||
|
- Style changes. (sharpenedblade)
|
||||||
|
- Do not report mactel on T2 macs. (sharpenedblade)
|
||||||
|
- Add function to check for T2 apple macs. (sharpenedblade)
|
||||||
|
- Add a basic read-only support for UDF filesystem (vtrefny)
|
||||||
|
- add loongarch support (mahailiang)
|
||||||
|
- Add a basic support for NVMe and NVMe Fabrics devices (vtrefny)
|
||||||
|
|
||||||
* Thu Feb 02 2023 Vojtech Trefny <vtrefny@redhat.com> - 3.6.1-3
|
* Thu Feb 02 2023 Vojtech Trefny <vtrefny@redhat.com> - 3.6.1-3
|
||||||
- Use mdadm to support BIOS RAID devices (#2158574)
|
- Use mdadm to support BIOS RAID devices (#2158574)
|
||||||
|
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (blivet-3.6.1-tests.tar.gz) = 7fbd55c80366e35e9fc9ef6ceeb7b5c9c2053cc79f785c83921175071f554a2a387eceb4e3c06017cc9fdfdc4fd98d466d8a63dc1d372acce91e766f5aa5b4cb
|
SHA512 (blivet-3.7.0-tests.tar.gz) = ef6ed70d51cc0c905d90c7dd338ac275b6fcd90aac7801d0a7c1a5e4a6ea67b726e2d71c7ade1f4bc3cd5a4173513992318811c62c9045964d6d3aaf99e3877d
|
||||||
SHA512 (blivet-3.6.1.tar.gz) = ae69d0382ef0b0621b53070feb93a2ad2e608c205a66050adbe6d6f8dba9f19672c8cba92151f2097e3afb85a0a4966a7629389861cd4f8b924b43d92f145136
|
SHA512 (blivet-3.7.0.tar.gz) = c1ca8ec54790fd73272171a37d75837904bf6cc96dac711cb275bdd8d418c31824821400c33cf05f356410b7ceb4663d2ba25b7d676818e9a644f39f56d23636
|
||||||
|
Loading…
Reference in New Issue
Block a user