mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 02:20:59 +03:00
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 <mav@FreeBSD.org> Reviewed-by: Matt Macy <mmacy@FreeBSD.org> Signed-off-by: Ryan Moeller <ryan@iXsystems.com> Closes #11117
This commit is contained in:
parent
896d0f0906
commit
c2c643256c
@ -1279,6 +1279,8 @@ zvol_create_minor_impl(const char *name)
|
|||||||
zfs_prop_to_name(ZFS_PROP_VOLMODE), &volmode, NULL);
|
zfs_prop_to_name(ZFS_PROP_VOLMODE), &volmode, NULL);
|
||||||
if (error || volmode == ZFS_VOLMODE_DEFAULT)
|
if (error || volmode == ZFS_VOLMODE_DEFAULT)
|
||||||
volmode = zvol_volmode;
|
volmode = zvol_volmode;
|
||||||
|
error = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* zvol_alloc equivalent ...
|
* zvol_alloc equivalent ...
|
||||||
*/
|
*/
|
||||||
@ -1357,8 +1359,7 @@ zvol_create_minor_impl(const char *name)
|
|||||||
out_dmu_objset_disown:
|
out_dmu_objset_disown:
|
||||||
dmu_objset_disown(os, B_TRUE, FTAG);
|
dmu_objset_disown(os, B_TRUE, FTAG);
|
||||||
|
|
||||||
if (zv->zv_zso->zso_volmode == ZFS_VOLMODE_GEOM) {
|
if (error == 0 && volmode == ZFS_VOLMODE_GEOM) {
|
||||||
if (error == 0)
|
|
||||||
zvol_geom_run(zv);
|
zvol_geom_run(zv);
|
||||||
g_topology_unlock();
|
g_topology_unlock();
|
||||||
}
|
}
|
||||||
@ -1369,8 +1370,8 @@ out_doi:
|
|||||||
zvol_insert(zv);
|
zvol_insert(zv);
|
||||||
zvol_minors++;
|
zvol_minors++;
|
||||||
rw_exit(&zvol_state_lock);
|
rw_exit(&zvol_state_lock);
|
||||||
}
|
|
||||||
ZFS_LOG(1, "ZVOL %s created.", name);
|
ZFS_LOG(1, "ZVOL %s created.", name);
|
||||||
|
}
|
||||||
out_giant:
|
out_giant:
|
||||||
PICKUP_GIANT();
|
PICKUP_GIANT();
|
||||||
return (error);
|
return (error);
|
||||||
|
Loading…
Reference in New Issue
Block a user