mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Make the vfs.zfs.vdev.raidz_impl sysctl cross-platform
Reviewed-by: Allan Jude <allan@klarasystems.com> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Alan Somers <asomers@gmail.com> Sponsored by: ConnectWise Closes #16980
This commit is contained in:
@@ -6580,3 +6580,7 @@ ZFS_MODULE_PARAM_CALL(zfs_vdev, zfs_vdev_, max_auto_ashift,
|
||||
param_set_max_auto_ashift, param_get_uint, ZMOD_RW,
|
||||
"Maximum ashift used when optimizing for logical -> physical sector "
|
||||
"size on new top-level vdevs");
|
||||
|
||||
ZFS_MODULE_PARAM_CALL(zfs_vdev, zfs_vdev_, raidz_impl,
|
||||
param_set_raidz_impl, param_get_raidz_impl, ZMOD_RW,
|
||||
"RAIDZ implementation");
|
||||
|
||||
@@ -81,7 +81,7 @@ static boolean_t raidz_math_initialized = B_FALSE;
|
||||
|
||||
#define RAIDZ_IMPL_READ(i) (*(volatile uint32_t *) &(i))
|
||||
|
||||
static uint32_t zfs_vdev_raidz_impl = IMPL_SCALAR;
|
||||
uint32_t zfs_vdev_raidz_impl = IMPL_SCALAR;
|
||||
static uint32_t user_sel_impl = IMPL_FASTEST;
|
||||
|
||||
/* Hold all supported implementations */
|
||||
@@ -633,16 +633,10 @@ vdev_raidz_impl_set(const char *val)
|
||||
return (err);
|
||||
}
|
||||
|
||||
#if defined(_KERNEL) && defined(__linux__)
|
||||
#if defined(_KERNEL)
|
||||
|
||||
static int
|
||||
zfs_vdev_raidz_impl_set(const char *val, zfs_kernel_param_t *kp)
|
||||
{
|
||||
return (vdev_raidz_impl_set(val));
|
||||
}
|
||||
|
||||
static int
|
||||
zfs_vdev_raidz_impl_get(char *buffer, zfs_kernel_param_t *kp)
|
||||
int
|
||||
vdev_raidz_impl_get(char *buffer, size_t size)
|
||||
{
|
||||
int i, cnt = 0;
|
||||
char *fmt;
|
||||
@@ -653,21 +647,18 @@ zfs_vdev_raidz_impl_get(char *buffer, zfs_kernel_param_t *kp)
|
||||
/* list mandatory options */
|
||||
for (i = 0; i < ARRAY_SIZE(math_impl_opts) - 2; i++) {
|
||||
fmt = (impl == math_impl_opts[i].sel) ? "[%s] " : "%s ";
|
||||
cnt += kmem_scnprintf(buffer + cnt, PAGE_SIZE - cnt, fmt,
|
||||
cnt += kmem_scnprintf(buffer + cnt, size - cnt, fmt,
|
||||
math_impl_opts[i].name);
|
||||
}
|
||||
|
||||
/* list all supported implementations */
|
||||
for (i = 0; i < raidz_supp_impl_cnt; i++) {
|
||||
fmt = (i == impl) ? "[%s] " : "%s ";
|
||||
cnt += kmem_scnprintf(buffer + cnt, PAGE_SIZE - cnt, fmt,
|
||||
cnt += kmem_scnprintf(buffer + cnt, size - cnt, fmt,
|
||||
raidz_supp_impl[i]->name);
|
||||
}
|
||||
|
||||
return (cnt);
|
||||
}
|
||||
|
||||
module_param_call(zfs_vdev_raidz_impl, zfs_vdev_raidz_impl_set,
|
||||
zfs_vdev_raidz_impl_get, NULL, 0644);
|
||||
MODULE_PARM_DESC(zfs_vdev_raidz_impl, "Select raidz implementation.");
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user