Patch Name: PHKL_27380 Patch Description: s700 10.26 VxFS (JFS) mount,fsck cumulative patch Creation Date: 02/08/14 Post Date: 02/09/11 Hardware Platforms - OS Releases: s700: 10.26 Products: N/A Filesets: JournalFS.VXFS-BASE-KRN Automatic Reboot?: Yes Status: General Superseded Critical: Yes PHKL_27380: HANG PHKL_18987: CORRUPTION PANIC HANG Path Name: /hp-ux_patches/s700/10.X/PHKL_27380 Symptoms: PHKL_27380: 1. mount command with options like 'snapof', 'remount' fails with error EBUSY. 2. Incorrect behavior of sticky bit on directories in VxFS. 3. Port of the 10.20 patch PHKL_26980 to TOS. (PHKL_26980:) (SR: 8606214705 CR: JAGad83897) Deadlock of processes waiting for vxfs inodes. There is a situation in vx_real_iget where such a deadlock can occur with process 1 waiting for inode A (while holding inode B locked) while process 2 is holding inode A and waiting for inode B. One symptom to look for is hung process sleeping in vx_real_iget(). The stack trace may look similar to _swtch+0x138 real_sleep+0x234 vx_sleep_lock+0xa8 vx_ilock+0x14 vx_real_iget+0x184 vx_iget+0x3c ...... (PHKL_21594:) (SR: 8606135341 CR: JAGad04475) Inactive inodes are not getting cleared after 110 days. (SR: 8606104878 CR: JAGab72639) System performance is unacceptable (slows down) due to ibmaplock contention even when inode is in memory. PHKL_20711: Port of the 10.20 patch PHKL_19539 to TOS. (PHKL_19539) ( SR: 1653302711 DTS: JAGab15428 ) A VxFS file system cannot be mounted if it has more than 8 million inodes. PHKL_18987: Ported 10.20 patch PHKL_18197 to TOS. (PHKL_18197) On vxfs filesystems where a particular type of inode corruption occurs, all future mounts of that filesystem fail. In the message buf will be the message: vx_iget - [fs name] file system invalid inode number [#] This message will possibly be repeated many times. Future attempts to mount this file system will fail with either: vxfs mount: [device] is not a vxfs file system or vxfs mount: [device] is corrupted. needs checking At that point, if an fsck is performed the file system can be mounted, but further use of the file system may cause the vx_iget message to occur again, and the file system to again be unmountable. (PHKL_17716) SR: 4701411298 DTS: JAGaa45918 A panic may occur in vx_spinlock() when trying to mount a corrupt VxFS file system. This patch provides a fix so that a failure is reported in this case, but a panic will not occur. (PHKL_12339) Mounting a VxFS Version 2 filesystem containing a large amount of files (in excess of 800,000) can take several minutes to complete. During the time it takes to mount the filesystem the system appears to be hung. This patch provides improved kernel routines which eliminate this performance problem. (PHKL_12007) fsck on vxfs (version 3) filesystem fails with the following error: # fsck -o full -y /dev/vg01/lvol3 pass0 - checking structural files pass1 - checking inode sanity and blocks pass2 - checking directory linkage pass3 - checking reference counts pass4 - checking resource maps small extent in iau inode This occured after a normal shutdown. The filesystem is unusable and must be newfs'd. This patch provides the kernel half of a solution for an fsck defect. The commands patch PHCO_17671 must also be applied to install the full solution. Without the command patch PHCO_17671 installed, this patch will have no impact. Defect Description: PHKL_27380: 1. mount command with options like 'snapof', 'remount' fails with error EBUSY. Resolution: Code has been modified to set the appropriate flag to take care of the problem. 2. Sticky bit on directories does not behave as documented. 3. Port of the 10.20 patch PHKL_26980 to TOS. (PHKL_26980:) (SR: 8606214705 CR: JAGad83897) In vx_real_iget() an inode is kept locked, while waiting to lock another inode. The inode which is kept locked is not needed and is unlocked when the other inode has been acquired. Another process trying for these inodes in reverse order will cause the deadlock. Resolution: The inode which is not needed is released before trying for another inode. (PHKL_21594:) (SR: 8606135341 CR: JAGad04475) Prior to 110 days inactive inodes are removed early from the inode cache. After 110 days inactive inodes are never removed from the inode cache. The JFS inode cache or inode table is dynamic it keeps expanding and contracting, but after the system is up for over 110 days the cache does not reduce in size, it grows to the max and stays the same after that. Customer monitored the inode size using: # sar -v 1 1 16:29:09 text-sz ov proc-sz ov inod-sz ov file-sz ov 16:29:10 N/A N/A 272/1620 0 3500/3500 0 1137/6010 0 Resolution: The variable (i_ftime) which is assigned the time inode is put on free list is incorrectly set to lbolt, it should be set to vx_lbolt (system time) in the function vx_inactive() which inactivates an inode. (SR: 8606104878 CR: JAGab72639) The vx_iget() function grabs ibmaplocks exclusively every time it is called, even when the inode is in memory. This is slowing down the system. Resolution: Changes vx_iget() function to obtain ibmaplock, only if inode is not in memory. PHKL_20711: Port of the 10.20 patch PHKL_19539 to TOS. (PHKL_19539) ( SR: 1653302711 DTS: JAGab15428 ) To reproduce the problem, create a VxFS file system with more than 8 million files. The file system cannot be mounted without this patch. Resolution: The problem occurs because a 32 bit integer overflows when the number of inodes reaches 8 million. The variable has been changed to a 64 bit integer. PHKL_18987: The vxfs kernel was not properly handling sparse IFILT files. This was due to fsh_ninode being incorrectly set in this case, as well as the end of the IFILT list being calculated incorrectly. Resolution: vx_fsetialloc() was updated to properly update fsh_ninode in the case of a sparse IFILT file. vx_olt_ilistadd() was updated to properly find the end of the IFILT list in this case. This prevents a corrupt filesystem from getting worse, and will not fix the inital cause of the corruption. SR: 1653297531 1653302711 4701361758 4701411298 5003383307 8606214705 8606135341 8606104878 Patch Files: /usr/conf/lib/libvxfs_base.a(vx_inode.o) /usr/conf/lib/libvxfs_base.a(vx_fsetsubr.o) /usr/conf/lib/libvxfs_base.a(vx_oltmount.o) /usr/conf/lib/libvxfs_base.a(vx_vnops.o) /usr/conf/lib/libvxfs_base.a(vx_secmisc.o) what(1) Output: /usr/conf/lib/libvxfs_base.a(vx_inode.o): 02/07/09 kern/vxfs/vx_inode.c, hpux, hpux_10.26, ic5 gw Revision 1.8 PATCH_10.26 (PHKL_27380) /usr/conf/lib/libvxfs_base.a(vx_fsetsubr.o): 99/06/22 kern/vxfs/vx_fsetsubr.c, hpux, hpux_10.26, ic5db Revision 1.2 PATCH_10.26 (PHKL_18987) UNMODIFIED /usr/conf/lib/libvxfs_base.a(vx_oltmount.o): 00/03/24 kern/vxfs/vx_oltmount.c, hpux, hpux_10.26, ic5en Revision 1.5 PATCH_10.26 (PHKL_20711) UNMODIFIED /usr/conf/lib/libvxfs_base.a(vx_vnops.o): 02/08/13 kern/vxfs/vx_vnops.c, hpux, hpux_10.26, ic5 gw Revision 1.17 PATCH_10.26 (PHKL_27380) /usr/conf/lib/libvxfs_base.a(vx_secmisc.o): 02/08/13 kern/vxfs/vx_secmisc.c, hpux, hpux_10.26, i c5gw Revision 1.5 PATCH_10.26 (PHKL_27380) cksum(1) Output: 3873336730 47808 /usr/conf/lib/libvxfs_base.a(vx_inode.o) 1951719763 22920 /usr/conf/lib/libvxfs_base.a(vx_fsetsubr.o) 2079389993 29744 /usr/conf/lib/libvxfs_base.a(vx_oltmount.o) 743884485 30592 /usr/conf/lib/libvxfs_base.a(vx_vnops.o) 3688895836 3636 /usr/conf/lib/libvxfs_base.a(vx_secmisc.o) Patch Conflicts: None Patch Dependencies: s700: 10.26: PHKL_17282 PHCO_17671 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_18987 PHKL_20711 Equivalent Patches: PHKL_27381: s800: 10.26 Patch Package Size: 200 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_27380 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_27380.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_27380. 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_27380.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_27380.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch depends on base patch PHKL_17282. For successful installation, please ensure that PHKL_17282 is in the same depot with this patch, or PHKL_17282 is already installed. This patch provides the kernel half of a solution for an fsck defect. The commands patch PHCO_17671 must also be applied to install the full solution. Without PHCO_17671 installed, this patch will have no impact.