From owner-cvs-src@FreeBSD.ORG Tue Mar 6 01:12:16 2007 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B222116A400; Tue, 6 Mar 2007 01:12:16 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id A4A7213C4A7; Tue, 6 Mar 2007 01:12:16 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l261CGL6004396; Tue, 6 Mar 2007 01:12:16 GMT (envelope-from scottl@repoman.freebsd.org) Received: (from scottl@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l261CGLG004395; Tue, 6 Mar 2007 01:12:16 GMT (envelope-from scottl) Message-Id: <200703060112.l261CGLG004395@repoman.freebsd.org> From: Scott Long Date: Tue, 6 Mar 2007 01:12:16 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/dev/arcmsr arcmsr.c arcmsr.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Mar 2007 01:12:16 -0000 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