Patch Name: PHKL_8292 Patch Description: s700 10.10 cumulative file system and VM patch Creation Date: 96/08/14 Post Date: 96/08/20 Repost: 96/09/02 This patch was reposted to improve textual documentation. Hardware Platforms - OS Releases: s700: 10.10 Products: N/A Filesets: OS-Core.CORE-KRN ProgSupport.C-INC Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHKL_8292: HANG PHKL_8201: HANG PHKL_7458: PANIC PHKL_7167: ABORT PHKL_6748: HANG PHKL_6484: PANIC CORRUPTION Path Name: /hp-ux_patches/s700/10.X/PHKL_8292 Symptoms: PHKL_8292: When multiple nfsd's access the same file simultaneously, they hang in a deadlock. PHKL_8201: MP system hangs during panic. The LED shows system staying at INIT CB0B. Machine needs to be TOC'ed to save the core dump. PHKL_7668: Several types of symptoms may occur: - logins on NFS clients may receive incorrect access on NFS servers - files from NFS servers may appear to be owned by the wrong logins on NFS clients - setuid and setgid binaries available on NFS servers may allow client logins to run with incorrect access PHKL_7458: "panic trap type 18" problem on HP-UX 10.X NFS file server with short file name file system. PHKL_7334: panic during power failure recovery on non-UPS systems PHKL_7167: program with itimer gets SIGILL when debugger uses ptrace PT_SINGLE PHKL_7124: For very large /etc/passwd files, passwd command may return EDEADLK and print an error message about lockf deadlock detection. PHKL_6748: Rename deadlock: This deadlock occurs in the following situation: Process 1 is moving a directory to a new parent directory at the same time as Process 2 is doing a lookup on the new parent directory Process 1's directory is being moved into. Both processes will sleep forever and all accesses to both directories will also sleep. PHKL_6653: None. This is a pstat enhancement. PHKL_6484: itrunc: no space panic when truncating a file with a hole in it on a full file system. If the truncation makes the new end of the file fall into the middle of the hole, a disk block must be allocated for the end of the file, and if one can't be allocated, itrunc() would panic. This fix has itrunc gracefully backout instead. Possibility of random file system corruption or data loss when removing ACLs or files with ACLs has also been fixed. Defect Description: PHKL_8292: ufs_bread(), called by nfs server routines, prematurely unlocks the inode while the caller still owns the buffer. This opens a window for another process to grab the inode lock. Deadlock occurs when the process owning the buffer tries to access the inode again and the process holding the inode waits for the buffer to be available before it can release the inode lock. The fix is to delay the inode unlocking in ufs_bread() until the inode is no longer needed. PHKL_8201: In 10.X, interrupt distribution is implemented to allow reassignment of interrupt processors to I/O interfaces for workload balancing. The assigned interrupt processor for an I/O interface may or may not be the system monarch depending on the the number of I/O cards and processors available. During a panic, if the panic processor is the system monarch, it will flush the buffer cache on its way down. If the interrupt of the disk it is syncing is serviced by one of the other processor(s), the I/O completion interrupt will not be received and the ISR will not be called because the other processor(s) are TOC'ed at this point. Without the ISR to signal biodone(), the biowait() sleeps forever. The fix is to add a timeout in the panic_boot path to break out from the hang in disk sync'ing and continue with the reboot. PHKL_7668: A future HP-UX release will increase the value of MAXUID, providing for a greater range of valid UIDs and GIDs. It will also introduce problems in mixed-mode NFS environments. Let "LUID" specify a machine running a version of HP-UX with large-UID capability. Let "SUID" specify a machine with current small-UID capability. The following problems may occur: LUID client, SUID server - Client logins with UIDs outside the server's range appear as the anonymous user. However, the anonymous user UID is configurable, and is sometimes configured as the root user (in order to "trust" all client root logins without large-scale modifications to the /etc/exports file). Thus, all logins with large UIDs on the client could be mapped to root on the server. - Files owned by the nobody user on the server will appear to be owned by the wrong user on the client. SUID client, LUID server - Files owned by large-UID logins on the server will appear to be owned by the wrong user on the client. - Executables with the setuid or setgid mode turned on will allow logins on the client to run as the wrong users. PHKL_7458: K200 HP-UX10.01 is the NFS file server. "/db1" is exported. exportfs /db1 -anon=65534,root=g40 /db2 -anon=65534,root=g40 /home -anon=65534,root=g40 /usr/itl.obj -anon=65534,root=g40 These are HFS file systems. g40 HP-UX9.04 is the client. The customer executed NFS mount command on g40. 1- mount k200:/db1/itloper /users/itloper/itl 2- mount k200:/db1/itloper/itc /users/itloper/itc The system rebooted at step 2 by trap type 18. PHKL_7334: page reference traps were not correctly set on I/O pages. PHKL_7167: See defect PHKL_7124: PHKL_6763 caused the kernel routine direnter() to return EDEADLK if it couldn't lock all the directories and files it needed to. The change was made to fix a deadlock problem caused by moving directories, and it was thought that direnter() could only hit this state for the DE_RENAME function. The problem can also be hit for large, popular files like /etc/passwd which are being linked to a new name. The fix is to have ufs_link() retry direnter() if EDEADLK is returned, just as ufs_rename() did in the original patch. PHKL_6748: Directory renaming code locks the new parent directory and reads the new parent directory buffer, thereby locking it. It then drops the new parent directory lock and later tries to reacquire it. If a lookup process has gotten the new parent directory lock in the meantime and is sleeping waiting for the new parent directory buffer to be free, deadlock! PHKL_6653: No defect with the kernel. Although this patch does allow a patch to fix a defect with fuser -k to work. PHKL_6484: If truncating a file with a hole in the middle of it causes the new end of file to fall in the middle of a hole, a new disk block must be allocated to hold the end of file. If the file system is full and a block can't be allocated, itrunc was panicing. There is a remote possibility that removing an Access Control List could cause file system data loss or corruption. This defect was found during a code inspection, and has never (to our knowledge) been seen by any customer. SR: 1653144071 1653153247 4701311381 4701311415 4701312934 4701314179 4701314302 4701319541 5003281469 5003309385 5003314252 5003330910 Patch Files: /usr/conf/h/pstat.h /usr/conf/lib/libhp-ux.a(asm_excp.o) /usr/conf/lib/libhp-ux.a(asm_tlb.o) /usr/conf/lib/libhp-ux.a(asm_tlb2_0.o) /usr/conf/lib/libhp-ux.a(dmem.o) /usr/conf/lib/libhp-ux.a(fmpyfadd.o) /usr/conf/lib/libhp-ux.a(fpudispatch.o) /usr/conf/lib/libhp-ux.a(hdl_trans.o) /usr/conf/lib/libhp-ux.a(kern_exec.o) /usr/conf/lib/libhp-ux.a(kern_fork.o) /usr/conf/lib/libhp-ux.a(lpmc.o) /usr/conf/lib/libhp-ux.a(machdep.o) /usr/conf/lib/libhp-ux.a(proc_iface.o) /usr/conf/lib/libhp-ux.a(pstat.o) /usr/conf/lib/libhp-ux.a(snakes_rs232.o) /usr/conf/lib/libhp-ux.a(subr_prf.o) /usr/conf/lib/libhp-ux.a(sys_ki.o) /usr/conf/lib/libhp-ux.a(trap.o) /usr/conf/lib/libhp-ux.a(vm_devswap.o) /usr/conf/lib/libhp-ux.a(vm_machdep.o) /usr/conf/lib/libhp-ux.a(vm_pdir1_1.o) /usr/conf/lib/libhp-ux.a(vm_pdir2_0.o) /usr/conf/lib/libhp-ux.a(vm_remap.o) /usr/conf/lib/libufs.a(ufs_dir.o) /usr/conf/lib/libufs.a(ufs_inode.o) /usr/conf/lib/libufs.a(ufs_vnops.o) /usr/include/sys/pstat.h what(1) Output: /usr/conf/h/pstat.h: pstat.h $Date: 96/01/18 13:52:54 $ $Revision: 1.9.89 .13 $ PATCH_10.10 (PHKL_6653) /usr/conf/lib/libhp-ux.a(asm_excp.o): asm_excp.s $Date: 96/02/29 17:42:54 $ $Revision: 1.2 1.89.7 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(asm_tlb.o): asm_tlb.s $Date: 96/04/19 10:15:17 $ $Revision: 1.5.89.7 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(asm_tlb2_0.o): asm_tlb2_0.s $Date: 96/04/19 10:15:22 $ $Revision: 1.2.90.6 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(dmem.o): dmem.c $Date: 96/02/29 17:49:24 $ $Revision: 1.50.8 9.14 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(fmpyfadd.o): fmpyfadd.c $Date: 96/02/29 17:58:11 $ $Revision: 1. 2.89.5 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(fpudispatch.o): fpudispatch.c $Date: 96/02/29 17:49:31 $ $Revision: 1.4.89.8 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(hdl_trans.o): hdl_trans.c $Date: 96/02/29 17:49:20 $ $Revision: 1 .10.89.13 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(kern_exec.o): kern_exec.c $Date: 96/06/07 10:27:39 $ $Revision: 1 .89.89.35 $ PATCH_10.10 (PHKL_7668) /usr/conf/lib/libhp-ux.a(kern_fork.o): kern_fork.c $Date: 96/04/19 10:19:21 $ $Revision: 1.67.89.45 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(lpmc.o): lpmc.c $Date: 96/02/29 17:49:26 $ $Revision: 1.4.89 .7 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(machdep.o): machdep.c $Date: 96/08/07 10:29:00 $ $Revision: 1. 120.89.16 $ PATCH_10.10 (PHKL_8201) /usr/conf/lib/libhp-ux.a(proc_iface.o): proc_iface.c $Date: 96/04/19 10:19:12 $ $Revision: 1.2.89.15 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(pstat.o): pstat.c $Date: 96/01/18 15:14:21 $ $Revision: 1.14 .89.31 $ PATCH_10.10 (PHKL_6653) /usr/conf/lib/libhp-ux.a(snakes_rs232.o): snakes_rs232.c $Date: 96/04/19 10:16:51 $ $Revision: 1.5.89.3 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(subr_prf.o): subr_prf.c $Date: 96/01/18 15:13:13 $ $Revision: 1 .63.89.11 $ PATCH_10.10 (PHKL_6653) /usr/conf/lib/libhp-ux.a(sys_ki.o): sys_ki.c $Date: 96/01/18 15:12:04 $ $Revision: 1.1 5.89.25 $ PATCH_10.10 (PHKL_6653) /usr/conf/lib/libhp-ux.a(trap.o): trap.c $Date: 96/04/19 10:12:44 $ $Revision: 1.165.89.33 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(vm_devswap.o): vm_devswap.c $Date: 96/02/29 17:53:41 $ $Revision: 1.15.89.21 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(vm_machdep.o): vm_machdep.c $Date: 96/02/29 17:49:32 $ $Revision: 1.152.89.37 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(vm_pdir1_1.o): vm_pdir1_1.c $Date: 96/04/19 10:15:13 $ $Revision: 1.2.90.12 $ PATCH_10.10 (PHKL_7334) /usr/conf/lib/libhp-ux.a(vm_pdir2_0.o): vm_pdir2_0.c $Date: 96/02/29 17:49:36 $ $Revision: 1.2.90.10 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libhp-ux.a(vm_remap.o): vm_remap.c $Date: 96/02/29 17:53:43 $ $Revision: 1. 6.89.10 $ PATCH_10.10 (PHKL_6801) /usr/conf/lib/libufs.a(ufs_dir.o): ufs_dir.c $Date: 96/06/07 11:25:31 $ $Revision: 1.17.89.15 $ PATCH_10.10 (PHKL_7668) /usr/conf/lib/libufs.a(ufs_inode.o): ufs_inode.c $Date: 96/01/10 13:40:27 $ $Revision: 1.42.89.15 $ PATCH_10.10 (PHKL_6484) /usr/conf/lib/libufs.a(ufs_vnops.o): ufs_vnops.c $Date: 96/08/14 17:02:08 $ $Revision: 1.24.89.25 $ PATCH_10.10 (PHKL_8292) /usr/include/sys/pstat.h: pstat.h $Date: 96/01/18 13:52:54 $ $Revision: 1.9.89 .13 $ PATCH_10.10 (PHKL_6653) cksum(1) Output: 351025292 35051 /usr/conf/h/pstat.h 3931996340 3108 /usr/conf/lib/libhp-ux.a(asm_excp.o) 1169006284 41224 /usr/conf/lib/libhp-ux.a(asm_tlb.o) 2534453469 14452 /usr/conf/lib/libhp-ux.a(asm_tlb2_0.o) 2366865159 8908 /usr/conf/lib/libhp-ux.a(dmem.o) 986054333 17224 /usr/conf/lib/libhp-ux.a(fmpyfadd.o) 3159161935 10932 /usr/conf/lib/libhp-ux.a(fpudispatch.o) 3260695634 8880 /usr/conf/lib/libhp-ux.a(hdl_trans.o) 1916941691 15072 /usr/conf/lib/libhp-ux.a(kern_exec.o) 613436261 14236 /usr/conf/lib/libhp-ux.a(kern_fork.o) 3103322954 6824 /usr/conf/lib/libhp-ux.a(lpmc.o) 2666974195 30032 /usr/conf/lib/libhp-ux.a(machdep.o) 1374434585 12912 /usr/conf/lib/libhp-ux.a(proc_iface.o) 282979907 23004 /usr/conf/lib/libhp-ux.a(pstat.o) 3705526801 5964 /usr/conf/lib/libhp-ux.a(snakes_rs232.o) 451603670 16448 /usr/conf/lib/libhp-ux.a(subr_prf.o) 2803764241 59692 /usr/conf/lib/libhp-ux.a(sys_ki.o) 403410752 21680 /usr/conf/lib/libhp-ux.a(trap.o) 2090489607 15296 /usr/conf/lib/libhp-ux.a(vm_devswap.o) 128897327 88344 /usr/conf/lib/libhp-ux.a(vm_machdep.o) 874224294 39144 /usr/conf/lib/libhp-ux.a(vm_pdir1_1.o) 2738926588 29600 /usr/conf/lib/libhp-ux.a(vm_pdir2_0.o) 4138546304 8704 /usr/conf/lib/libhp-ux.a(vm_remap.o) 4148591805 19668 /usr/conf/lib/libufs.a(ufs_dir.o) 3942758326 25636 /usr/conf/lib/libufs.a(ufs_inode.o) 640680162 30648 /usr/conf/lib/libufs.a(ufs_vnops.o) 351025292 35051 /usr/include/sys/pstat.h Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_6484 PHKL_6653 PHKL_6748 PHKL_6801 PHKL_7124 PHKL_7167 PHKL_7334 PHKL_7458 PHKL_7668 PHKL_8201 Equivalent Patches: PHKL_8293: s800: 10.10 PHKL_8294: s700: 10.20 PHKL_8295: 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_8292 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_8292.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_8292.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_8292. 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_8292.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_8292.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.