Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Mar 2007 01:12:16 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/arcmsr arcmsr.c arcmsr.h
Message-ID:  <200703060112.l261CGLG004395@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703060112.l261CGLG004395>