Patch Name: PHKL_10452 Patch Description: s700 10.20 LVM kernel and pstat cumulative patch Creation Date: 97/03/18 Post Date: 97/03/19 Repost: 97/03/25 Missing patch dependency information was added. Sites already having installed this patch should not update to the reposted version since no actual patch bits were modified. However if the patch dependency is not fulfilled you shoull correct this. Hardware Platforms - OS Releases: s700: 10.20 Products: N/A Filesets: LVM.LVM-KRN OS-Core.CORE-KRN Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHKL_10452: PANIC PHKL_8084: ABORT PHKL_8532: CORRUPTION PHKL_7870: PANIC Path Name: /hp-ux_patches/s700/10.X/PHKL_10452 Symptoms: PHKL_10452: Panic: kernel stack overflow; trace includes lv_end(). PHKL_9529: vgdisplay(1M)/vgextend(1M) show incorrect value for max number of PE per PV. PHKL_8999: Without this patch customers are limited to supporting 2 nodes in a shared environment With this patch customers can now use SLVM in a 4 node cluster Alternate links for devices such as the Nike disk array are now supported in a shared environment This change supports a new -t switch for lvchange allowing the administrator the option to limit the time lvm holds i/os to be retried on logical volumes when disks are powerfailed. Without using this option, LVM will hold the i/os as long as there is is one disk where the data resides which may eventually return. Using this option would cause LVM to give up on the powerfailed disk and return i/o errors to the user application using the logical volume. This feature is obviously not to be used indiscriminately. For many High Availability applications, having i/os held in kernel indefinitely is not acceptable. Most customers should not need to use the new switch. PHKL_9022: running strings on a raw sar(1) output file can show some printable strings (sar ignores these). (This was not shipped as a separate patch.) PHKL_7870: lvreduce(1M) may cause a system panic, if it is used to reduce an lvol which was left inconsistent by a prior LVM operation. lvreduce(1M) could not be used to remove lvols that were somehow corrupted, if it was, the command would cause a system panic. PHKL_8084: LVM may return I/O's with errors instead of sending them to an alternate link. This patch also facilitates using "vgreduce -f" for physical volumes which have alternate links; without this patch "vgreduce -f" is not allowed on LVM disks with alternate links. PHKL_8716: After call to pstat_getmsg(), all accesses to the message queue pstat_getmsg() was called hang. PHKL_8532: System crash dumps are corrupt and unusable. Defect Description: PHKL_10452: Defect is quite rare. Kernel stack overflow may result from other causes. This fix reduces frame size of lv_end() from over 600 bytes to under 200 bytes. PHKL_9529: The lv_queryvg() function in ioctl(2) failed to copy the maxpxs field to the returning data structure. This problem was introduced in PHKL_8999. PHKL_8999: Support for SLVM is currently limited to 2 nodes. This patch will allow SLVM to work in a 4 node cluster. Alternate link support has also been added for SLVM so that devices such as the Nike disk array can now be used in a high availability cluster. LVM makes every effort to avoid returning an error to user applications. LVM will hold onto an I/O to retry it later if there is even the smallest hope that the device will return. If a disk simply does not respond and no bad writes made it to the media, LVM will hang onto the i/o as long as the disk does not respond with an indication that there was actually a bad write or read. The patch provides a new feature that allows administrators the option of limiting the time lvm will wait for disks in an logical volume to return, and cause lvm to return i/os with EIO instead of hanging onto them indefinitely. PHKL_9022: pstat_dynamic() allocates a buffer but fails to initialize it before using it. Buffer ends up containing some garbage. This is a cosmetic defect only; sar ignores the uninitialized spaces. (not shipped as a separate patch). PHKL_7870: The problem was that the kernel forced a panic whenever any inconsistency was found during an lvreduce. For example, if a logical extent in an lvol referred to a physical extent that was not allocated, it would cause lvreduce(1M) to panic the system. This occured even when the objective was to remove the offending lvol. This is a very rare occurance. PHKL_8084: Without this patch LVM will not retry failed i/os on alternate links unless the error is one that denotes that the device is offline or powerfailed. Other errors, are not retried on an alternate link and may cause LVM to report the error to users applications. Typically, customers with unmirrored lvols using multiported devices like the HP3232 (Nike) disk array would see the problem when an EIO error is reported to LVM from the underlying device driver due to a device or driver problem. In this situation LVM would report the EIO to user applications without trying any available alternate link. Another problem this patch fixes allows reducing out physical volumes from a volume group when the device is not available and the device has links, formerly devices with links could not be removed if they were not available. PHKL_8532: Intermittent corrupted dumps on PA-RISC2.0 (PA8000) machines on HP-UX 10.20. PHKL_8716: pstat_msginfo() calls msgconv() to convert the offset into a message queue pointer. msgconv() was changed to not only do the conversion, but to lock the queue and return a pointer to the queue's lock. pstat_msginfo() had not been changed to take into account msgconv()'s new behavior. SR: 1653194977 4701330647 4701334698 4701334847 4701335497 4701335935 4701336412 4701349431 5003323493 5003325506 Patch Files: /usr/conf/lib/libhp-ux.a(cpd.o) /usr/conf/lib/libhp-ux.a(dump.o) /usr/conf/lib/libhp-ux.a(lv_config.o) /usr/conf/lib/libhp-ux.a(lv_lvm.o) /usr/conf/lib/libhp-ux.a(pm_config.o) /usr/conf/lib/libhp-ux.a(pstat.o) /usr/conf/lib/liblvm.a(lv_block.o) /usr/conf/lib/liblvm.a(lv_cluster_lock.o) /usr/conf/lib/liblvm.a(lv_defect.o) /usr/conf/lib/liblvm.a(lv_hp.o) /usr/conf/lib/liblvm.a(lv_ioctls.o) /usr/conf/lib/liblvm.a(lv_kdb.o) /usr/conf/lib/liblvm.a(lv_lvsubr.o) /usr/conf/lib/liblvm.a(lv_malloc.o) /usr/conf/lib/liblvm.a(lv_mircons.o) /usr/conf/lib/liblvm.a(lv_pbuf.o) /usr/conf/lib/liblvm.a(lv_phys.o) /usr/conf/lib/liblvm.a(lv_schedule.o) /usr/conf/lib/liblvm.a(lv_spare.o) /usr/conf/lib/liblvm.a(lv_strategy.o) /usr/conf/lib/liblvm.a(lv_stub.o) /usr/conf/lib/liblvm.a(lv_subr.o) /usr/conf/lib/liblvm.a(lv_syscalls.o) /usr/conf/lib/liblvm.a(lv_vgda.o) /usr/conf/lib/liblvm.a(lv_vgsa.o) /usr/conf/lib/liblvm.a(sh_vgsa.o) /usr/conf/lib/liblvm.a(slvm_comm.o) /usr/conf/lib/liblvm.a(slvm_schedule.o) what(1) Output: /usr/conf/lib/libhp-ux.a(cpd.o): cpd.c $Date: 96/10/26 09:39:05 $ $Revision: 1.9.98.8 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/libhp-ux.a(dump.o): dump.c $Date: 96/10/26 09:49:44 $ $Revision: 1.11.98.6 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/libhp-ux.a(lv_config.o): lv_config.c $Date: 96/10/25 20:52:33 $ $Revision: 1. 13.98.6 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/libhp-ux.a(lv_lvm.o): lv_lvm.c $Date: 96/10/25 21:03:34 $ $Revision: 1.3.9 8.2 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/libhp-ux.a(pm_config.o): pm_config.c $Date: 96/10/26 09:27:58 $ $Revision: 1. 6.98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/libhp-ux.a(pstat.o): pstat.c $Date: 96/10/28 11:20:16 $ $Revision: 1.18.9 8.20 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_block.o): lv_block.c $Date: 96/10/25 20:54:08 $ $Revision: 1.1 3.98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_cluster_lock.o): lv_cluster_lock.c $Date: 96/10/25 16:50:50 $ $Revisi on: 1.10.98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_defect.o): lv_defect.c $Date: 96/10/25 17:01:38 $ $Revision: 1. 16.98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_hp.o): lv_hp.c $Date: 96/10/25 17:01:42 $ $Revision: 1.18.9 8.17 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_ioctls.o): lv_ioctls.c $Date: 96/12/11 16:51:19 $ $Revision: 1. 18.98.14 $ PATCH_10.20 (PHKL_9529) /usr/conf/lib/liblvm.a(lv_kdb.o): lv_kdb.c $Date: 96/10/25 20:54:10 $ $Revision: 1.9.9 8.3 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_lvsubr.o): lv_lvsubr.c $Date: 96/10/25 17:01:58 $ $Revision: 1.15.98.11 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_malloc.o): lv_malloc.c $Date: 96/10/25 20:55:45 $ $Revision: 1. 11.98.3 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_mircons.o): lv_mircons.c $Date: 96/10/25 17:02:04 $ $Revision: 1 .14.98.5 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_pbuf.o): lv_pbuf.c $Date: 96/10/25 20:54:12 $ $Revision: 1.11 .98.6 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_phys.o): lv_phys.c $Date: 97/03/18 09:02:42 $ $Revision: 1.14 .98.9 $ PATCH_10.20 (PHKL_10452) /usr/conf/lib/liblvm.a(lv_schedule.o): lv_schedule.c $Date: 96/10/25 17:02:34 $ $Revision: 1.18.98.9 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_spare.o): lv_spare.c $Date: 96/10/28 11:23:00 $ $Revision: 1.3 .98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_strategy.o): lv_strategy.c $Date: 96/10/25 17:02:40 $ $Revision: 1.14.98.5 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_stub.o): lv_stub.c $Date: 96/10/25 20:54:05 $ $Revision: 1.13 .98.2 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_subr.o): lv_subr.c $Date: 96/10/25 17:02:45 $ $Revision: 1.18 .98.6 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_syscalls.o): lv_syscalls.c $Date: 96/10/25 17:02:53 $ $Revision: 1.14.98.7 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_vgda.o): lv_vgda.c $Date: 96/10/25 17:03:01 $ $Revision: 1.18 .98.3 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(lv_vgsa.o): lv_vgsa.c $Date: 96/10/25 17:03:05 $ $Revision: 1.14 .98.6 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(sh_vgsa.o): sh_vgsa.c $Date: 96/10/25 17:03:23 $ $Revision: 1.3 .98.7 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(slvm_comm.o): slvm_comm.c $Date: 96/10/25 17:03:40 $ $Revision: 1. 3.98.4 $ PATCH_10.20 (PHKL_8999) /usr/conf/lib/liblvm.a(slvm_schedule.o): slvm_schedule.c $Date: 96/10/25 17:03:49 $ $Revision : 1.3.98.6 $ PATCH_10.20 (PHKL_8999) cksum(1) Output: 4114346575 11604 /usr/conf/lib/libhp-ux.a(cpd.o) 797819625 12752 /usr/conf/lib/libhp-ux.a(dump.o) 3609837110 26628 /usr/conf/lib/libhp-ux.a(lv_config.o) 3955047993 156556 /usr/conf/lib/libhp-ux.a(lv_lvm.o) 17394889 5308 /usr/conf/lib/libhp-ux.a(pm_config.o) 943711055 23736 /usr/conf/lib/libhp-ux.a(pstat.o) 2908410957 2624 /usr/conf/lib/liblvm.a(lv_block.o) 3171795420 9956 /usr/conf/lib/liblvm.a(lv_cluster_lock.o) 896200314 12464 /usr/conf/lib/liblvm.a(lv_defect.o) 3870153707 83464 /usr/conf/lib/liblvm.a(lv_hp.o) 3824188877 31668 /usr/conf/lib/liblvm.a(lv_ioctls.o) 3467347777 728 /usr/conf/lib/liblvm.a(lv_kdb.o) 4044751006 34636 /usr/conf/lib/liblvm.a(lv_lvsubr.o) 71576499 2544 /usr/conf/lib/liblvm.a(lv_malloc.o) 833269564 17552 /usr/conf/lib/liblvm.a(lv_mircons.o) 311558564 6568 /usr/conf/lib/liblvm.a(lv_pbuf.o) 2632588947 7712 /usr/conf/lib/liblvm.a(lv_phys.o) 1099440773 26352 /usr/conf/lib/liblvm.a(lv_schedule.o) 2221436812 36328 /usr/conf/lib/liblvm.a(lv_spare.o) 2895670417 7128 /usr/conf/lib/liblvm.a(lv_strategy.o) 4115391771 732 /usr/conf/lib/liblvm.a(lv_stub.o) 492882945 10056 /usr/conf/lib/liblvm.a(lv_subr.o) 1066182273 13520 /usr/conf/lib/liblvm.a(lv_syscalls.o) 4142623297 9100 /usr/conf/lib/liblvm.a(lv_vgda.o) 3239541967 12592 /usr/conf/lib/liblvm.a(lv_vgsa.o) 3517786406 41964 /usr/conf/lib/liblvm.a(sh_vgsa.o) 2159002800 27264 /usr/conf/lib/liblvm.a(slvm_comm.o) 4188283521 6724 /usr/conf/lib/liblvm.a(slvm_schedule.o) Patch Conflicts: None Patch Dependencies: s800: 10.20: PHCO_8871 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_7870 PHKL_8084 PHKL_8532 PHKL_8716 PHKL_8999 PHKL_9529 Equivalent Patches: PHKL_10453: s800: 10.20 Patch Package Size: 710 Kbytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHKL_10452 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_10452.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHKL_10452.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_10452. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHKL_10452.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_10452.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: Due to the number of objects in this patch, the customization phase of the update may take more than 10 minutes. During that time the system will not appear to make forward progress, but it will actually be installing the objects.