From dea0fc969ba96309990c00821b629afd576b4108 Mon Sep 17 00:00:00 2001 From: Fedor Uporov <60701163+fuporovvStack@users.noreply.github.com> Date: Wed, 30 Jul 2025 19:46:34 +0300 Subject: [PATCH] ZVOL: Return early, if volmode is ZFS_VOLMODE_NONE on FreeBSD side Return from zvol_os_create_minor() function immediately after dsl_prop_get_integer() call if volmode property value is set to 'none', like it is doing on Linux side. Sponsored-by: vStack, Inc. Reviewed-by: Brian Behlendorf Reviewed-by: Alexander Motin Signed-off-by: Fedor Uporov Closes #17405 --- module/os/freebsd/zfs/zvol_os.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/module/os/freebsd/zfs/zvol_os.c b/module/os/freebsd/zfs/zvol_os.c index 212ef560d..5ec35a9de 100644 --- a/module/os/freebsd/zfs/zvol_os.c +++ b/module/os/freebsd/zfs/zvol_os.c @@ -1402,9 +1402,13 @@ zvol_os_create_minor(const char *name) error = dsl_prop_get_integer(name, zfs_prop_to_name(ZFS_PROP_VOLMODE), &volmode, NULL); - if (error || volmode == ZFS_VOLMODE_DEFAULT) + if (error) + goto out_dmu_objset_disown; + + if (volmode == ZFS_VOLMODE_DEFAULT) volmode = zvol_volmode; - error = 0; + if (volmode == ZFS_VOLMODE_NONE) + goto out_dmu_objset_disown; /* * zvol_alloc equivalent ... @@ -1496,7 +1500,7 @@ out_dmu_objset_disown: } out_doi: kmem_free(doi, sizeof (dmu_object_info_t)); - if (error == 0) { + if (error == 0 && volmode != ZFS_VOLMODE_NONE) { rw_enter(&zvol_state_lock, RW_WRITER); zvol_insert(zv); zvol_minors++;