Hey, thanks for the bug report. One thing that needs to be emphasized is that unless this gets reported in bugzilla, it's very likely to be lost.
All bugs need to be reported in bugzilla so they can be tracked and
managed sanely, and so that you can always find out exactly what the status of a fix is. <<<
Cheers, -- Elliot We're so busy putting out fires that we don't take time to stop kids from playing with matches.
On Thu, 23 Sep 2004, Dave wrote:
Not kernel related this time!
Device inodes are not being created properly by anaconda, instead of:
/dev/i2o/hda 80, 0 /dev/i2o/hda1 80, 1 ... /dev/i2o/hda9 80, 9
I'm seeing:
/dev/i2o/hda 80, 0 /dev/i2o/hdap1 80, 0 ... /dev/i2o/hdap9 80, 0
causing the install to fail with no hard drives found. Creating the devices manually allows the install to proceed as normal:
mknod /dev/i2o/hda1 b 80 1 mknod /dev/i2o/hda2 b 80 2 ... mknod /dev/i2o/hda9 b 80 9
Technical discussion below - should I take this across to anaconda-devel and/or bugzilla, or is a relevant party listening in?
isys/devnodes.c, devMakeInode() cannot determine minor device number since devName[7] is always 'p' - Assuming fsset.py formatDevice() is correct, I believe (UNTESTED!) the bug is in loader2/getparts.c, isPartitionName():
(1) Either do this:
--- loader2/getparts.c 2004-09-23 01:48:30.000000000 +0100 +++ loader2/getparts.c 2004-09-23 01:48:53.000000000 +0100 @@ -32,7 +32,7 @@ return 0;
/* if it has a '/' in it then treat it specially */
- if (strchr(pname, '/') && !strstr(pname, "iseries")) {
- if (strchr(pname, '/') && !strstr(pname, "iseries") && !strstr(pname,
"i2o")) { /* assume its either a /dev/ida/ or /dev/cciss device */ /* these have form of c?d?p? if its a partition */ return strchr(pname, 'p') != NULL;
(2) Or instead of excluding devices that don't have the form c?d?p?, why not just include those that do?:
--- loader2/getparts.c 2004-09-23 01:48:30.000000000 +0100 +++ loader2/getparts.c 2004-09-23 01:53:40.000000000 +0100 @@ -32,7 +32,7 @@ return 0;
/* if it has a '/' in it then treat it specially */
- if (strchr(pname, '/') && !strstr(pname, "iseries")) {
- if (strstr(pname, "ida/") || strstr(pname, "cciss/")) { /* assume its either a /dev/ida/ or /dev/cciss device */ /* these have form of c?d?p? if its a partition */ return strchr(pname, 'p') != NULL;
(1) is less likely to break existing behaviour, (2) seems more sensible (but still ugly in the long term) - take your pick. NB - I've not had a chance to rebuild anaconda to test this yet since I'm currently without a suitable build platform.