[master/rhel7-branch][PATCH] Don't allow bootloader and /boot on iSCSI on s390 (#1034222)
Vratislav Podzimek
vpodzime at redhat.com
Tue Nov 26 13:41:15 UTC 2013
s390(x) cannot boot from an iSCSI disk.
Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
pyanaconda/bootloader.py | 11 +++++++++++
pyanaconda/kickstart.py | 10 ++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
index f9a1cc5..414c5cf 100644
--- a/pyanaconda/bootloader.py
+++ b/pyanaconda/bootloader.py
@@ -26,6 +26,7 @@ import sys
import os
import re
import struct
+import blivet
from parted import PARTITION_BIOS_GRUB
from pyanaconda import iutil
@@ -573,6 +574,11 @@ class BootLoader(object):
log.debug("stage1 device cannot be of type %s" % device.type)
return False
+ if blivet.arch.isS390() and all(isinstance(disk, blivet.devices.iScsiDiskDevice)
+ for disk in device.disks):
+ log.debug("stage1 device cannot be on an iSCSI disk on s390(x)")
+ return False
+
description = self.device_description(device)
if self.stage2_is_valid_stage1 and device == self.stage2_device:
@@ -684,6 +690,11 @@ class BootLoader(object):
if device.protected:
valid = False
+ if blivet.arch.isS390() and all(isinstance(disk, blivet.devices.iScsiDiskDevice)
+ for disk in device.disks):
+ self.errors.append(_("%s cannot be on an iSCSI disk on s390(x)") % self.stage2_description)
+ valid = False
+
if not self._device_type_match(device, self.stage2_device_types):
self.errors.append(_("%s cannot be of type %s")
% (self.stage2_description, device.type))
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index d615208..ade0761 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -295,12 +295,14 @@ class Bootloader(commands.bootloader.F19_Bootloader):
if self.timeout is not None:
storage.bootloader.timeout = self.timeout
- # Throw out drives specified that don't exist.
+ # Throw out drives specified that don't exist or cannot be used (iSCSI
+ # device on an s390 machine)
disk_names = [d.name for d in storage.disks
- if not d.format.hidden and not d.protected]
+ if not d.format.hidden and not d.protected and
+ (not blivet.arch.isS390() or not isinstance(d, blivet.devices.iScsiDiskDevice))]
for drive in self.driveorder[:]:
if drive not in disk_names:
- log.warning("requested drive %s in boot drive order doesn't exist" % drive)
+ log.warning("requested drive %s in boot drive order doesn't exist or cannot be used" % drive)
self.driveorder.remove(drive)
storage.bootloader.disk_order = self.driveorder
@@ -308,7 +310,7 @@ class Bootloader(commands.bootloader.F19_Bootloader):
if self.bootDrive:
if not self.bootDrive in disk_names:
raise KickstartValueError, formatErrorMsg(self.lineno,
- msg="Requested boot drive %s doesn't exist" % self.bootDrive)
+ msg="Requested boot drive %s doesn't exist or cannot be used" % self.bootDrive)
else:
self.bootDrive = disk_names[0]
--
1.8.4.2
More information about the anaconda-patches
mailing list