AlphaServer SC patch kit: ========================== AlphaServer SC Version : SCv2.6 SSB Kit Name: T64KIT0021333-V51BB24-20040120: C471.00 Release Date: 30 January 2004 Case: SIERRA-291 PTR: 153-1-4435 Abstract: fstat() reports incorrect minor number for a cam device. Description of Patch: ===================== The Tru64 UNIX V5 enviornment was enhanced to facilitate, among other things multipathing and a larger name space for buses, targets, and logical unit numbers than can be represented by a 14 bit minor number. The CAM driver has been updated to use this 14 bit minor device number. This has caused a backwards compatability issue for a customer with an application that reads the CAM minor device number with an fstat() system call. From the applications point of view the stat structure returned by the fstat() system call contains an incomplete value for the device id, st_rdev for the cam driver. The minor device number for the CAM driver always appears to be set to zero. The long term and correct option for the customer is to change their application to bring it up-to-date with the Tru64 UNIX V5 environment. In the interim however this fix has been provided which facilitates reverting back to pre V5 behaviour for fstat() in connection with the CAM driver. Ideally applications should be recoded to properly use V5's multipathing environment and much larger buses, targets, and logical name space. Users experiencing an issue with fstat() in their application may use this fix in the interim while the necessary updates to the appilcation in question are being made. This fix is not required for stat() and lstat system calls which will function as before. This fix should only be used on a system which abides by the configuration restrictions listed below. Not adhering to these restrictions could result in unexpected behavior and/or unintended operations to storage devices. SYSTEM CONFIGURATION RESTRICTIONS OF USER AGENT DRIVER WORKAROUND - The system has no more than 64 SCSI buses, 8 targets per bus, and 8 luns per target. - The system has no Fibre Channel devices present. - The system has no SCSI-3 devices present. - The system has no KZPDC (Smart Array 5300) present. - There should be no more than one path to any storage device on the system. - The storage cables are never changed on the system. - No storage devices are to be hot swapped on the system. Note: This patch adds a hidden sysconfigtab variable, cam_limited_uagt_minor_nums, which defaults to 0 for normal behavior. Setting this to 1 enables this patch, limiting the user agent only 64 simultaneous opens maximum, but in doing so, leaves bits <19:6> with a valid minor number returned by fstat(). Kit location: ============= The patch kit is T64KIT0021333-V51BB24-20040120.tar and it can be downloaded from guru.zk3.dec.com:/usr/guest/ftp/misc/osf/SIERRA-291 guru does not accept anonymous ftp connections so you will have to mount this directory using NFS and copy the patch that way. Prerequisites: ============== Before installing this Patch kit, you should ensure the following: 1) You have all mandatory patches for this release installed Kit checksum: ============= cksum values for kit, 914127509 3604480 T64KIT0021333-V51BB24-20040120.tar Updated files: ============== A list of the files included in this patch is given below along with the cksum values for each file. 1546047684 634429 ./sys/BINARY/cam.mod Instructions: ============= This patch is provided as an sc_dupatch installable kit. Unpack it into a directory that is NFS mounted on all domains e.g. /usr/cspkit and follow the following steps to install it: Patch required on Management Server (if used) : YES Patch required on Domains : YES 1) Verify that it is possible to install the patches as follows: On the Management Server (if used) #/usr/sbin/sc_dupatch -install -kit /usr/cspkit/patch_kit -name -note -noroll -nolevel2 -noauto -deps_only -precheck_only -patch C471.00 On Domains: # sra command -domains all -member 1 -command '/usr/sbin/sc_dupatch -install -kit /tmp/CSPkit/patch_kit -name -note -noroll -nolevel2 -noauto -deps_only -precheck_only -patch C471.00' 3) Now Run the Patch Installation as follows: On the Management Server (if Used): ----------------------------------- Install the patch using the following commands: #/usr/sbin/sc_dupatch -install -kit /usr/cspkit/patch_kit -name -note -noroll -nolevel2 -noauto -deps_only -patch C471.00 Rebuild your kernel # doconfig -c HOSTNAME Copy the new kernel to /vmunix Reboot the machine # shutdown -r now On Domains: ----------- Install the patch using the following commands: # sra command -domains all -member 1 -command '/usr/sbin/sc_dupatch -install -kit /tmp/CSPkit/patch_kit -name -note -noroll -nolevel2 -noauto -deps_only -patch C471.00' Now Build and Deploy the Kernels: Make sure all nodes are up so that kernels will be built on all nodes # sra command -domains all -member 1 -command 'BuildKernels' # sra command -domains all -member 1 -command 'DeployKernels' Shutdown the Domains: # sra shutdown -domains all Now boot All nodes: # sra boot -domains all ******************************************************************************* Appendices: =========== A.1 Details of -deps_only option -------------------------------- Patches from UNIX support have previously been supplied to AlphaServer SC customers in a manual install format. That is, patches were installed by the customer running a script to copy the patch to the correct location. The standard UNIX support patches for non-SC customers have always been supplied using the CSP (Customer Specific Patch) format and are installed using the dupatch tool. Patches for SC customers are now also being provided in CSP format and these patches need to be installed using the sc_dupatch tool. sc_dupatch does some dependency checking to ensure the patches already on the machine are correct. It does this by comparing the chksums of files on the system with its own dependency list. If you have manually installed a patch that is on the dependency list for this new patch, then sc_dupatch will report an error and not install the patch. That is because sc_dupatch is not aware of patches installed manually. If sc_dupatch reports an error indicating a failure to install one or more patches, check whether this error message was generated by sc_dupatch detecting a mismatch caused by the existence of a manually installed patch. If you're satisfied that the conflict does arise from a manually-installed patch which you want to override, then a simple workaround is available in the form of the new deps_only switch. This has been introduced to cater specifically for such situations. It turns off the inventory-checking mechanism so that the pre-install checking is restricted to dependency-checking only. Simply re-run the install command with the deps_only flag to skip this inventory check and allow the installation to proceed.