Patch Name: PHKL_4795 Patch Description: s700 9.01 autochanger patch Wrong version of ufs_vfsops was supplied with patch PHKL_4711 that caused "Stale NFS file handle" errors. The patch PHKL_4711 included the wrong version of the ufs_vfsops file. This patch includes autoch.o ufs_pmount.o and ufs_vfsops.o. It is functionally equivalent to 4711 (but works this time). PHKL_4711: Incorporate S800 autochanger fixes to the S700 Fixes the cylinder summary information. Rolled S800 autoch.c rev 1.13.73.9 fixes to the S700 also S800 ufs_pmount.c rev 1.6.73.4 PHKL_1749: Autochanger Data Segmentation Fault. Symptoms: Data Segmentation Fault panic while unmounting a autochanger surface. Defect Description: During the process of unmounting a autochanger surface, the mount table entry for the surface is free'd before the autoch unmount routine is called. Fix: The autoch unmount routine is called before the mount table entry for the surface is free'd. Symptoms: Data Segmentation Fault panic while unmounting a autochanger surface. The autochanger driver on HP-UX has a unique feature which will make the file systems on the cartridges appear as if they were unmounted if the system goes down. This is accomplished by a method executed each time the cartridge is removed from the drive. The file system is told to lock out any new requests from arriving, let the ones currently executing finish, and tell the autochanger driver when this is complete. Because of the complex interactions with the in-core data structures, the buffer cache, other file systems, etc., on rare occasions the file system may deadlock. The autochanger driver has a mechanism to which it can detect file system deadlocking during swapping of the cartridges and recover from the condition. The deadlock detection method is a timer that is set to go off after 20 seconds without the file system sending requests to the drive. The way this timer is implemented is by starting a timeout() when the flush sequence is started. For each driver request the timer is shut off and restarted. This way the timer will only go off after 20 seconds of inactivity. (NOTE: Depending upon the load of the system, the amount of buffer cache, the amount of file system activity, etc. it can sometimes take more than 20 seconds of write operations to flush out all the dirty buffers by the file system.) Once the file system is finished dumping its buffers, the timer is stopped, the file system is marked clean and then the superblock is written to the media. At this point the driver removes the cartridge from the drive. The file system now on the cartridge will not have to be fsck'ed if the system goes down because it has already been "unmounted". There is one caveat to the above process. When the file system has stopped accepting new requests (these requests sleep), not every request is blocked. Requests which can be processed which will not corrupt the file system structures are allowed to pass. Things such as chmod() which only have to update one sector. The problem we are seeing is initiated by one of these requests that is sent just after the deadlock timer is turned off. This is when the file system thinks it is finished flushing the buffers. When this request comes through at just the right time, it thinks it needs to restart the deadlock timer which it does. Meanwhile, the file system is trying to finish up its work by calling a function to write the superblock. This calls the scsi driver directly and waits for the write to complete. The time that the file system has to wait is the key to this defect. Normally, once the superblock is written, the autochanger driver makes sure there were no timeouts started by any of these extraneous requests. The problem is that the file system has to wait more than 20 seconds for the superblock to be written out to the disk due to a sleep in the s2disk_strategy routine. This unusual situation allows the deadlock timer that was running to now go off. The autochanger driver thinks the file system is deadlocked and initiates its deadlock recovery sequence. During this sequence the drive is closed in preparation of removing the cartridge from the drive. When this is completed the request to update the superblock is restarted but the driver is in the middle of closing the drive. The driver will not allow requests sent to a closed drive and the system panics. Fix: A new flags was added to keep track of the deadlock timer. In process_op, the timer is turned only if the timer was previously turned off in process_op. spl's were added around 6 wakeup/sleep pairs. Path Name: /hp-ux_patches/s700/9.X/PHKL_4795 Effective Date: 940923 OS Release: 9.01 Reboot Required: Yes Patch Files: /system/PHKL_4795/new/acdl.h /system/PHKL_4795/new/autoch.o /system/PHKL_4795/new/ufs_pmount.o /system/PHKL_4795/new/ufs_vfsops.o SR#: 1653099481 "what" string/timestamp: autoch.o: autoch.c $Revision: 1.13.81.5 $ $Date: 94/09/23 15:03:57 $ PATCH_9.01 (PHKL_4795) ufs_pmount.o: ufs_pmount.o $Revision: 1.6.81.5 $ $Date: 94/09/23 15:01:57 $ PATCH_9.01 PHKL_4795 ufs_vfsops.o: PATCH_9.01: ufs_vfsops.o $Revision: 1.14.81.4 $ $Date: 94/09/23 16:17:50 $ PHKL_4795 "sum" output: 21980 1 acdl.h 58642 157 autoch.o 62398 8 ufs_pmount.o 59661 21 ufs_vfsops.o Dependencies: None Supersedes: PHKL_1749 PHKL_4711 Patch Package Size: 164 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. Note: Please back up your system before you patch. --------------------------------------------------------------------------- After getting the patch onto your machine, unshar the patch (sh PHKL_4795). To install this patch do the following: 1) Run /etc/update (Note: you must be logged in as root to update a system). 2) Once in the update "Main Menu" move the highlighted line to "Change Source or Destination ->" and press "Return" or "Select Item". 3) Make sure the highlighted item in the "Change Source or Destination" window is "From Tape Device to Local System ...", then press "Return" or "Select Item". 4) You should now be in the "From Tape Device to Local System" window. Change the "Source: /dev/rmt/0m" to "Source: /tmp/PHKL_4795.updt" (this assumes that you are in the /tmp directory where PHKL_4795.updt has been placed). Note: You must enter the complete path name. 5) Press "Done". 6) From here on follow the standard directions for update. The customized script that update runs will move the original software to /system/PHKL_4795/orig. HP recommends keeping this software there in order to recover from any potential problems. It is also recommended that you move the PHKL_4795.text file to /system/PHKL_4795 to be retained for future reference. If you wish to put this patch on a magnetic tape and update from the tape drive, dd a copy of the patch to the tape drive. As an example the following will create a copy of the patch that update can read: dd if=PHKL_4795.updt of=/dev/rmt/0m bs=2048