[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fallback to scanning OF tree if no devaliases
From: |
Lennart Sorensen |
Subject: |
Re: Fallback to scanning OF tree if no devaliases |
Date: |
Thu, 29 Jul 2010 11:36:41 -0400 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
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 /address@hidden/pci1014,address@hidden/sas/address@hidden |
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