d16ec04f8a
sys/dev/pci/mpii.c: revision 1.30 Fixes for PR kern/57133: I can now explain why this assert is firing and have a fix for it. It is a regression introduced in R1.22 of mpii.c. If a request comes in and the IOC returns a MPII_SCSIIO_STATUS_CHECK_COND condition, after a successful transfer, or one that is a recovered error, mpii(4) correctly sets the xs->error to XS_SENSE, but incorrectly sets xs->resid to 0 before returning the xfer to the upper scsi layers. Once the upper layers get it, they notice the XS_SENSE check condition and because it's a retryable error, they increment xs_requeuecnt, set ERESTART and send the xfer request down to the mpii(4) layer again for a retry. What they do not do is reset xs->resid equal to xs->datalen. When the xfer comes down to mpii(4) again, the assert happens. The fix is for the mpii(4) driver to leave xs->resid alone when it encounters a MPII_SCSIIO_STATUS_CHECK_COND condition. This bug affects NetBSD-10, netbsd-9 and netbsd-8. |
||
---|---|---|
.. | ||
altq | ||
arch | ||
coda | ||
compat | ||
conf | ||
crypto | ||
ddb | ||
dev | ||
dist/pf | ||
external | ||
fs | ||
gdbscripts | ||
ipkdb | ||
kern | ||
lib | ||
miscfs | ||
modules | ||
net | ||
net80211 | ||
netatalk | ||
netbt | ||
netcan | ||
netinet | ||
netinet6 | ||
netipsec | ||
netisdn | ||
netkey | ||
netmpls | ||
netnatm | ||
netsmb | ||
nfs | ||
opencrypto | ||
rump | ||
secmodel | ||
stand | ||
sys | ||
ufs | ||
uvm | ||
Makefile |