Author: juhliarik
Date: Fri Jun 5 10:13:49 2009
New Revision: 57454
URL: http://svn.opensuse.org/viewcvs/yast?rev=57454&view=rev
Log:
added fix for troubles with soft-raids
Modified:
branches/SuSE-Code-11-Branch/bootloader/VERSION
branches/SuSE-Code-11-Branch/bootloader/package/yast2-bootloader.changes
branches/SuSE-Code-11-Branch/bootloader/src/clients/bootloader_proposal.ycp
branches/SuSE-Code-11-Branch/bootloader/src/grub/misc.ycp
branches/SuSE-Code-11-Branch/bootloader/src/modules/BootGRUB.ycp
branches/SuSE-Code-11-Branch/bootloader/src/modules/BootSupportCheck.ycp
Modified: branches/SuSE-Code-11-Branch/bootloader/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/VERSION?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/VERSION (original)
+++ branches/SuSE-Code-11-Branch/bootloader/VERSION Fri Jun 5 10:13:49 2009
@@ -1 +1 @@
-2.17.59
+2.17.60
Modified: branches/SuSE-Code-11-Branch/bootloader/package/yast2-bootloader.changes
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/package/yast2-bootloader.changes?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/package/yast2-bootloader.changes (original)
+++ branches/SuSE-Code-11-Branch/bootloader/package/yast2-bootloader.changes Fri Jun 5 10:13:49 2009
@@ -1,4 +1,14 @@
-------------------------------------------------------------------
+Mon May 4 15:31:16 CEST 2009 - juhliarik@suse.cz
+
+- added fix for checking soft-raid devices in device.map
+ (bnc#494630)
+- added fix for changing device map in y2-bootloader (bnc#497944)
+- added warning message if there is not valid configuration for
+ soft-raid (bnc#501043)
+- 2.17.60
+
+-------------------------------------------------------------------
Tue Apr 21 14:52:59 CEST 2009 - juhliarik@suse.cz
- added fix for problem with creating USB Live installation in
Modified: branches/SuSE-Code-11-Branch/bootloader/src/clients/bootloader_proposal.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/src/clients/bootloader_proposal.ycp?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/src/clients/bootloader_proposal.ycp (original)
+++ branches/SuSE-Code-11-Branch/bootloader/src/clients/bootloader_proposal.ycp Fri Jun 5 10:13:49 2009
@@ -119,7 +119,6 @@
The range is limited by BIOS to the first 8 devices."),
]
);
- return ret;
}
Modified: branches/SuSE-Code-11-Branch/bootloader/src/grub/misc.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/src/grub/misc.ycp?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/src/grub/misc.ycp (original)
+++ branches/SuSE-Code-11-Branch/bootloader/src/grub/misc.ycp Fri Jun 5 10:13:49 2009
@@ -185,9 +185,24 @@
list underlying_devs = [];
list<string> devs = [];
+ list<string> boot_devices = [];
+
+ // bnc#494630 - add also boot partitions from soft-raids
+ string boot_device = BootCommon::getBootPartition();
+ if (substring (boot_device, 0, 7) == "/dev/md")
+ {
+ boot_devices = add(boot_devices, boot_device);
+ foreach (string dev, BootCommon::GetBootloaderDevices(), {
+ boot_devices = add(boot_devices, dev);
+ });
+ } else {
+
+ boot_devices = BootCommon::GetBootloaderDevices();
+ }
+
// get a list of all bootloader devices or their underlying soft-RAID
// devices, if necessary
- underlying_devs = maplist (string dev, BootCommon::GetBootloaderDevices(), {
+ underlying_devs = maplist (string dev, boot_devices, {
md = BootCommon::Md2Partitions(dev);
if ( size(md) > 0 ) {
devs = maplist (string k, integer v, md, ``(k));
@@ -1203,6 +1218,7 @@
{
boolean result = false;
+
if (size(BootCommon::device_mapping)>8)
{
result = false;
@@ -1242,7 +1258,7 @@
}
});
} else {
- y2milestone("Device map includes less than 9 devices.");
+ y2milestone("Device map includes less than 9 devices.");
}
return result;
}
Modified: branches/SuSE-Code-11-Branch/bootloader/src/modules/BootGRUB.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/src/modules/BootGRUB.ycp?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/src/modules/BootGRUB.ycp (original)
+++ branches/SuSE-Code-11-Branch/bootloader/src/modules/BootGRUB.ycp Fri Jun 5 10:13:49 2009
@@ -865,14 +865,75 @@
];
}
+/** bnc#494630 GRUB configuration in installation workflow fail with more than 8 disks on software raid
+ * Return all disks for checking in device map
+ *
+ * @param string boot disk
+ * @return list<string> disk devices
+ */
+list <string> ReturnAllDisks(string boot_disk)
+{
+ list <string> ret = [];
+ map tm = Storage::GetTargetMap ();
+ map b_disk = tm[boot_disk]:$[];
+ if (b_disk["type"]:nil == `CT_MD)
+ {
+ string boot_partition = BootCommon::getBootPartition();
+ list b_disk_partitions = b_disk["partitions"]:[];
+ foreach (map p, (list<map>)b_disk_partitions,
+ {
+ if (p["device"]:"" == boot_partition)
+ {
+ if ((size(p["devices"]:[]) > 0) && (p["type"]:nil == `sw_raid))
+ {
+ foreach(string dev, p["devices"]:[],
+ {
+ map p_dev = Storage::GetDiskPartition (dev);
+ string disk_dev = p_dev["disk"]:"";
+ if (disk_dev != "")
+ ret = add(ret, disk_dev);
+ else
+ y2error("Real disk was not found for device: %1", dev);
+ });
+ } else {
+ if (p["type"]:nil == `sw_raid)
+ y2error("soft raid partition: %1 doesn't include any devices: %2",
+ boot_partition, p["devices"]:[]);
+ else
+ y2error("Disk is not soft-raid %1", b_disk);
+ ret = add(ret, boot_disk);
+
+ }
+ }
+ });
+ } else {
+ y2milestone("Boot disk is not on MD-RAID");
+ ret = add(ret, boot_disk);
+ }
+ y2milestone("Devices for checking if they are in device map: %1", ret);
+ return ret;
+}
+
+/** bnc#494630 GRUB configuration in installation workflow fail with more than 8 disks on software raid
+ * Function check if boot disk is in device map
+ *
+ * @return boolean true if boot device is not in device map
+ */
global boolean CheckDeviceMap()
{
// FATE #303548 - Grub: limit device.map to devices detected by BIOS
boolean ret = false;
string boot_disk = BootCommon::getBootDisk();
- if (boot_disk != "")
- ret = checkBootDeviceInDeviceMap(boot_disk, BootCommon::Dev2MountByDev(boot_disk));
+ list <string> disks = ReturnAllDisks(boot_disk);
+ if (size(disks) > 0)
+ {
+ foreach(string disk, disks,
+ {
+ ret = ret || checkBootDeviceInDeviceMap(disk, BootCommon::Dev2MountByDev(disk));
+ });
+
+ }
return ret;
Modified: branches/SuSE-Code-11-Branch/bootloader/src/modules/BootSupportCheck.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-Branch/bootloader/src/modules/BootSupportCheck.ycp?rev=57454&r1=57453&r2=57454&view=diff
==============================================================================
--- branches/SuSE-Code-11-Branch/bootloader/src/modules/BootSupportCheck.ycp (original)
+++ branches/SuSE-Code-11-Branch/bootloader/src/modules/BootSupportCheck.ycp Fri Jun 5 10:13:49 2009
@@ -170,58 +170,76 @@
global boolean check_BootDevice()
{
- boolean result = true;
- string boot_device = "";
+ boolean result = true;
+ string boot_device = "";
- map