Skip to content

Commit 3dfa98d

Browse files
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 <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Rob Norris <[email protected]> Signed-off-by: Fedor Uporov <[email protected]> Closes #17384
1 parent fa697b9 commit 3dfa98d

File tree

6 files changed

+34
-35
lines changed

6 files changed

+34
-35
lines changed

include/os/linux/kernel/linux/mod_compat.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ enum scope_prefix_types {
6363
zfs_vdev_disk,
6464
zfs_vdev_file,
6565
zfs_vdev_mirror,
66+
zfs_vol,
6667
zfs_vnops,
6768
zfs_zevent,
6869
zfs_zio,

module/os/freebsd/zfs/zvol_os.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,6 +1373,9 @@ zvol_os_create_minor(const char *name)
13731373
int error;
13741374
bool replayed_zil = B_FALSE;
13751375

1376+
if (zvol_inhibit_dev)
1377+
return (0);
1378+
13761379
ZFS_LOG(1, "Creating ZVOL %s...", name);
13771380
hash = zvol_name_hash(name);
13781381
if ((zv = zvol_find_by_name_hash(name, hash, RW_NONE)) != NULL) {

module/os/linux/zfs/zvol_os.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,9 +1788,6 @@ zvol_fini(void)
17881788
ida_destroy(&zvol_ida);
17891789
}
17901790

1791-
module_param(zvol_inhibit_dev, uint, 0644);
1792-
MODULE_PARM_DESC(zvol_inhibit_dev, "Do not create zvol device nodes");
1793-
17941791
module_param(zvol_major, uint, 0444);
17951792
MODULE_PARM_DESC(zvol_major, "Major number for zvol device");
17961793

module/zfs/zvol.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2154,6 +2154,8 @@ zvol_fini_impl(void)
21542154
}
21552155
}
21562156

2157+
ZFS_MODULE_PARAM(zfs_vol, zvol_, inhibit_dev, UINT, ZMOD_RW,
2158+
"Do not create zvol device nodes");
21572159
ZFS_MODULE_PARAM(zfs, , zvol_threads, UINT, ZMOD_RW,
21582160
"Number of threads for I/O requests. Set to 0 to use all active CPUs");
21592161
ZFS_MODULE_PARAM(zfs, , zvol_num_taskqs, UINT, ZMOD_RW,

tests/zfs-tests/include/tunables.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ VDEV_MAX_AUTO_ASHIFT vdev.max_auto_ashift zfs_vdev_max_auto_ashift
9999
VDEV_MIN_MS_COUNT vdev.min_ms_count zfs_vdev_min_ms_count
100100
VDEV_DIRECT_WR_VERIFY vdev.direct_write_verify zfs_vdev_direct_write_verify
101101
VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip
102-
VOL_INHIBIT_DEV UNSUPPORTED zvol_inhibit_dev
102+
VOL_INHIBIT_DEV vol.inhibit_dev zvol_inhibit_dev
103103
VOL_MODE vol.mode zvol_volmode
104104
VOL_RECURSIVE vol.recursive UNSUPPORTED
105105
VOL_REQUEST_SYNC zvol_request_sync zvol_request_sync

tests/zfs-tests/tests/functional/zvol/zvol_misc/zvol_misc_volmode.ksh

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
# 5. Verify "volmode=default" behaves accordingly to "volmode" module parameter
4343
# 6. Verify "volmode" property is inherited correctly
4444
# 7. Verify "volmode" behaves correctly at import time
45-
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev (Linux only)
45+
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev
4646
#
4747

4848
verify_runnable "global"
@@ -64,10 +64,8 @@ function sysctl_inhibit_dev # value
6464
{
6565
typeset value="$1"
6666

67-
if is_linux; then
68-
log_note "Setting zvol_inhibit_dev tunable to $value"
69-
log_must set_tunable32 VOL_INHIBIT_DEV $value
70-
fi
67+
log_note "Setting zvol_inhibit_dev tunable to $value"
68+
log_must set_tunable32 VOL_INHIBIT_DEV $value
7169
}
7270

7371
#
@@ -230,31 +228,29 @@ log_must_busy zfs destroy $SUBZVOL
230228
blockdev_missing $ZDEV
231229
blockdev_missing $SUBZDEV
232230

233-
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev (Linux only)
234-
if is_linux; then
235-
sysctl_inhibit_dev 1
236-
# 7.1 Verify device nodes not are not created with "volmode=full"
237-
sysctl_volmode 1
238-
log_must zfs create -V $VOLSIZE -s $ZVOL
239-
blockdev_missing $ZDEV
240-
set_volmode full $ZVOL
241-
blockdev_missing $ZDEV
242-
log_must_busy zfs destroy $ZVOL
243-
blockdev_missing $ZDEV
244-
# 7.1 Verify device nodes not are not created with "volmode=dev"
245-
sysctl_volmode 2
246-
log_must zfs create -V $VOLSIZE -s $ZVOL
247-
blockdev_missing $ZDEV
248-
set_volmode dev $ZVOL
249-
blockdev_missing $ZDEV
250-
log_must_busy zfs destroy $ZVOL
251-
blockdev_missing $ZDEV
252-
# 7.1 Verify device nodes not are not created with "volmode=none"
253-
sysctl_volmode 3
254-
log_must zfs create -V $VOLSIZE -s $ZVOL
255-
blockdev_missing $ZDEV
256-
set_volmode none $ZVOL
257-
blockdev_missing $ZDEV
258-
fi
231+
# 8. Verify "volmode" behaves accordingly to zvol_inhibit_dev
232+
sysctl_inhibit_dev 1
233+
# 7.1 Verify device nodes not are not created with "volmode=full"
234+
sysctl_volmode 1
235+
log_must zfs create -V $VOLSIZE -s $ZVOL
236+
blockdev_missing $ZDEV
237+
set_volmode full $ZVOL
238+
blockdev_missing $ZDEV
239+
log_must_busy zfs destroy $ZVOL
240+
blockdev_missing $ZDEV
241+
# 7.1 Verify device nodes not are not created with "volmode=dev"
242+
sysctl_volmode 2
243+
log_must zfs create -V $VOLSIZE -s $ZVOL
244+
blockdev_missing $ZDEV
245+
set_volmode dev $ZVOL
246+
blockdev_missing $ZDEV
247+
log_must_busy zfs destroy $ZVOL
248+
blockdev_missing $ZDEV
249+
# 7.1 Verify device nodes not are not created with "volmode=none"
250+
sysctl_volmode 3
251+
log_must zfs create -V $VOLSIZE -s $ZVOL
252+
blockdev_missing $ZDEV
253+
set_volmode none $ZVOL
254+
blockdev_missing $ZDEV
259255

260256
log_pass "Verify that ZFS volume property 'volmode' works as intended"

0 commit comments

Comments
 (0)