DragonFly commits List (threaded) for 2012-03
git: DragonFly_RELEASE_3_0 kernel - Fix another AHCI bug
Author: Matthew Dillon <email@example.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
* 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(-)
DragonFly BSD source repository