Patch Name: PHKL_6428 Patch Description: s700 10.01 NFS Kernel Megapatch Creation Date: 95/12/05 Post Date: 95/12/13 Repost: 96/07/17 A problem was discovered with superseding patch PHKL_7510. PHKL_7510 can cause system panics on multi-processor NFS clients. This patch will be rereleased until a replacement patch is available. Repost: 96/05/30 A problem was discovered with replacement patch PHKL_7142. This patch will be rereleased until a replacement patch is available. Hardware Platforms - OS Releases: s700: 10.01 Products: N/A Filesets: OS-Core.CORE-KRN Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHKL_6428: OTHER GETATTR calls to NFS-server even though valid entries are in cache causes poor performance PHKL_6132: PANIC Data Page fault in hash_export() PHKL_6000: PANIC Data Page fault in hash_export() Path Name: /hp-ux_patches/s700/10.X/PHKL_6428 Symptoms: PHKL_6428: 1. Unmounting NFS file system temporarily hangs client. 2. Performance problems due to "invalid" NFS attribute cache causing too many attribute lookups. PHKL_6132: Process panic when cr_free attempts to free unused memory (INDaa21734) PHKL_6000: 1. panic : data page fault 2. trap type 15 3. occured in the hash_export() in the panic stack (INDaa21726) PHKL_5971: In 9.X releases, the performance and semantics of O_SYNC were the same as the 10.0X O_DSYNC. Unfortunately, this was a violation of the POSIX standard, which was fixed for the 10.0X releases. The consequence of the change was to make O_SYNC more robust but also slower than in 9.0X. (INDaa21701) Defect Description: PHKL_6428: 1.The algorithm for flushing buffer caches is inefficient, forcing multiple walks of the buffer cache. Large system memory forces large buffer caches, with the result being very slow cache flushes. 2.The attribute cache contents may seem invalid if the credential pointers differ, even though the actual credentials are the same. This would indicate an invalid attribute cache entry even though it was valid, forcing a unnecessary attribute lookup. PHKL_6132: The credential structure used in the kernel's NFS request dispatcher (rfs_dispatch) was not properly allocated, and request completes and the credential structure is released with cr_free(). PHKL_6000: The hash_export() used some of the fields in a file handle for hashing, and since nfs dosen't have any protection against getting a bogus file handle a panic situation occured. One way to get this panic is to send a bogus file handle to nfsd right after it loaded during boot up time. could, in some cases, be unavailable when the request completes and the credential structure is released withcr_free(). PHKL_5971: This patch provides the 9.0X O_SYNC behavior on a 10.0X system. On a 10.0X system, this is called O_DSYNC. SR: 1653101337 5003279091 Patch Files: /usr/conf/lib/libnfs.a(nfs_export.o) /usr/conf/lib/libnfs.a(nfs_server.o) /usr/conf/lib/libnfs.a(nfs_subr.o) /usr/conf/lib/libnfs.a(nfs_vnops.o) what(1) Output: /usr/conf/lib/libnfs.a(nfs_export.o): nfs_export.c $Date: 95/11/30 15:06:33 $ $Revision: 1.1.101.5 $ PATCH_10.01 PHKL_6428 /usr/conf/lib/libnfs.a(nfs_server.o): nfs_server.c $Date: 95/12/07 13:09:03 $ $Revision: 1.1.101.8 $ PATCH_10.01 PHKL_6428 /usr/conf/lib/libnfs.a(nfs_subr.o): nfs_subr.c $Date: 95/11/30 15:30:20 $ $Revision: 1. 1.101.5 $ PATCH_10.01 PHKL_6428 /usr/conf/lib/libnfs.a(nfs_vnops.o): nfs_vnops.c $Date: 95/12/04 09:42:43 $ $Revision: 1 .1.101.5 $ PATCH_10.01 PHKL_6428 cksum(1) Output: 3366539245 9780 /usr/conf/lib/libnfs.a(nfs_export.o) 625700652 28440 /usr/conf/lib/libnfs.a(nfs_server.o) 849148094 21344 /usr/conf/lib/libnfs.a(nfs_subr.o) 3800827370 31248 /usr/conf/lib/libnfs.a(nfs_vnops.o) Patch Conflicts: None Patch Dependencies: s700: 10.01: PHKL_5836 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_5971 PHKL_6000 PHKL_6132 Equivalent Patches: PHKL_6429: s800: 10.01 Patch Package Size: 150 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_6428 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_6428.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_6428.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. The cluster clients must be shut down as described in step 5b. By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_6428. 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_6428.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_6428.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: In order to use the O_SYNC option behave the same as the O_DSYNC option in order to have asynchronous inode updates for NFS writes you NEED TO MANUALLY modify the global variable o_sync_is_o_dsync using adb as follows: echo "o_sync_is_o_dsync?W 1" | \ adb -k -w /stand/vmunix /dev/mem echo "o_sync_is_o_dsync/W 1" | \ adb -k -w /stand/vmunix /dev/mem You can do this after the system is up and running without any problems. You can also go back to the 10.0X behavior by re-executing the command lines using a 0 instead of a 1. If you rebuild or reboot the kernel, you'll have to reapply the adb patch, since the default value is 0.