git: kernel - Fix boot-time panic in NATA revealed by new callout mechanics

Matthew Dillon dillon at crater.dragonflybsd.org
Tue Nov 25 14:13:26 PST 2014


commit 15bd3c7353c5ce02776849ca16be00d5088d8734
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Tue Nov 25 14:11:42 2014 -0800

    kernel - Fix boot-time panic in NATA revealed by new callout mechanics
    
    * The NATA driver was using spin locks in a very, very dangerous way.
      They did not play nice with the new blocking callout mechanism.
    
    * Replace all of NATAs spinlocks with lockmgr locks.  In addition, change
      all asynchronous callout_stop() calls to synchronous callout_stop_sync()
      calls, and use callout_init_lk() to auto-lock ch->state_lock for the
      callback, which fixes a long-time deadlock race.
    
    Reported-by: tuxillo

Summary of changes:
 sys/dev/disk/nata/ata-all.c      | 35 +++++++++--------
 sys/dev/disk/nata/ata-all.h      |  9 ++---
 sys/dev/disk/nata/ata-chipset.c  | 38 +++++++++----------
 sys/dev/disk/nata/ata-lowlevel.c |  2 +-
 sys/dev/disk/nata/ata-queue.c    | 81 ++++++++++++++++++++--------------------
 sys/dev/disk/nata/ata-raid.c     | 22 +++++------
 sys/dev/disk/nata/ata-raid.h     |  4 +-
 sys/dev/disk/nata/atapi-cam.c    | 44 +++++++++++-----------
 8 files changed, 114 insertions(+), 121 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/15bd3c7353c5ce02776849ca16be00d5088d8734


-- 
DragonFly BSD source repository


More information about the Commits mailing list