git: DragonFly_RELEASE_3_0 kernel - Fix another AHCI bug
    Matthew Dillon 
    dillon at crater.dragonflybsd.org
       
    Thu Mar 29 16:07:34 PDT 2012
    
    
  
commit 7e6c59b8a3ec917894cf3256b092e3f7dcc2891b
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Mar 23 01:47:48 2012 -0700
    kernel - Fix another AHCI bug
    
    * Remove the unlock/lock sequences around the xpt_done() calls.  These
      temporary unlocks create a gap which can allow another interrupt to
      squeeze in and interfere with the interrupt thread that is already
      running, resulting in corruption.
    
      This bug occurs under very heavy loads, and typically required multiple
      concurrent ops to a SSD to trigger.
    
    * Add additional assertions to catch issues and reorder one of the
      chiploads.
    
    * This is a bit non-optimal, be on the lookout for deadlocks in case it
      turns out that holding the lock is a bad idea.
Summary of changes:
 sys/dev/disk/ahci/ahci.c           |   51 +++++++++--------------------------
 sys/dev/disk/ahci/ahci_cam.c       |   24 ++++++++++++----
 sys/dev/disk/ahci/ahci_dragonfly.c |    2 +-
 3 files changed, 32 insertions(+), 45 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7e6c59b8a3ec917894cf3256b092e3f7dcc2891b
-- 
DragonFly BSD source repository
    
    
More information about the Commits
mailing list