+2008-05-09 Robert Millan <rmh@aybabtu.com>
+
+ * util/biosdisk.c (linux_find_partition, get_os_disk): Handle Virtio
+ devices.
+ * util/grub-mkdevicemap.c (get_virtio_disk_name)
+ (make_device_map): Likewise.
+ Reported by Aurelien Jarno <aurel32@debian.org>
+
2008-05-07 Ian Campbell <ijc@hellion.org.uk>
* util/biosdisk.c (get_os_disk): Recognise xvd type disks.
format = "part%d";
}
else if ((strncmp (real_dev + 5, "hd", 2) == 0
+ || strncmp (real_dev + 5, "vd", 2) == 0
|| strncmp (real_dev + 5, "sd", 2) == 0)
&& real_dev[7] >= 'a' && real_dev[7] <= 'z')
{
return path;
}
- /* If this is an IDE disk or a SCSI disk. */
+ /* If this is an IDE, SCSI or Virtio disk. */
if ((strncmp ("hd", p, 2) == 0
+ || strncmp ("vd", p, 2) == 0
|| strncmp ("sd", p, 2) == 0)
&& p[2] >= 'a' && p[2] <= 'z')
{
- /* /dev/[hs]d[a-z][0-9]* */
+ /* /dev/[hsv]d[a-z][0-9]* */
p[3] = '\0';
return path;
}
}
#ifdef __linux__
+static void
+get_virtio_disk_name (char *name, int unit)
+{
+ sprintf (name, "/dev/vd%c", unit + 'a');
+}
+
static void
get_dac960_disk_name (char *name, int controller, int drive)
{
}
#ifdef __linux__
+ /* Virtio disks. */
+ for (i = 0; i < 20; i++)
+ {
+ char name[16];
+
+ get_virtio_disk_name (name, i);
+ if (check_device (name))
+ {
+ char *p;
+ p = grub_util_get_disk_name (num_hd, name);
+ fprintf (fp, "(%s)\t%s\n", p, name);
+ free (p);
+ num_hd++;
+ }
+ }
+
/* ATARAID disks. */
for (i = 0; i < 8; i++)
{