On Thu, Jul 29, 2010 at 02:21:36AM -0400, Doug Nazar wrote: > 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 * > I removed the nvalias's and got: 0 > boot /p...@800000020000200/pci1014,0...@1/sas/d...@20000 | Elapsed time since release of system processors: 7 mins 55 secs Welcome to GRUB! Detected bad memory access to address: 727461736261739d Package path = /packages/gscsi/disk Loc-code = Return Stack Trace ------------------ @ - c3e530 find-method - c48b9c (poplocals) - c3c9e8 $call-method - c48c54 (poplocals) - c3c9e8 $CALL-R/W-DEV - d54a70 (EXEC) - d54d24 EXECUTE-COMMAND - d54db4 RETRY-COMMAND - d55ca4 INQUIRY - d55fd0 SCSI-DEVICE-TYPE - d5672c catch - c3aff0 $call-method - c48c78 (poplocals) - c3c9e8 $call-parent - c48e98 SCSI-DEVICE-TYPE - d56df4 OPEN - d58200 catch - c3aff0 $call-method - c48c78 (poplocals) - c3c9e8 Detected bad memory access to address: 727461736261739d Package path = /packages/gscsi/disk Loc-code = Return Stack Trace ------------------ @ - c3e530 find-method - c48b9c (poplocals) - c3c9e8 $call-method - c48c54 (poplocals) - c3c9e8 $CALL-R/W-DEV - d54a70 (EXEC) - d54d24 EXECUTE-COMMAND - d54db4 RETRY-COMMAND - d55ca4 INQUIRY - d55fd0 SCSI-DEVICE-TYPE - d5672c catch - c3aff0 $call-method - c48c78 (poplocals) - c3c9e8 $call-parent - c48e98 SCSI-DEVICE-TYPE - d56df4 OPEN - d58200 catch - c3aff0 $call-method - c48c78 (poplocals) - c3c9e8 diskOPEN: can't find hw device diskOPEN: can't find hw device error: no such disk. Entering rescue mode... grub rescue> Any idea what went wrong? -- Len Sorensen _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel