Patch Name: PHKL_29481 Patch Description: s700 10.26 VxFS quotas; directory sticky-bit ; VxFS inode Creation Date: 03/08/05 Post Date: 04/02/10 Hardware Platforms - OS Releases: s700: 10.26 Products: N/A Filesets: JournalFS.VXFS-BASE-KRN ProgSupport.PAUX-ENG-A-MAN Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_27380: HANG PHKL_18987: CORRUPTION PANIC HANG Path Name: /hp-ux_patches/s700/10.X/PHKL_29481 Symptoms: PHKL_29481: 1. VxFS inode creation fails on a filesystem with large number of inodes. PHKL_28403: 1. Partial port of 10.20 patch PHKL_27832 to 10.26(TOS). (PHKL_27832): (SR: 8606184446 CR: JAGad53654) 1.VxFS directory sticky-bit not functioning according to specification and man pages. (PHKL_16920): (SR: 1653264663 CR: JAGaa11143) 1.If a VxFS file system has quotas turned on, but no quota file is present,users can get open()and creat()failures with error number '61449'. 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_29481: 1. VxFS inode creation fails on a filesystem with large number of inodes. Resolution: Code has been modified to take care of this problem. PHKL_28403: 1. Partial port of 10.20 patch PHKL_27832 to 10.26(TOS). (PHKL_27832): (SR: 8606184446 CR: JAGad53654) 1.VxFS directory sticky-bit not functioning according to specification and man pages. Resolution: Make VxFS directory sticky-bit functionality conform to specification and man pages. (PHKL_16920): (SR: 1653264663 CR: JAGaa11143) 1.If a VxFS file system has quotas turned on, but no quota file is present,users can get open() and creat() failures with error number '61449'. Resolution: No default was set for quota information, so without a quota file, the user's uid and gid were undefined and invalid. 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 8606184446 1653264663 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) /usr/conf/lib/libvxfs_base.a(vx_dirop.o) /usr/share/man/man2.Z/chmod.2 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): 03/07/22 kern/vxfs/vx_fsetsubr.c, hpux, hpux_10.26, ic5id Revision 1.3 PATCH_10.26 (PHKL_29481) /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/12/10 kern/vxfs/vx_secmisc.c, hpux, hpux_10.26, i c5he Revision 1.6 PATCH_10.26 (PHKL_28403) /usr/conf/lib/libvxfs_base.a(vx_dirop.o): 02/12/10 kern/vxfs/vx_dirop.c, hpux, hpux_10.26, ic5 he Revision 1.7 PATCH_10.26 (PHKL_28403) /usr/share/man/man2.Z/chmod.2: None cksum(1) Output: 3873336730 47808 /usr/conf/lib/libvxfs_base.a(vx_inode.o) 1356468026 23256 /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) 2127550208 3580 /usr/conf/lib/libvxfs_base.a(vx_secmisc.o) 1377556106 9316 /usr/conf/lib/libvxfs_base.a(vx_dirop.o) 3153784293 5917 /usr/share/man/man2.Z/chmod.2 Patch Conflicts: None Patch Dependencies: s700: 10.26: PHKL_17282 PHCO_18868 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_28403 PHKL_27380 PHKL_18987 PHKL_20711 Equivalent Patches: PHKL_29482: s800: 10.26 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_29481 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_29481.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_29481. 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_29481.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_29481.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None