]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit - contrib/ntp/tests/libntp/g_numtohost.cpp
MFV r284763: 5981 Deadlock in dmu_objset_find_dp
authorAlexander Motin <mav@FreeBSD.org>
Wed, 12 Aug 2015 19:10:29 +0000 (19:10 +0000)
committerAlexander Motin <mav@FreeBSD.org>
Wed, 12 Aug 2015 19:10:29 +0000 (19:10 +0000)
commitd0687a01d754a31522e92193b7a3382d3ae0bf9a
tree66198e34bf590edfb988daf3eefcff02f12552b5
parent9aca5cedfeca0230db50c2225c8dc6170bc061dd
parentdc121a264dda44e9a0551374ae3baf8fa08ec0e4
MFV r284763: 5981 Deadlock in dmu_objset_find_dp

illumos/illumos-gate@1d3f896f5469c69c1339890ec3d68e9feddb0343

https://www.illumos.org/issues/5981
  When dmu_objset_find_dp gets called with a read lock held, it fans out
  the work to the task queue. Each task in turn acquires its own read
  lock before calling the callback. If during this process anyone tries
  to a acquire a write lock, it will stall all read lock requests.Thus
  the tasks will never finish, the read lock of the caller will never
  get freed and the write lock never acquired.  deadlock.

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Arne Jansen <jansen@webgods.de>
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h