1 Star 0 Fork 106

yanan-rock/anaconda

forked from src-openEuler/anaconda 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
anaconda-Allow-to-detect-devices-with-the-iso9660-file-system.patch 5.73 KB
一键复制 编辑 原始数据 按行查看 历史
t.feng 提交于 2020-08-07 16:53 . fix stage2 as default sources
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yanan-rock/anaconda.git
git@gitee.com:yanan-rock/anaconda.git
yanan-rock
anaconda
anaconda
master

搜索帮助