This applies to Solaris SPARC only ...
The firmware in an HBA is like the BIOS in an Intel system (or OpenBoot/FCode in SPARC). It initializes the card's microprocessor OS, and leaves some data in memory for the OS and owning driver to use. One of the items it puts in memory is the device family name. The name is primarily for easy recognition by people; the OS uses different information to match the proper driver.
Skipping the history, Emulex traditionally used the family name 'lpfc'. In the Solaris SPARC environment (only) there was also the 'emlx' name. If you bought HBAs from Sun/Oracle, they have firmware that uses the emlx name. Cards obtained from anywhere else used lpfc.
As part of the system upgrades yesterday, I updated the Emulex firmware from 3.10a5 to 3.10a7. Not giving any thought to this, I downloaded the latest Universal Boot firmware image, which includes BIOS (32-bit Intel), EFI (64-bit Intel), and FCode (SPARC) support. (This allows the card to be used in any Intel or SPARC server.) I didn't realize the importance of this change in the Release Notes about 3.10a6 (July 2013):
1. Change the OpenBoot to set the default boot mode in "emlx" instead of "lpfc" for Solaris SPARC. (BZ134120)
The sg driver identifies tape drives by linking to their physical device names. For example:
# ls -l /dev/sg/c0tw500308c001fea803l0
lrwxrwxrwx 1 root root 81 Sep 23 15:10 /dev/sg/c0tw500308c001fea803l0 -> ../../devices/pci@1,700000/pci@0/pci@8/lpfc@0,1/fp0,0/sg@w500308c001fea803,0:raw
Notice that the name has lpfc in it? The name after the upgrade is:
Oops! The sg device link now points to a non-existant device name. The fix was to run devfsadm, then have the sg driver replace its tape-related links, using the new device names. (See TECH63095.)
Two systems did not accept this firmware upgrade. It turns out that the cards in these systems were purchased from EMC, which has their own approved firmware flavors. When they're updated, they'll have the same issue.
After fixed, the only way this issue could be encountered again is if an Emulex card is replaced with one that has firmware older than 3.10a6. This can be handled by checking, and upgrading if necessary, the card's firmware.