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:
Fedor Uporov 2025-05-29 16:37:41 +03:00 committed by GitHub
parent fa697b94e6
commit 3dfa98d013
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 34 additions and 35 deletions

View File

@ -63,6 +63,7 @@ enum scope_prefix_types {
zfs_vdev_disk,
zfs_vdev_file,
zfs_vdev_mirror,
zfs_vol,
zfs_vnops,
zfs_zevent,
zfs_zio,

View File

@ -1373,6 +1373,9 @@ zvol_os_create_minor(const char *name)
int error;
bool replayed_zil = B_FALSE;
if (zvol_inhibit_dev)
return (0);
ZFS_LOG(1, "Creating ZVOL %s...", name);
hash = zvol_name_hash(name);
if ((zv = zvol_find_by_name_hash(name, hash, RW_NONE)) != NULL) {

View File

@ -1788,9 +1788,6 @@ zvol_fini(void)
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_PARM_DESC(zvol_major, "Major number for zvol device");

View File

@ -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,
"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,

View File

@ -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_DIRECT_WR_VERIFY vdev.direct_write_verify zfs_vdev_direct_write_verify
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_RECURSIVE vol.recursive UNSUPPORTED
VOL_REQUEST_SYNC zvol_request_sync zvol_request_sync

View File

@ -42,7 +42,7 @@
# 5. Verify "volmode=default" behaves accordingly to "volmode" module parameter
# 6. Verify "volmode" property is inherited correctly
# 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"
@ -64,10 +64,8 @@ function sysctl_inhibit_dev # value
{
typeset value="$1"
if is_linux; then
log_note "Setting zvol_inhibit_dev tunable to $value"
log_must set_tunable32 VOL_INHIBIT_DEV $value
fi
}
#
@ -230,8 +228,7 @@ log_must_busy zfs destroy $SUBZVOL
blockdev_missing $ZDEV
blockdev_missing $SUBZDEV
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev (Linux only)
if is_linux; then
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev
sysctl_inhibit_dev 1
# 7.1 Verify device nodes not are not created with "volmode=full"
sysctl_volmode 1
@ -255,6 +252,5 @@ if is_linux; then
blockdev_missing $ZDEV
set_volmode none $ZVOL
blockdev_missing $ZDEV
fi
log_pass "Verify that ZFS volume property 'volmode' works as intended"