Lennart, try giving this patch a whirl. In the case after we scan the aliases list and we haven't found any block devices it will now try to scan the entire tree. It kinda worked under OpenBios although I ran into another bug where it can't open a device path that it gave me for the pci ide controller. It found the other 2 drives fine.

I think this maintains the correct balance of using short pretty names if available but working if they are not available.

There is a case where it will mess up however. If you only specify an alias for one device but need another device to build a raid or lvm it will fail. Although, thinking about it, this already would happen.

As always, you can specify the either path manually.

Doug

=== modified file 'disk/ieee1275/ofdisk.c'
--- disk/ieee1275/ofdisk.c      2010-07-29 03:58:16 +0000
+++ disk/ieee1275/ofdisk.c      2010-07-29 06:02:06 +0000
@@ -76,6 +76,9 @@
 grub_ofdisk_iterate (int (*hook) (const char *name))
 {
   auto int dev_iterate (struct grub_ieee1275_devalias *alias);
+  int disks_found = 0;
+  int use_path = 0;
+  int result;
 
   int dev_iterate (struct grub_ieee1275_devalias *alias)
     {
@@ -110,11 +113,20 @@
 
       if (! grub_strcmp (alias->type, "block") &&
          grub_strncmp (alias->name, "cdrom", 5))
-       ret = hook (alias->name);
+      {
+       disks_found++;
+       ret = hook (use_path ? alias->path : alias->name);
+      }
       return ret;
     }
 
-  return grub_devalias_iterate (dev_iterate);
+  result = grub_devalias_iterate (dev_iterate);
+  if (!disks_found)
+  {
+    use_path = 1;
+    result = grub_ieee1275_devices_iterate (dev_iterate);
+  }
+  return result;
 }
 
 static char *

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to