aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib
diff options
context:
space:
mode:
authorRyan Moeller <freqlabs@FreeBSD.org>2022-01-26 18:33:23 +0000
committerRyan Moeller <freqlabs@FreeBSD.org>2022-01-26 18:37:52 +0000
commit47e46b1123b9c732c366848e8184ce42e086a0fb (patch)
tree8e900e52264e41ffe004866d9696c023766615e6 /sys/contrib
parent9acd521dbd0a7f37d282096647ae2785a37e9cb1 (diff)
downloadsrc-47e46b1123b9c732c366848e8184ce42e086a0fb.tar.gz
src-47e46b1123b9c732c366848e8184ce42e086a0fb.zip
zfs: Fix zvol_cdev_open locking
First open locking changes were correctly applied to zvol_geom_open but incorrectly applied to zvol_cdev_open, causing spa_namespace_lock to be held indefinitely. Make the first open locking in zvol_cdev_open match zvol_geom_open. This change has been accepted upstream in openzfs/zfs#13016 but is not yet merged. Reviewed by: mav Fixes: e92ffd9b6268 Sponsored by: iXsystems, Inc.
Diffstat (limited to 'sys/contrib')
-rw-r--r--sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c
index 8785557cb61d..06dd8cfdd790 100644
--- a/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c
+++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c
@@ -928,8 +928,8 @@ retry:
*/
if (!mutex_owned(&spa_namespace_lock)) {
if (!mutex_tryenter(&spa_namespace_lock)) {
- rw_exit(&zvol_state_lock);
- mutex_enter(&spa_namespace_lock);
+ mutex_exit(&zv->zv_state_lock);
+ rw_exit(&zv->zv_suspend_lock);
kern_yield(PRI_USER);
goto retry;
} else {