diff -upk.orig lilo-22.7.3.orig/common.c lilo-22.7.3/common.c --- lilo-22.7.3.orig/common.c 2007-02-02 15:11:31 +0000 +++ lilo-22.7.3/common.c 2007-02-02 15:12:03 +0000 @@ -23,7 +23,7 @@ source directory. #ifndef SHS_MAIN LILO_EXTRA extra; char *identify = NULL; -int boot_dev_nr, raid_index, do_md_install; +int boot_dev_nr, raid_index = -1, do_md_install; int verbose = 0, test = 0, compact = 0, linear = 0, raid_flags = 0, zflag = 0, ireloc = 0, force_fs = 0, force_raid = 0, extended_pt = 0, query = 0, nowarn = 0, lba32 = 0, autoauto = 0, passw = 0, geometric = 0, eflag = 0; diff -upk.orig lilo-22.7.3.orig/geometry.c lilo-22.7.3/geometry.c --- lilo-22.7.3.orig/geometry.c 2007-02-02 15:11:31 +0000 +++ lilo-22.7.3/geometry.c 2007-02-02 15:27:11 +0000 @@ -1100,17 +1100,16 @@ void geo_get(GEOMETRY *geo,int device,in die("Only RAID1 devices are supported for boot images"); raid_limit = md_array_info.raid_disks + md_array_info.spare_disks; - /* version 22.7 */ -#if 1 +if (raid_index >= 0) +{ is_raid = (device==boot_dev_nr); md_disk_info.number = raid_index; if (ioctl(md_fd,GET_DISK_INFO,&md_disk_info) < 0) die("GET_DISK_INFO: %s", mdxxx); device = MKDEV(md_disk_info.major, md_disk_info.minor); -#else /* prior to 22.7 */ -{ -int pass; +} else { + int pass, dev; for (pass = 0; pass < raid_limit; pass++) { md_disk_info.number = pass; if (ioctl(md_fd,GET_DISK_INFO,&md_disk_info) < 0) @@ -1129,12 +1128,13 @@ int pass; /* this change may be in error; the correct comparison is == */ is_raid = (device!=boot_dev_nr); #endif - device = MKDEV(md_disk_info.major, md_disk_info.minor); + dev = MKDEV(md_disk_info.major, md_disk_info.minor); + if (!dev) continue; + device = dev; break; } } } -#endif /* end of code prior to version 22.7 */ close(md_fd); }