Etrack Incidents: 1152869, 1160745, 1182573, 1206110, 1206129, 1206965, 1208958, 1213574, 1226259, 1230337, 1230807, 1233598, 1244759, 1255524, 1255539, 1255589, 1266103, 1270110, 1270117, 1270120, 1270127, 1270132, 1275640 Errors/Problems Fixed: (1152869) Updated vx_iupdat_msg() so that on a VX_ENOTOWNER error, vx_iupdat_msg() drops and reacquires the ILOCK to avoid a live lock condition. (1160745) Corrected vx_open to check for a force unmounted inode instead of check the fse_funmounted flag. Also, the force unmount flag is now passed to vx_iunmount(). (1182573) Limited the inode so that the inode has at most VX_NTYP4 entries if the entent type is VX_TYPE_DATA_4 or VX_TYPE_ZFOD_4. Otherwise, the inode is limited to have at most VX_NTYP8 entries. (1206110) Fixed a panic issue by no longer taking a blocking lock on non-multi-AU extents that are aligned with the AU boundary. (1206129) Changed vx_extprevfind to avoid whole AU allocations on a CFS secondary. Changed vx_cfs_smalltrunc to no longer try to guess about larger files. If a file can have a whole AU allocation, the file is now treated as a large truncation no matter how much space is being removed from the file. Even removing one block can break up a whole AU allocation. (1206965) Prevented a panic that occurred after running ls -@ on a directory containing an empty nattr directory that was followed by a Storage Checkpoint mount. (1208958) Fixed an incorrect calculation in the vxdump main() function that prevented the support of records of more that 2 GB with the -B option. (1213574) VxFS now scans the iau delegations once a minute, and returns any delegation that is more than 3 minutes old. (1226259) In replay_setup(), dv_estatcount and dv_estatlist are now reset to avoid using stale values from a previous run. (1230337) Fixed a performance problem with rename in a large directory on the Solaris operating environment. (1230807) For ACL, updated vx_populate_opts() to set the inheritance permission mask, i_modemask, to -1. (1233598) Fixed a defect that sometimes caused iterations for inodes with VX_TYPE_IADDR_4 descriptors to skip the 5th and 6th extents. (1244759) Updated vx_dnlc_lookup() to ensure that when moving the DNLC entry to the tail, the entry is either not free or is on the freelist. This avoids a race condition with vx_dnlc_get and vx_dnlc_enter. Also, updated vx_dnlc_purge_ip to use a freelist pointer from the vx_dnlc_freelist array, instead of he pointer derived from the hash value of an entry. (1255524) Updated vx_statvfs_pri() to exclude inodes residing in ILOST holes, and to sum up free inodes from IAU summaries for CFS. (1255539) Updated various functions for better management and reservation of transaction space. Also, fixed the preamble error recovery process to avoid an infinite loop. (1255589) In vx_write(), extended the check for i_size changing that occurs while the glock is dropped to get the rwlock range. This prevents a race condition between truncating and writing, which sometimes allowed multiple threads to extend the file at the same time. (1266103) Changed the typecasting from vx_u32_t to vx_u64_t of the current byte usage in the quota to avoid overflowing and wrapping of the values. 6668585 (1270110) Race condition in vx_page_alloc can lead to deadlock. 6499947 (1270117) Remove caching of 256 entries at once in vxquot. (1270120) Updated vx_glock_putdata() to keep holding ILOCK during piggy pbdata upload. Updated vx_populate_attrdata() to serialize on the same inode. (1270127) The cbuf freer formerly ran every 10 seconds, and freed all cbufs. Now, the freer runs once per second, and frees 1/8 of the LRU freelist. Also, if the freer finds a busy buffer, the freer now skips the buffer rather than aborting. The goal here is to prevent huge amounts of memory going into cbufs. (1270132) Padded the vx_iostat structure to a 64-bit boundary. (1275640) Updated vx_freesp_clear() to avoid the need to perform delayed extended write flushing when using fcntl to truncate file. Install/Uninstall Instructions: VRTSvxfs 5.0MP1 patch must be installed first before applying this patch. For the Solaris 8, 9, 10 release, refer to the online manual pages for instructions on using 'patchadd' and 'patchrm' scripts provided with Solaris. Any other special or non-generic installation instructions should be described below as special instructions. The following example installs a patch to a standalone machine: example# patchadd /var/spool/patch/110434-07 The following example removes a patch from a standalone system: example# patchrm 104945-02 For additional examples please see the appropriate manual pages. Special Install Instructions: ----------------------------- Sun introduced a page ordering vnode optimization in Solaris 9 and 10. The optimization includes a new vnode flag, VMODSORT, which when turned on indicates that the Virtual Memory (VM) should maintain the v_pages list in an order depending on if a page is modified or unmodified. Veritas File System (VxFS) can now take advantage of that flag, which can result in significant performance improvements on operations that depend on flushing, such as fsync. This optimization requires the fixes for Sun BugID's 6393251 and 6538758 which are included in the Solaris kernel patch listed below. Enabling VxFS VMODSORT functionality without the correct OS kernel patches can result in data corruption. Required operating system patches: (Solaris 9 SPARC) 122300-11 (or greater) dependent patches: 112233-12 117171-17 118558-39 (Solaris 10 SPARC) 127111-01 (or greater) dependent patches: 120011-14 (or greater) To enable VxFS VMODSORT functionality, the following linemust be added to the /etc/system file after the vxfs forceload: set vxfs:vx_vmodsort=1 * enable vxfs vmodsort To disable VxFS VMODSORT functionality, the following line must be added to the /etc/system file after the vxfs forceload: set vxfs:vx_vmodsort=0 * disable vxfs vmodsort You need to use the shutdown command to reboot the system after patch installation or de-installation: shutdown -g0 -y -i6