Skip site navigation (1)Skip section navigation (2)
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>