git: hammer2 - Fix upgrade deadlock
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Jun 10 21:15:18 PDT 2016
commit b6b260f2b42aa5a135e4b57ce102dcb0dbbf88c3
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Jun 10 11:25:58 2016 -0700
hammer2 - Fix upgrade deadlock
* Fix a deadlock which occurs when hammer2_chain_unlock() tries to
upgrade the 'last' shared lock to exclusive. This can deadlock if
another thread obtains the chain shared before we manage to do the
upgrade.
Just use a 'try' here. If it fails it means someone else got a lock
(of any kind) and we don't have to worry about dropping the chain data.
* Replace hammer2_mtx_upgrade() with hammer2_mtx_upgrade_try(). Remove
support for a blocking 'upgrade'. It is no longer needed and it is
too dangerous to have anyway.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 13 ++-----------
sys/vfs/hammer2/hammer2_chain.c | 9 ++++++---
2 files changed, 8 insertions(+), 14 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/b6b260f2b42aa5a135e4b57ce102dcb0dbbf88c3
--
DragonFly BSD source repository
More information about the Commits
mailing list