How to change controller numbering/enumeration in Solaris 10

opensolarissolarissolaris-10

After moving a Solaris 10 server to a new machine, the rpool disk is now c1t0d0. We have some third party applications hard coded for c0t0d0. How can I change the controller enumeration on this machine? There is no longer a c0.

I've tried rebuilding the /etc/path_to_inst, but the instance numbers don't seem to match up with the controller numbers. Also, it's not clear if i86pc platforms use this file.

I've tried devfsadm -C to clear the dangling links, but I'm not sure how to cause devfsadm to start numbering from 0 again (or force certain devices in the tree to a specific controller number).

Next I am going to try to create the symlinks manually in /dev/dsk and rdsk to point to the correct /devices.

I feel like I am going way off path here. Any suggestions?

Thanks


Update:

This is on virtual ESXi hardware with an additional pass-through HBA. There is no controller 0 on the machine, that is for sure. devfsadm -C cleans up all the c0 device symlinks but keeps the already linked controllers at their current ids.

Best Answer

Seems strange to have an application care about the disk device name, but putting that aside, it sounds like there may still be another controller being discovered before the one where the rpool disk resides. Likely suspects would be onboard IDE or SATA ports, perhaps a CDROM device. CDROMs and other non-disk devices don't show up in 'format'.

i86pc platforms do use path_to_inst, but it's a list of hardware attached to specific driver instances, whereas "controller" is a generic identifier potentially covering multiple drivers. I'd look at the output of 'iostat -En' and see if it lists anything on c0. That might give you a hint. If there is something there, you may need to disable that port, otherwise it will continue to show up and occupy that controller number. Controllers are enumerated in a defined order and while there are bound to be differences among various PC BIOSes, my experience has been that onboard controllers are discovered before add-in controllers in PCI/PCI-X/PCIe slots.

You might also try a reconfigure boot: 'touch /reconfigure' and reboot.

Related Topic