]> granicus.if.org Git - zfs/commit
Fix zpool on zvol deadlock
authorMassimo Maggi <massimo@mmmm.it>
Fri, 18 Jan 2013 17:44:09 +0000 (09:44 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 18 Jan 2013 17:44:55 +0000 (09:44 -0800)
commitbabf3f9b6d9294b0a88457941d60af5d9d7b744d
tree54eb435cda3895eafa6bc3e04eff34718ddc923e
parent7973e464de4f93b6e669f7f04a316e013767224e
Fix zpool on zvol deadlock

Commit 65d56083b4617a4cade0cff68cbbaf68114169d6 fixes the lock
inversion between spa_namespace_lock and bdev->bd_mutex but only
for the first user of spa_namespace_lock: dmu_objset_own().
Later spa_namespace_lock gets acquired by dsl_prop_get_integer()
though dsl_prop_get()->dsl_dataset_hold()->dsl_dir_open_spa()->
spa_open()->spa_open_common() without this "protection".  By
moving the mutex release after this second use, even this
acquisition of the lock is "protected" by the ERESTARTSYS trick.

Signed-off-by: Massimo Maggi <me@massimo-maggi.eu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1220
module/zfs/zvol.c