mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-06-25 02:28:01 +03:00
ZVOL: Make zvol_inhibit_dev module parameter platform-independent
The module parameter now is represented in FreeBSD sysctls list with name: 'vfs.zfs.vol.inhibit_dev'. The default value is '0', same as on Linux side. Sponsored-by: vStack, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Rob Norris <rob.norris@klarasystems.com> Signed-off-by: Fedor Uporov <fuporov.vstack@gmail.com> Closes #17384
This commit is contained in:
parent
fa697b94e6
commit
3dfa98d013
@ -63,6 +63,7 @@ enum scope_prefix_types {
|
|||||||
zfs_vdev_disk,
|
zfs_vdev_disk,
|
||||||
zfs_vdev_file,
|
zfs_vdev_file,
|
||||||
zfs_vdev_mirror,
|
zfs_vdev_mirror,
|
||||||
|
zfs_vol,
|
||||||
zfs_vnops,
|
zfs_vnops,
|
||||||
zfs_zevent,
|
zfs_zevent,
|
||||||
zfs_zio,
|
zfs_zio,
|
||||||
|
@ -1373,6 +1373,9 @@ zvol_os_create_minor(const char *name)
|
|||||||
int error;
|
int error;
|
||||||
bool replayed_zil = B_FALSE;
|
bool replayed_zil = B_FALSE;
|
||||||
|
|
||||||
|
if (zvol_inhibit_dev)
|
||||||
|
return (0);
|
||||||
|
|
||||||
ZFS_LOG(1, "Creating ZVOL %s...", name);
|
ZFS_LOG(1, "Creating ZVOL %s...", name);
|
||||||
hash = zvol_name_hash(name);
|
hash = zvol_name_hash(name);
|
||||||
if ((zv = zvol_find_by_name_hash(name, hash, RW_NONE)) != NULL) {
|
if ((zv = zvol_find_by_name_hash(name, hash, RW_NONE)) != NULL) {
|
||||||
|
@ -1788,9 +1788,6 @@ zvol_fini(void)
|
|||||||
ida_destroy(&zvol_ida);
|
ida_destroy(&zvol_ida);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_param(zvol_inhibit_dev, uint, 0644);
|
|
||||||
MODULE_PARM_DESC(zvol_inhibit_dev, "Do not create zvol device nodes");
|
|
||||||
|
|
||||||
module_param(zvol_major, uint, 0444);
|
module_param(zvol_major, uint, 0444);
|
||||||
MODULE_PARM_DESC(zvol_major, "Major number for zvol device");
|
MODULE_PARM_DESC(zvol_major, "Major number for zvol device");
|
||||||
|
|
||||||
|
@ -2154,6 +2154,8 @@ zvol_fini_impl(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZFS_MODULE_PARAM(zfs_vol, zvol_, inhibit_dev, UINT, ZMOD_RW,
|
||||||
|
"Do not create zvol device nodes");
|
||||||
ZFS_MODULE_PARAM(zfs, , zvol_threads, UINT, ZMOD_RW,
|
ZFS_MODULE_PARAM(zfs, , zvol_threads, UINT, ZMOD_RW,
|
||||||
"Number of threads for I/O requests. Set to 0 to use all active CPUs");
|
"Number of threads for I/O requests. Set to 0 to use all active CPUs");
|
||||||
ZFS_MODULE_PARAM(zfs, , zvol_num_taskqs, UINT, ZMOD_RW,
|
ZFS_MODULE_PARAM(zfs, , zvol_num_taskqs, UINT, ZMOD_RW,
|
||||||
|
@ -99,7 +99,7 @@ VDEV_MAX_AUTO_ASHIFT vdev.max_auto_ashift zfs_vdev_max_auto_ashift
|
|||||||
VDEV_MIN_MS_COUNT vdev.min_ms_count zfs_vdev_min_ms_count
|
VDEV_MIN_MS_COUNT vdev.min_ms_count zfs_vdev_min_ms_count
|
||||||
VDEV_DIRECT_WR_VERIFY vdev.direct_write_verify zfs_vdev_direct_write_verify
|
VDEV_DIRECT_WR_VERIFY vdev.direct_write_verify zfs_vdev_direct_write_verify
|
||||||
VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip
|
VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip
|
||||||
VOL_INHIBIT_DEV UNSUPPORTED zvol_inhibit_dev
|
VOL_INHIBIT_DEV vol.inhibit_dev zvol_inhibit_dev
|
||||||
VOL_MODE vol.mode zvol_volmode
|
VOL_MODE vol.mode zvol_volmode
|
||||||
VOL_RECURSIVE vol.recursive UNSUPPORTED
|
VOL_RECURSIVE vol.recursive UNSUPPORTED
|
||||||
VOL_REQUEST_SYNC zvol_request_sync zvol_request_sync
|
VOL_REQUEST_SYNC zvol_request_sync zvol_request_sync
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
# 5. Verify "volmode=default" behaves accordingly to "volmode" module parameter
|
# 5. Verify "volmode=default" behaves accordingly to "volmode" module parameter
|
||||||
# 6. Verify "volmode" property is inherited correctly
|
# 6. Verify "volmode" property is inherited correctly
|
||||||
# 7. Verify "volmode" behaves correctly at import time
|
# 7. Verify "volmode" behaves correctly at import time
|
||||||
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev (Linux only)
|
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev
|
||||||
#
|
#
|
||||||
|
|
||||||
verify_runnable "global"
|
verify_runnable "global"
|
||||||
@ -64,10 +64,8 @@ function sysctl_inhibit_dev # value
|
|||||||
{
|
{
|
||||||
typeset value="$1"
|
typeset value="$1"
|
||||||
|
|
||||||
if is_linux; then
|
log_note "Setting zvol_inhibit_dev tunable to $value"
|
||||||
log_note "Setting zvol_inhibit_dev tunable to $value"
|
log_must set_tunable32 VOL_INHIBIT_DEV $value
|
||||||
log_must set_tunable32 VOL_INHIBIT_DEV $value
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -230,31 +228,29 @@ log_must_busy zfs destroy $SUBZVOL
|
|||||||
blockdev_missing $ZDEV
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $SUBZDEV
|
blockdev_missing $SUBZDEV
|
||||||
|
|
||||||
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev (Linux only)
|
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev
|
||||||
if is_linux; then
|
sysctl_inhibit_dev 1
|
||||||
sysctl_inhibit_dev 1
|
# 7.1 Verify device nodes not are not created with "volmode=full"
|
||||||
# 7.1 Verify device nodes not are not created with "volmode=full"
|
sysctl_volmode 1
|
||||||
sysctl_volmode 1
|
log_must zfs create -V $VOLSIZE -s $ZVOL
|
||||||
log_must zfs create -V $VOLSIZE -s $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
set_volmode full $ZVOL
|
||||||
set_volmode full $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
log_must_busy zfs destroy $ZVOL
|
||||||
log_must_busy zfs destroy $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
# 7.1 Verify device nodes not are not created with "volmode=dev"
|
||||||
# 7.1 Verify device nodes not are not created with "volmode=dev"
|
sysctl_volmode 2
|
||||||
sysctl_volmode 2
|
log_must zfs create -V $VOLSIZE -s $ZVOL
|
||||||
log_must zfs create -V $VOLSIZE -s $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
set_volmode dev $ZVOL
|
||||||
set_volmode dev $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
log_must_busy zfs destroy $ZVOL
|
||||||
log_must_busy zfs destroy $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
# 7.1 Verify device nodes not are not created with "volmode=none"
|
||||||
# 7.1 Verify device nodes not are not created with "volmode=none"
|
sysctl_volmode 3
|
||||||
sysctl_volmode 3
|
log_must zfs create -V $VOLSIZE -s $ZVOL
|
||||||
log_must zfs create -V $VOLSIZE -s $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
set_volmode none $ZVOL
|
||||||
set_volmode none $ZVOL
|
blockdev_missing $ZDEV
|
||||||
blockdev_missing $ZDEV
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_pass "Verify that ZFS volume property 'volmode' works as intended"
|
log_pass "Verify that ZFS volume property 'volmode' works as intended"
|
||||||
|
Loading…
Reference in New Issue
Block a user