diff -ur grub-0.94/lib/device.c grub-0.94.new/lib/device.c --- grub-0.94/lib/device.c 2004-05-07 04:50:36.375238696 +0200 +++ grub-0.94.new/lib/device.c 2004-05-07 04:48:57.611253104 +0200 @@ -419,6 +419,12 @@ { sprintf (name, "/dev/rd/c%dd%d", controller, drive); } + +static void +get_i2o_disk_name (char *name, int unit) +{ + sprintf (name, "/dev/i2o/hd%c", unit + 'a'); +} #endif /* Check if DEVICE can be read. If an error occurs, return zero, @@ -789,6 +795,26 @@ } } } + + /* I2O disks. */ + for (i = 0; i < 8; i++) + { + char name[16]; + + get_i2o_disk_name (name, i); + if (check_device (name)) + { + (*map)[num_hd + 0x80] = strdup (name); + assert ((*map)[num_hd + 0x80]); + + /* If the device map file is opened, write the map. */ + if (fp) + fprintf (fp, "(hd%d)\t%s\n", num_hd, name); + + num_hd++; + } + } + #endif /* __linux__ */ /* OK, close the device map file if opened. */ @@ -844,7 +870,8 @@ (strncmp(dev, "/dev/ida/", 9) == 0 || strncmp(dev, "/dev/ataraid/", 13) == 0 || strncmp(dev, "/dev/cciss/", 11) == 0 || - strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", + strncmp(dev, "/dev/rd/", 8) == 0 || + strncmp(dev, "/dev/i2o/", 9) == 0) ? "p" : "", ((partition >> 16) & 0xFF) + 1); /* Open the partition. */