DragonFly BSD
DragonFly commits List (threaded) for 2012-03
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: kernel - Fix another AHCI bug


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 23 Mar 2012 01:51:53 -0700 (PDT)

commit d16d3400e7cd9e7c897c37abab0b8f2668fcc5c0
Author: Matthew Dillon <dillon@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/d16d3400e7cd9e7c897c37abab0b8f2668fcc5c0


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]