Patch Name: PHKL_23196 Patch Description: s700_800 11.11 Fix for locking problem in I/O (GIO) Creation Date: 01/02/01 Post Date: 01/05/01 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_23196: PANIC The panic happened in certain error path, and it is hard to reproduce. Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHKL_23196 Symptoms: PHKL_23196: ( SR:8606171253 CR:JAGad40517 ) While running the TPC-C benchmark, a disk drive on the system failed. Within seconds, the system paniced. The stack was as following: panic+0x6c report_trap_or_int_and_panic+0x94 interrupt+0x208 $ihndlr_rtn+0x0 lock_write+0x78 mod_rw_wrlock+0x10 io_dev_to_node+0xe4 lv_dev_to_hwpathstr+0x18 lv_diag_log+0x84 lv_io_error_processing+0x174 lv_end+0x3d8 biodone+0x100 scsi_cbfn+0x414 fcparray_scsi_comp+0x1c8 td_io_done+0x9c td_cdb_cbfn_start+0xb0 td_isr+0x3ac sapic_interrupt+0x2c mp_ext_interrupt+0x354 ivti_patch_to_nop3+0x0 idle+0x1c0 swidle_exit+0x0 Defect Description: PHKL_23196: ( SR:8606171253 CR:JAGad40517 ) The problem is that LVM calls io_dev_to_node() on the interrupt stack, and io_dev_to_node() tries to acquire a read-write lock (MOD_RW_WRLOCK) to protect the device switch table. It is not allowed to acquire this lock on the interrupt stack (because it might sleep), so the kernel panics. Resolution: When the code wants to acquire the lock, it first checks to see whether it is running on the interrupt stack or not. If it is, it does not acquire the lock. The device switch table is still protected through some higher level checks. The change was made only to those functions which acquires the lock and also could be on ICS. SR: 8606171253 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libio.a(gio_kdev.o) /usr/conf/lib/libio.a(gio_search.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libio.a(gio_kdev.o) /usr/conf/lib/libio.a(gio_search.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libio.a(gio_kdev.o): gio_kdev.c $Date: 2000/12/11 16:38:12 $Revision: r11 .11/1 PATCH_11.11 (PHKL_23196) /usr/conf/lib/libio.a(gio_search.o): gio_search.c $Date: 2000/12/11 16:38:12 $Revision: r 11.11/1 PATCH_11.11 (PHKL_23196) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libio.a(gio_kdev.o): gio_kdev.c $Date: 2000/12/11 16:38:12 $Revision: r11 .11/1 PATCH_11.11 (PHKL_23196) /usr/conf/lib/libio.a(gio_search.o): gio_search.c $Date: 2000/12/11 16:38:12 $Revision: r 11.11/1 PATCH_11.11 (PHKL_23196) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 978076760 15896 /usr/conf/lib/libio.a(gio_kdev.o) 362247534 16344 /usr/conf/lib/libio.a(gio_search.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 1225943936 41976 /usr/conf/lib/libio.a(gio_kdev.o) 2313181052 34792 /usr/conf/lib/libio.a(gio_search.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: None Patch Package Size: 130 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_23196 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_23196.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_23196. 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_23196.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_23196.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_23196.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_23196.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None