Date: Wed, 6 Aug 2003 15:27:14 -0400 From: Dave Dolson <ddolson@sandvine.com> To: "'freebsd-scsi@freebsd.org'" <freebsd-scsi@freebsd.org> Subject: Swapping deadlock due to aic/scsi errors? Message-ID: <FE045D4D9F7AED4CBFF1B3B813C8533701919089@mail.sandvine.com>
next in thread | raw e-mail | index | archive | help
We have a reproducible bug characterized by the system becoming unresponsive (but db may be entered). System is based on FreeBSD 4.7 (i386) Using the aic79xx scsi driver. Common elements: pagedaemon waiting in wswbuf0 (waiting for free page from swapper?) swapper waiting in vmwait (waiting for free page from disk?) nsw_wcount_async=0 If any procs page fault, they will be waiting on swread then the following message will be seen (Once every 20s): swap_pager: indefinite wait buffer: device: #da/0x30001, blkno: 10352, size: 4096 I believe that the swapper is waiting for the scsi drive to call vunmapbuf() after asynchronously sending the page to be swapped out. The following message is sometimes seen, followed by a "dump card state": "SCB 0x1f - timed out" I would like to add some debugging to detect the lost command and possibly retry it. Can someone suggest where the lost command is supposed to be detected, and where the retry is supposed to occur. (I've been looking through the cam and ahd code, but need some direction) Thanks in advance, David Dolson (ddolson@sandvine.com, www.sandvine.com)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C8533701919089>