Compaq DL380 server, with both built in and additional SMART2 controllers All disks are on add-in card, configured for hardware raid 0+1. Both SMART devices detected, with on-board assigned device0 and add-in assigned device1 Using the gdth.img dd disk, although have tried without it as well. Problem is that when the installer creates the device files for the drive array below /tmp/ida, it names the files correctly but gives them the wrong major device number. All entries for my device (starting c1d0 - it's logical disk 0 on controller 1) should have major 73, as they are on the second cpqarray device, but infact they are assigned major 72, which should be used for the first device. This makes things pretty much totally uninstallable, as it appears to create the device files for the partitions on the fly when it needs them, overwriting any efforts I've made to create my own device files with the correct settings. Any help greatfully received... Chris
More info for you - The second controller is a 3200. Both controllers and the system BIOS are patched to the latest available from compaq. The problem is also reproducible with 6.1, using the Compaq supplied boot disk (from the compaq.com server support site). If you don't use this boot disk, then the second controller is not found at all.
OK, I've had a dig in the anaconda source, and I've found the problem. In the isys dir, there is a file called devnodes.c, which creates devices based on the device list it's given. The section in that file that deals with ida devices assumes that there will only ever be one controller, thus assigning major 72 regardless. I think something like this patch would fix it: --- anaconda-6.2.2/isys/devnodes.c Fri Jan 7 16:57:15 2000 +++ anaconda-6.2.2/isys/devnodes.c.new Wed May 10 16:09:11 2000 @@ -103,7 +103,11 @@ } else if (!strncmp(devName, "ida/", 4)) { /* Compaq Smart Array "ida/c0d0{p1} */ type = S_IFBLK; - major = 72; /* controller */ + if (devName[5] == '0' ) { + major = 72; /* controller 0 */ + } else { + major = 73; /* controller 1 */ + } minor = (devName[7] - '0') * 16; /* disk */ if (strlen(devName) > 8) /* partition */ minor += atoi(devName + 9); However, I'm having trouble compiling the source so haven't been able to verify as yet. Would appreciate it if you could take a look, verify and get back to me. I really need this resolving asap - I have a large number of these servers to get built as quickly as poss. Cheers, C.
*** This bug has been marked as a duplicate of 11304 ***