Reviewed by: Matt Ahrens [email protected] Reviewed by: George Wilson [email protected] Reviewed by: John Kennedy [email protected] Reviewed by: Chris Williamson [email protected]
ZFS channel programs (ZCP) adds support for performing compound ZFS administrative actions via Lua scripts in a sandboxed environment with time and memory limits. Upstream bugs: DLPX-39221, DLPX-40120, DLPX-44957, DLPX-46641, DLPX-46247, DLPX-46672, DLPX-47073 Note: this is a reposting of Chris Williamson's (@cwill) work from PR https://github.com/openzfs/openzfs/pull/198, rebased onto latest master and with a small change in the timeout semantics to make the results of a timeout more deterministic (by changing from a time-based limit to a Lua instruction count limit). You can view, comment on, or merge this pull request online at: https://github.com/openzfs/openzfs/pull/397 -- Commit Summary -- * 7431 ZFS Channel Programs * DLPX-47893 memory leak in zcp_synctask_promote() * DLPX-47966 channel programs don't handle oversized allocations gracefully * DLPX-48332 zcp_synctask_wrapper() leaks error list on IO error * Add header comment * add tee to test commands file * DLPX-50499 ZFS channel programs timeouts should be based on Lua instruction count * fix Makefile.files after rebase * added zfs/lua to SPARC build * fixing tests after rebase -- File Changes -- M usr/src/cmd/mdb/intel/amd64/zfs/Makefile (3) M usr/src/cmd/mdb/intel/ia32/libzpool/Makefile (5) M usr/src/cmd/mdb/intel/ia32/zfs/Makefile (3) M usr/src/cmd/mdb/sparc/v7/libzpool/Makefile (5) M usr/src/cmd/mdb/sparc/v9/libzpool/Makefile (5) M usr/src/cmd/mdb/sparc/v9/zfs/Makefile (3) M usr/src/cmd/truss/codes.c (4) M usr/src/cmd/zdb/Makefile.com (2) M usr/src/cmd/zfs/zfs_main.c (206) M usr/src/cmd/zhack/Makefile.com (3) M usr/src/cmd/zinject/Makefile.com (1) M usr/src/cmd/zpool/zpool_main.c (7) M usr/src/cmd/ztest/Makefile.com (3) M usr/src/common/zfs/zfs_prop.c (14) M usr/src/lib/libzfs/common/libzfs_dataset.c (94) M usr/src/lib/libzfs/common/libzfs_impl.h (1) M usr/src/lib/libzfs/common/libzfs_util.c (4) M usr/src/lib/libzfs_core/common/libzfs_core.c (62) M usr/src/lib/libzfs_core/common/libzfs_core.h (5) M usr/src/lib/libzfs_core/common/mapfile-vers (3) M usr/src/lib/libzpool/Makefile.com (12) M usr/src/lib/libzpool/common/kernel.c (1) M usr/src/lib/libzpool/common/sys/zfs_context.h (6) M usr/src/man/man1m/Makefile (3) A usr/src/man/man1m/zfs-program.1m (480) M usr/src/man/man1m/zfs.1m (42) M usr/src/pkg/manifests/system-file-system-zfs.mf (3) M usr/src/pkg/manifests/system-test-zfstest.mf (179) M usr/src/test/test-runner/cmd/run (26) M usr/src/test/zfs-tests/include/commands.cfg (1) M usr/src/test/zfs-tests/include/libtest.shlib (4) M usr/src/test/zfs-tests/runfiles/delphix.run (7) A usr/src/test/zfs-tests/tests/functional/channel_program/Makefile (42) A usr/src/test/zfs-tests/tests/functional/channel_program/channel_common.kshlib (100) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/Makefile (68) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/cleanup.ksh (19) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/nvlist_to_lua.c (304) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/setup.ksh (21) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.ksh (30) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.out (1) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.args_to_lua.zcp (25) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.err (4) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.ksh (30) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.divide_by_zero.zcp (16) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.integer_illegal.ksh (41) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.integer_overflow.ksh (32) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.language_functions_neg.ksh (52) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.language_functions_pos.ksh (42) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.ksh (30) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.out (1) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.large_prog.zcp (280) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.memory_limit.ksh (74) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_neg.ksh (24) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_neg.zcp (769) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_pos.ksh (23) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.nested_pos.zcp (71) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.nvlist_to_lua.ksh (30) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive.zcp (31) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive_neg.ksh (24) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.recursive_pos.ksh (23) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.return_nvlist_neg.ksh (65) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.return_nvlist_pos.ksh (59) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.return_recursive_table.ksh (33) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.return_recursive_table.zcp (21) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.timeout.ksh (56) A usr/src/test/zfs-tests/tests/functional/channel_program/lua_core/tst.timeout.zcp (22) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/Makefile (45) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/cleanup.ksh (19) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/setup.ksh (21) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.destroy_fs.ksh (45) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.destroy_snap.ksh (44) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_count_and_limit.ksh (89) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.ksh (40) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.out (4) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_index_props.zcp (65) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_mountpoint.ksh (88) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_neg.ksh (43) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.ksh (52) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.out (5) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_number_props.zcp (100) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.ksh (45) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.out (5) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_string_props.zcp (73) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_type.ksh (54) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_userquota.ksh (80) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.get_written.ksh (57) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_children.ksh (125) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_clones.ksh (117) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_snapshots.ksh (116) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.list_system_props.ksh (54) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.parse_args_neg.ksh (48) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_conflict.ksh (55) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_conflict.zcp (23) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_multiple.ksh (71) A usr/src/test/zfs-tests/tests/functional/channel_program/synctask_core/tst.promote_simple.ksh (47) A usr/src/test/zfs-tests/tests/functional/cli_user/misc/zfs_channel_001_neg.ksh (46) M usr/src/tools/quick/make-zfs (5) M usr/src/uts/common/Makefile.files (36) M usr/src/uts/common/Makefile.rules (10) M usr/src/uts/common/fs/zfs/dsl_dataset.c (506) M usr/src/uts/common/fs/zfs/dsl_destroy.c (190) M usr/src/uts/common/fs/zfs/dsl_dir.c (146) A usr/src/uts/common/fs/zfs/lua/lapi.c (1283) A usr/src/uts/common/fs/zfs/lua/lapi.h (24) A usr/src/uts/common/fs/zfs/lua/lauxlib.c (791) A usr/src/uts/common/fs/zfs/lua/lauxlib.h (176) A usr/src/uts/common/fs/zfs/lua/lbaselib.c (292) A usr/src/uts/common/fs/zfs/lua/lbitlib.c (212) A usr/src/uts/common/fs/zfs/lua/lcode.c (885) A usr/src/uts/common/fs/zfs/lua/lcode.h (83) A usr/src/uts/common/fs/zfs/lua/lcompat.c (102) A usr/src/uts/common/fs/zfs/lua/lcorolib.c (154) A usr/src/uts/common/fs/zfs/lua/lctype.c (52) A usr/src/uts/common/fs/zfs/lua/lctype.h (93) A usr/src/uts/common/fs/zfs/lua/ldebug.c (607) A usr/src/uts/common/fs/zfs/lua/ldebug.h (34) A usr/src/uts/common/fs/zfs/lua/ldo.c (685) A usr/src/uts/common/fs/zfs/lua/ldo.h (46) A usr/src/uts/common/fs/zfs/lua/ldump.c (173) A usr/src/uts/common/fs/zfs/lua/lfunc.c (161) A usr/src/uts/common/fs/zfs/lua/lfunc.h (33) A usr/src/uts/common/fs/zfs/lua/lgc.c (1220) A usr/src/uts/common/fs/zfs/lua/lgc.h (157) A usr/src/uts/common/fs/zfs/lua/llex.c (528) A usr/src/uts/common/fs/zfs/lua/llex.h (78) A usr/src/uts/common/fs/zfs/lua/llimits.h (308) A usr/src/uts/common/fs/zfs/lua/lmem.c (99) A usr/src/uts/common/fs/zfs/lua/lmem.h (57) A usr/src/uts/common/fs/zfs/lua/lobject.c (283) A usr/src/uts/common/fs/zfs/lua/lobject.h (606) A usr/src/uts/common/fs/zfs/lua/lopcodes.c (107) A usr/src/uts/common/fs/zfs/lua/lopcodes.h (288) A usr/src/uts/common/fs/zfs/lua/lparser.c (1637) A usr/src/uts/common/fs/zfs/lua/lparser.h (119) A usr/src/uts/common/fs/zfs/lua/lstate.c (321) A usr/src/uts/common/fs/zfs/lua/lstate.h (228) A usr/src/uts/common/fs/zfs/lua/lstring.c (185) A usr/src/uts/common/fs/zfs/lua/lstring.h (46) A usr/src/uts/common/fs/zfs/lua/lstrlib.c (0) M usr/src/uts/common/fs/zfs/lua/ltable.c (0) M usr/src/uts/common/fs/zfs/lua/ltable.h (0) M usr/src/uts/common/fs/zfs/lua/ltablib.c (0) M usr/src/uts/common/fs/zfs/lua/ltm.c (0) M usr/src/uts/common/fs/zfs/lua/ltm.h (0) M usr/src/uts/common/fs/zfs/lua/lua.h (0) M usr/src/uts/common/fs/zfs/lua/luaconf.h (0) M usr/src/uts/common/fs/zfs/lua/lualib.h (0) M usr/src/uts/common/fs/zfs/lua/lundump.c (0) M usr/src/uts/common/fs/zfs/lua/lundump.h (0) M usr/src/uts/common/fs/zfs/lua/lvm.c (0) M usr/src/uts/common/fs/zfs/lua/lvm.h (0) M usr/src/uts/common/fs/zfs/lua/lzio.c (0) M usr/src/uts/common/fs/zfs/lua/lzio.h (0) M usr/src/uts/common/fs/zfs/sys/dsl_dataset.h (0) M usr/src/uts/common/fs/zfs/sys/dsl_destroy.h (0) M usr/src/uts/common/fs/zfs/sys/dsl_dir.h (0) M usr/src/uts/common/fs/zfs/sys/zcp.h (0) M usr/src/uts/common/fs/zfs/sys/zcp_global.h (0) M usr/src/uts/common/fs/zfs/sys/zcp_iter.h (0) M usr/src/uts/common/fs/zfs/sys/zcp_prop.h (0) M usr/src/uts/common/fs/zfs/sys/zfs_ioctl.h (0) M usr/src/uts/common/fs/zfs/sys/zfs_vfsops.h (0) M usr/src/uts/common/fs/zfs/zcp.c (0) M usr/src/uts/common/fs/zfs/zcp_get.c (0) M usr/src/uts/common/fs/zfs/zcp_global.c (0) M usr/src/uts/common/fs/zfs/zcp_iter.c (0) M usr/src/uts/common/fs/zfs/zcp_synctask.c (0) M usr/src/uts/common/fs/zfs/zfs_ioctl.c (0) M usr/src/uts/common/fs/zfs/zfs_vfsops.c (0) M usr/src/uts/common/sys/fs/zfs.h (0) M usr/src/uts/intel/zfs/Makefile (0) M usr/src/uts/sparc/zfs/Makefile (0) -- Patch Links -- https://github.com/openzfs/openzfs/pull/397.patch https://github.com/openzfs/openzfs/pull/397.diff -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/openzfs/openzfs/pull/397 ------------------------------------------ openzfs-developer Archives: https://openzfs.topicbox.com/groups/developer/discussions/Tffb276f83a8ecdd2-M6e41af1931e7c6c0e412af96 Powered by Topicbox: https://topicbox.com
