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

Reply via email to