The branch main has been updated by freqlabs:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=47e46b1123b9c732c366848e8184ce42e086a0fb

commit 47e46b1123b9c732c366848e8184ce42e086a0fb
Author:     Ryan Moeller <freql...@freebsd.org>
AuthorDate: 2022-01-26 18:33:23 +0000
Commit:     Ryan Moeller <freql...@freebsd.org>
CommitDate: 2022-01-26 18:37:52 +0000

    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.
---
 sys/contrib/openzfs/module/os/freebsd/zfs/zvol_os.c | 4 ++--
 1 file 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 {

Reply via email to