代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/anaconda 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 4e699fe30da24771b80ff1fe64d7791bcb444f79 Mon Sep 17 00:00:00 2001
From: Vendula Poncova <vponcova@redhat.com>
Date: Tue, 21 Jul 2020 10:57:00 +0200
Subject: [PATCH] Allow to detect devices with the iso9660 file system as
optical media
Test that the DBus method FindOpticalMedia identifies devices with the iso9660 file
system as optical media, so it is able to find NVDIMM devices with iso9660.
The DBus method GetDevicesToIgnore of the NVDIMM module shouldn't return NVDIMM
devices with the iso9660 file system. They can be used as an installation source.
Protect all devices with the iso9660 file system. It will protect, for example, NVDIMM
devices with the iso9660 file system that can be used only as an installation source
anyway.
Related: rhbz#1856264
---
.../modules/storage/devicetree/model.py | 5 ++++
pyanaconda/modules/storage/nvdimm/nvdimm.py | 12 ++++++++-
.../module_device_tree_test.py | 27 ++++++++++++++++---
3 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/pyanaconda/modules/storage/devicetree/model.py b/pyanaconda/modules/storage/devicetree/model.py
index 4d0ecdb..cdee5a8 100644
--- a/pyanaconda/modules/storage/devicetree/model.py
+++ b/pyanaconda/modules/storage/devicetree/model.py
@@ -303,6 +303,11 @@ class InstallerStorage(Blivet):
# cdroms, involves unmounting which is undesirable (see bug #1671713).
protected.extend(dev for dev in self.devicetree.devices if dev.type == "cdrom")
+ # Protect also all devices with an iso9660 file system. It will protect
+ # NVDIMM devices that can be used only as an installation source anyway
+ # (see the bug #1856264).
+ protected.extend(dev for dev in self.devicetree.devices if dev.format.type == "iso9660")
+
# Mark the collected devices as protected.
for dev in protected:
log.debug("Marking device %s as protected.", dev.name)
diff --git a/pyanaconda/modules/storage/nvdimm/nvdimm.py b/pyanaconda/modules/storage/nvdimm/nvdimm.py
index 0bbcc6e..4476dd1 100644
--- a/pyanaconda/modules/storage/nvdimm/nvdimm.py
+++ b/pyanaconda/modules/storage/nvdimm/nvdimm.py
@@ -21,6 +21,7 @@ import gi
gi.require_version("BlockDev", "2.0")
from gi.repository import BlockDev as blockdev
+from blivet import udev
from blivet.static_data import nvdimm
from pykickstart.constants import NVDIMM_ACTION_RECONFIGURE, NVDIMM_ACTION_USE
@@ -90,6 +91,9 @@ class NVDIMMModule(KickstartBaseModule):
installation, the device(s) must be specified by nvdimm kickstart
command. Also, only devices in sector mode are allowed.
+ Don't ignore devices that have an iso9660 file system. We might
+ want to use them as an installation source.
+
:return: a set of device names
"""
namespaces_to_use = self.get_namespaces_to_use()
@@ -97,7 +101,13 @@ class NVDIMMModule(KickstartBaseModule):
devices_to_ignore = set()
for ns_name, ns_info in nvdimm.namespaces.items():
- if ns_info.mode != blockdev.NVDIMMNamespaceMode.SECTOR:
+ info = udev.get_device(device_node="/dev/" + ns_info.blockdev)
+
+ if info and udev.device_get_format(info) == "iso9660":
+ log.debug("%s / %s won't be ignored - NVDIMM device has "
+ "an iso9660 file system", ns_name, ns_info.blockdev)
+ continue
+ elif ns_info.mode != blockdev.NVDIMMNamespaceMode.SECTOR:
log.debug("%s / %s will be ignored - NVDIMM device is not "
"in sector mode", ns_name, ns_info.blockdev)
elif ns_name not in namespaces_to_use and ns_info.blockdev not in devices_to_use:
diff --git a/tests/nosetests/pyanaconda_tests/module_device_tree_test.py b/tests/nosetests/pyanaconda_tests/module_device_tree_test.py
index 838c70e..5e52843 100644
--- a/tests/nosetests/pyanaconda_tests/module_device_tree_test.py
+++ b/tests/nosetests/pyanaconda_tests/module_device_tree_test.py
@@ -24,10 +24,10 @@ from unittest.mock import patch, Mock, PropertyMock
from tests.nosetests.pyanaconda_tests import patch_dbus_publish_object, check_task_creation
from blivet.devices import StorageDevice, DiskDevice, DASDDevice, ZFCPDiskDevice, PartitionDevice, \
- LUKSDevice, iScsiDiskDevice, NVDIMMNamespaceDevice, FcoeDiskDevice
+ LUKSDevice, iScsiDiskDevice, NVDIMMNamespaceDevice, FcoeDiskDevice, OpticalDevice
from blivet.errors import StorageError, FSError
from blivet.formats import get_format
-from blivet.formats.fs import FS
+from blivet.formats.fs import FS, Iso9660FS
from blivet.formats.luks import LUKS
from blivet.size import Size
@@ -627,9 +627,28 @@ class DeviceTreeInterfaceTestCase(unittest.TestCase):
str(cm.exception), "Failed to unmount dev1 from /path: Fake error."
)
- def find_install_media_test(self):
+ @patch.object(Iso9660FS, "check_module")
+ def find_install_media_test(self, check_module):
"""Test FindInstallMedia."""
- self.assertEqual(self.interface.FindOpticalMedia(), [])
+ dev1 = OpticalDevice("dev1")
+ dev1.size = Size("2 GiB")
+ dev1.format = get_format("iso9660")
+ dev1.controllable = True
+ self._add_device(dev1)
+
+ dev2 = StorageDevice("dev2")
+ dev2.size = Size("2 GiB")
+ dev2.format = get_format("iso9660")
+ dev2.controllable = True
+ self._add_device(dev2)
+
+ dev3 = StorageDevice("dev3")
+ dev3.size = Size("2 GiB")
+ dev3.format = get_format("ext4")
+ dev3.controllable = True
+ self._add_device(dev3)
+
+ self.assertEqual(self.interface.FindOpticalMedia(), ["dev1", "dev2"])
@patch.object(FS, "update_size_info")
def find_mountable_partitions_test(self, update_size_info):
--
2.23.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。