[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dragonfly-commits
Subject:    git: kernel - Fix a third missing wakeup() in kern_lock.c
From:       Matthew Dillon <dillon () crater ! dragonflybsd ! org>
Date:       2018-08-30 16:10:45
Message-ID: 20180830161045.4BF183DFF52 () crater ! dragonflybsd ! org
[Download RAW message or body]


commit 4f29f4c6fe268c512c02bca8febda0fd7d2c987c
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Wed Aug 29 22:10:49 2018 -0700

    kernel - Fix a third missing wakeup() in kern_lock.c
    
    * Fix a case where an lockmgr LK_EXCLUSIVE call with a
      timeout blocks due to existing shared locks.  If the
      timeout occurs, the exclusive lock request is backed out.
    
      However, if any new shared locks are attempted while
      the EXREQ was pending (due to the exclusive priority
      mechanism), those threads will block.  The backout code
      was not waking the blocked threads up for this situation.
    
    * Fixed by issuing the wakeup() unconditionally for this
      case.  This is not a heavily traveled code path as locks
      with timeouts rarely reach the actual timeout.

Summary of changes:
 sys/kern/kern_lock.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4f29f4c6fe268c512c02bca8febda0fd7d2c987c


-- 
DragonFly BSD source repository
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic