mirror_zfs/tests/zfs-tests/include
Don Brady b83a0e2dc1 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: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Don Brady <don.brady@delphix.com>
Closes #7780
2018-09-02 12:14:01 -07:00
..
.gitignore Add zpool events tests 2017-05-22 12:34:42 -04:00
blkdev.shlib Add support for autoexpand property 2018-07-23 15:40:15 -07:00
commands.cfg Add basic zfs ioc input nvpair validation 2018-09-02 12:14:01 -07:00
default.cfg.in Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
libtest.shlib ZTS: Fix DEV_DSKDIR trim from disk 2018-08-30 14:43:37 -07:00
Makefile.am Tunable directory for zfs runtime scripts 2018-06-07 09:59:59 -07:00
math.shlib Fix dbufstats_001_pos 2018-03-07 09:53:04 -08:00
properties.shlib Disable nbmand tests on kernels w/o support 2017-07-24 11:03:50 -07:00
zpool_script.shlib Clean up (k)shlib and cfg file shebangs 2018-04-08 19:37:22 -07:00