diff options
author | Toomas Soome <tsoome@FreeBSD.org> | 2020-06-23 06:42:39 +0000 |
---|---|---|
committer | Toomas Soome <tsoome@FreeBSD.org> | 2020-06-23 06:42:39 +0000 |
commit | a14844e0d67a69239e522de342c6690428edccd0 (patch) | |
tree | 6597aa42b3e2b571f966faa50d16d1c39e35c7c7 /cddl/contrib/opensolaris/cmd/stat/common/statcommon.h | |
parent | b40dd828bdc96959cf5fa90d02fc00d96c54fbe4 (diff) | |
download | src-a14844e0d67a69239e522de342c6690428edccd0.tar.gz src-a14844e0d67a69239e522de342c6690428edccd0.zip |
MFOpenZFS: Add basic zfs ioc input nvpair validation
We want newer versions of libzfs_core to run against an existing
zfs kernel module (i.e. a deferred reboot or module reload after
an update).
Programmatically document, via a zfs_ioc_key_t, the valid arguments
for the ioc commands that rely on nvpair input arguments (i.e. non
legacy commands from libzfs_core). Automatically verify the expected
pairs before dispatching a command.
This initial phase focuses on the non-legacy ioctls. A follow-on
change can address the legacy ioctl input from the zfs_cmd_t.
The zfs_ioc_key_t for zfs_keys_channel_program looks like:
static const zfs_ioc_key_t zfs_keys_channel_program[] = {
{"program", DATA_TYPE_STRING, 0},
{"arg", DATA_TYPE_UNKNOWN, 0},
{"sync", DATA_TYPE_BOOLEAN_VALUE, ZK_OPTIONAL},
{"instrlimit", DATA_TYPE_UINT64, ZK_OPTIONAL},
{"memlimit", DATA_TYPE_UINT64, ZK_OPTIONAL},
};
Introduce four input errors to identify specific input failures
(in addition to generic argument value errors like EINVAL, ERANGE,
EBADF, and E2BIG).
ZFS_ERR_IOC_CMD_UNAVAIL the ioctl number is not supported by kernel
ZFS_ERR_IOC_ARG_UNAVAIL an input argument is not supported by kernel
ZFS_ERR_IOC_ARG_REQUIRED a required input argument is missing
ZFS_ERR_IOC_ARG_BADTYPE an input argument has an invalid type
Reviewed by: allanjude
Obtained from: OpenZFS
Sponsored by: Netflix, Klara Inc.
Differential Revision: https://reviews.freebsd.org/D25393
Notes
Notes:
svn path=/head/; revision=362531
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/stat/common/statcommon.h')
0 files changed, 0 insertions, 0 deletions