diff options
author | briggs <briggs@cvs.openbsd.org> | 1996-01-14 21:44:31 +0000 |
---|---|---|
committer | briggs <briggs@cvs.openbsd.org> | 1996-01-14 21:44:31 +0000 |
commit | 431724c0fbbfa636c72a978587ddc06d8ee3b114 (patch) | |
tree | 8d59958cac3ed495eefb18e2de35a93e99160db6 /sys/dev/pcmcia/pcmcia.c | |
parent | 0fb02d5a856594b81d3674e5f3647302ff3689e5 (diff) |
From NetBSD: (required for last change to scsi_base.c in case we get
"command aborted" status)
Handle cases like the following:
- controller calls scsi_done() with error XS_TIMEOUT
- scsi_done() calls sddone()
- sddone() calls disk_unbusy()
- scsi_done() calls controller to retry command (missing the
call to disk_busy())
- controller calls scsi_done()
- scsi_done() calls sddone()
- sddone() calls disk_busy(), which panics because of the imbalance.
Bug noticed by Leo Weppleman, who also suggested this fix; pass an additional
boolean argument ("complete") to the device's "done" routine, with a
value of `0' passed from the previous call to "done", and add an additional
call to "done" when the xfer resources are freed.
Diffstat (limited to 'sys/dev/pcmcia/pcmcia.c')
0 files changed, 0 insertions, 0 deletions