[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS Update: src
- To: cvs@lists.cleannorth.org
- Subject: CVS Update: src
- From: Dan Brosemer <odin@mace.cleannorth.org>
- Date: Thu, 12 Jun 2003 18:12:34 ()
- Reply-to: odin@mace.cleannorth.org
- Sender: owner-cvs@lists.cleannorth.org
CVSROOT: /cvs Module name: src Repository: src/sys/dev/ic/ Changes by: odin@mace.cleannorth.org. 03/06/12 18:12:34 Modified files: src/sys/dev/ic/: siop.c Log message: From OPENBSD_3_3 MFC: Fix by krw@ Fix erroneous handling of i/o's during a reset. a) Set xs->status rather than cmd_tables->status because there will be no interrupt processing to move it from cmd_tables->status to xs->status. b) Set cmd_c.status to correct value (CMDST_SENSE_DONE) when an active sense command is reset. c) Don't put a reset command from the ready queue into the free_list twice, once in siop_scsicmd_end() and once manually. Condition a) meant that the scsi layer was seeing successfully completed i/o's (xs->error == XS_NOERROR) when they were in fact reset and should have had xs->error == XS_TIMEOUT or xs->error == XS_RESET. This meant lost data on output, and random or zero'ed data on input. Condition b) meant that the wrong bus_dmamap_sync() was called, though the actual action was apparently identical. Condition c) meant that the free_list could become corrupt. The problem was discovered by pb@ on a heavily loaded server that experienced timeouts. This fix was tested by pb@ and henric@ to prove it did not affect normal processing. If nothing else it will provide better error messages if the problem is ever encountered again. Probably a good candidate for -stable if pb@ can successfully reproduce his timeout problems and not have his server crash. deraadt@ ok
- Prev by Date: CVS Update: src
- Next by Date: CVS Update: src
- Previous by thread: CVS Update: src
- Next by thread: CVS Update: src
- Index(es):