Patch Name: PHKL_20411 Patch Description: s700_800 11.00 Adv VxFS snapshot filesystem fixes Creation Date: 99/11/08 Post Date: 99/11/12 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: HP OnLineJFS (Advanced VxFS) B.11.00 Filesets: AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_20411: HANG PHKL_18532: PANIC PHKL_16206: HANG Category Tags: defect_repair general_release critical panic halts_system Path Name: /hp-ux_patches/s700_800/11.X/PHKL_20411 Symptoms: PHKL_20411: ( SR: 8606100400 DTS: JAGab31753 ) VxFS snapshot may hang. The chances of hitting this problem is remote. When this happens threads hang sleeping on busy reserved snapshot copy buffers. PHKL_18532: System using VxFS snapshot panics with a non-access data TLB miss. The stack trace looks like: panic+0x14 report_trap_or_int_and_panic+0x80 trap+0xe08 nokgdb+0x8 epic_map_dma_context+0x98 epic_map_dma_buffer+0x150 dma_setup+0x120 c720_if_start+0x178 scsi_strategy_real+0x3c4 pa_ioforw_sched+0x254 scsi_strategy+0xd4 pa_ioforw_sched+0x254 scsi_strategy+0xd4 lv_startpv+0x1a4 lv_begin+0x128 lv_schedule+0x4e0 lv_initiate+0x198 lv_strategy+0x208 vx_dev_strategy+0x170 vx_snap_bpcopy+0x260 vx_snap_copyblk+0x140 vx_snap_copy+0x50 vx_dio_chain_start+0xa4 vx_dio_iovec+0x5d0 vx_dio_rdwri+0x14c vx_dio_writei+0x8c vx_write1+0xcfc vx_rdwr+0x330 vno_rw+0xa0 write+0x104 syscall+0x5cc $syscallrtn+0x0 PHKL_16206: Vxdump hangs while backing up a JFS snapshot system, causing the system tohang eventualy. Defect Description: PHKL_20411: ( SR: 8606100400 DTS: JAGab31753 ) This is a bug in the VxFS snapshot code. For copying blocks to the snapshot device, vx_getblk() is called to return a buffer without waiting. If no buffer is returned, buffers from reserved copy buffer for the file system are used. If the reserved buffer is busy, the thread will be put to sleep on the buffer but never woken up. This is because the VX_COPYBUF_LOCK macro sets the b_wanted field of the reserved buffer while VX_COPYBUF_UNLOCK only tests the B_WANTED flag in b_flags. The two macros were not in sync. Resolution: Check buffer b_wanted also in VX_COPYBUF_UNLOCK. PHKL_18532: When multiple fragments of the buffer passed to vx_snap_bpcopy() are written (rather than the entire buffer), vx_snap_bpcopy() incorrectly calculates the offset into the buffer of the second and subsequent fragments. Copying data beyond the valid address range results non-access data TLB miss. Resolution: The fix is to use the correct buffer address and offset from that. PHKL_16206: When multiple processes read fron the same JFS snapshot file system, a deadlock situation occurred in vx_snap_read() where one process holding a snapshot bitmap buffer was waiting for a shapshot structure lock while the process owning the shapshot structure lock was sleeping for the bitmap buffer. THe fix was to release the snapshot bitmap buffer properly to avoid the deadlock. SR: 4701368415 4701425090 8606100400 Patch Files: AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libvxfs_adv.a(vx_snap.o) AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libvxfs_adv.a(vx_snap.o) what(1) Output: AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32, v=HP: /usr/conf/lib/libvxfs_adv.a(vx_snap.o): vx_snap.c $Date: 1999/11/08 10:16:56 $Revision: r11r os/5 PATCH_11.00 (PHKL_20411) AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: /usr/conf/lib/libvxfs_adv.a(vx_snap.o): vx_snap.c $Date: 1999/11/08 10:16:56 $Revision: r11r os/5 PATCH_11.00 (PHKL_20411) cksum(1) Output: AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32, v=HP: 3621142625 13432 /usr/conf/lib/libvxfs_adv.a(vx_snap.o) AdvJournalFS.VXFS-ADV-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64, v=HP: 359592478 27760 /usr/conf/lib/libvxfs_adv.a(vx_snap.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_18532 PHKL_16206 Equivalent Patches: PHKL_20357: s700: 10.20 PHKL_20358: s800: 10.20 Patch Package Size: 70 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_20411 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_20411.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_20411. If you do not wish to retain a copy of the original software, use the patch_save_files option: swinstall -x autoreboot=true -x patch_match_target=true \ -x patch_save_files=false -s /tmp/PHKL_20411.depot WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_20411.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_20411.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_20411.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None