cvs commit: src/sys/dev/arcmsr arcmsr.c arcmsr.h
Scott Long
scottl at FreeBSD.org
Tue Mar 6 01:12:16 UTC 2007
scottl 2007-03-06 01:12:16 UTC
FreeBSD src repository
Modified files:
sys/dev/arcmsr arcmsr.c arcmsr.h
Log:
Better fix for the errors under high load. Returning CAM_SCSI_BUSY is almost
never correct as CAM has no real understanding of it, and will just immediately
retry the command. This leads to undesirable cycling of the camisr as well as
a high possibility for the command to exhaust its retries before the driver
can get around to servicing it.
The better fix, as demonstrated here, is to freeze the simq and mark the
command as needing to be tried. Then when driver can service the command,
the simq gets unfrozen. This is correct, and documented here to help reduce
the mystery. However, it also points out a shortcoming in CAM error handling
that makes writing drivers harder.
Submitted by: Erich Chen
Revision Changes Path
1.18 +8 -2 src/sys/dev/arcmsr/arcmsr.c
1.4 +2 -0 src/sys/dev/arcmsr/arcmsr.h
More information about the cvs-src
mailing list