From c2c643256c435fcf03dd740d1463bd6104bba997 Mon Sep 17 00:00:00 2001 From: Ryan Moeller Date: Wed, 21 Oct 2020 17:59:15 +0000 Subject: [PATCH] zvol_os: Properly ignore error in volmode lookup We fall back to a default volmode and continue when looking up a zvol's volmode property fails. After this we should set the error to 0 to ensure we take the success paths in the out section. While here, make sure we only log that the zvol was created on success. Reviewed-by: Alexander Motin Reviewed-by: Matt Macy Signed-off-by: Ryan Moeller Closes #11117 --- module/os/freebsd/zfs/zvol_os.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/module/os/freebsd/zfs/zvol_os.c b/module/os/freebsd/zfs/zvol_os.c index 13e2e83aef..bae39c6d54 100644 --- a/module/os/freebsd/zfs/zvol_os.c +++ b/module/os/freebsd/zfs/zvol_os.c @@ -1279,6 +1279,8 @@ zvol_create_minor_impl(const char *name) zfs_prop_to_name(ZFS_PROP_VOLMODE), &volmode, NULL); if (error || volmode == ZFS_VOLMODE_DEFAULT) volmode = zvol_volmode; + error = 0; + /* * zvol_alloc equivalent ... */ @@ -1357,9 +1359,8 @@ zvol_create_minor_impl(const char *name) out_dmu_objset_disown: dmu_objset_disown(os, B_TRUE, FTAG); - if (zv->zv_zso->zso_volmode == ZFS_VOLMODE_GEOM) { - if (error == 0) - zvol_geom_run(zv); + if (error == 0 && volmode == ZFS_VOLMODE_GEOM) { + zvol_geom_run(zv); g_topology_unlock(); } out_doi: @@ -1369,8 +1370,8 @@ out_doi: zvol_insert(zv); zvol_minors++; rw_exit(&zvol_state_lock); + ZFS_LOG(1, "ZVOL %s created.", name); } - ZFS_LOG(1, "ZVOL %s created.", name); out_giant: PICKUP_GIANT(); return (error);