aboutsummaryrefslogtreecommitdiff
path: root/include/sys/zcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sys/zcp.h')
-rw-r--r--include/sys/zcp.h194
1 files changed, 0 insertions, 194 deletions
diff --git a/include/sys/zcp.h b/include/sys/zcp.h
deleted file mode 100644
index 5fcfb6219870..000000000000
--- a/include/sys/zcp.h
+++ /dev/null
@@ -1,194 +0,0 @@
-// SPDX-License-Identifier: CDDL-1.0
-/*
- * CDDL HEADER START
- *
- * This file and its contents are supplied under the terms of the
- * Common Development and Distribution License ("CDDL"), version 1.0.
- * You may only use this file in accordance with the terms of version
- * 1.0 of the CDDL.
- *
- * A full copy of the text of the CDDL should have accompanied this
- * source. A copy of the CDDL is also available via the Internet at
- * http://www.illumos.org/license/CDDL.
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright (c) 2016, 2018 by Delphix. All rights reserved.
- */
-
-#ifndef _SYS_ZCP_H
-#define _SYS_ZCP_H
-
-#include <sys/dmu_tx.h>
-#include <sys/dsl_pool.h>
-
-#include <sys/lua/lua.h>
-#include <sys/lua/lualib.h>
-#include <sys/lua/lauxlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZCP_RUN_INFO_KEY "runinfo"
-
-extern uint64_t zfs_lua_max_instrlimit;
-extern uint64_t zfs_lua_max_memlimit;
-
-int zcp_argerror(lua_State *, int, const char *, ...);
-
-int zcp_eval(const char *, const char *, boolean_t, uint64_t, uint64_t,
- nvpair_t *, nvlist_t *);
-
-int zcp_load_list_lib(lua_State *);
-
-int zcp_load_synctask_lib(lua_State *, boolean_t);
-
-typedef void (zcp_cleanup_t)(void *);
-typedef struct zcp_cleanup_handler {
- zcp_cleanup_t *zch_cleanup_func;
- void *zch_cleanup_arg;
- list_node_t zch_node;
-} zcp_cleanup_handler_t;
-
-typedef struct zcp_alloc_arg {
- boolean_t aa_must_succeed;
- int64_t aa_alloc_remaining;
- int64_t aa_alloc_limit;
-} zcp_alloc_arg_t;
-
-typedef struct zcp_run_info {
- dsl_pool_t *zri_pool;
-
- /*
- * An estimate of the total amount of space consumed by all
- * synctasks we have successfully performed so far in this
- * channel program. Used to generate ENOSPC errors for syncfuncs.
- */
- int zri_space_used;
-
- /*
- * The credentials of the thread which originally invoked the channel
- * program. Since channel programs are always invoked from the synctask
- * thread they should always do permissions checks against this cred
- * rather than the 'current' thread's.
- */
- cred_t *zri_cred;
-
- /*
- * The tx in which this channel program is running.
- */
- dmu_tx_t *zri_tx;
-
- /*
- * The maximum number of Lua instructions the channel program is allowed
- * to execute. If it takes longer than this it will time out. A value
- * of 0 indicates no instruction limit.
- */
- uint64_t zri_maxinstrs;
-
- /*
- * The number of Lua instructions the channel program has executed.
- */
- uint64_t zri_curinstrs;
-
- /*
- * Boolean indicating whether or not the channel program exited
- * because it timed out.
- */
- boolean_t zri_timed_out;
-
- /*
- * Channel program was canceled by user
- */
- boolean_t zri_canceled;
-
- /*
- * Boolean indicating whether or not we are running in syncing
- * context.
- */
- boolean_t zri_sync;
-
- /*
- * List of currently registered cleanup handlers, which will be
- * triggered in the event of a fatal error.
- */
- list_t zri_cleanup_handlers;
-
- /*
- * The Lua state context of our channel program.
- */
- lua_State *zri_state;
-
- /*
- * Lua memory allocator arguments.
- */
- zcp_alloc_arg_t *zri_allocargs;
-
- /*
- * Contains output values from zcp script or error string.
- */
- nvlist_t *zri_outnvl;
-
- /*
- * The keys of this nvlist are datasets which may be zvols and may need
- * to have device minor nodes created. This information is passed from
- * syncing context (where the zvol is created) to open context (where we
- * create the minor nodes).
- */
- nvlist_t *zri_new_zvols;
-
- /*
- * The errno number returned to caller of zcp_eval().
- */
- int zri_result;
-} zcp_run_info_t;
-
-zcp_run_info_t *zcp_run_info(lua_State *);
-zcp_cleanup_handler_t *zcp_register_cleanup(lua_State *, zcp_cleanup_t, void *);
-void zcp_deregister_cleanup(lua_State *, zcp_cleanup_handler_t *);
-void zcp_cleanup(lua_State *);
-
-/*
- * Argument parsing routines for channel program callback functions.
- */
-typedef struct zcp_arg {
- /*
- * The name of this argument. For keyword arguments this is the name
- * functions will use to set the argument. For positional arguments
- * the name has no programmatic meaning, but will appear in error
- * messages and help output.
- */
- const char *za_name;
-
- /*
- * The Lua type this argument should have (e.g. LUA_TSTRING,
- * LUA_TBOOLEAN) see the lua_type() function documentation for a
- * complete list. Calling a function with an argument that does
- * not match the expected type will result in the program terminating.
- */
- const int za_lua_type;
-} zcp_arg_t;
-
-void zcp_parse_args(lua_State *, const char *, const zcp_arg_t *,
- const zcp_arg_t *);
-int zcp_nvlist_to_lua(lua_State *, nvlist_t *, char *, int);
-int zcp_dataset_hold_error(lua_State *, dsl_pool_t *, const char *, int);
-struct dsl_dataset *zcp_dataset_hold(lua_State *, dsl_pool_t *,
- const char *, const void *);
-
-typedef int (zcp_lib_func_t)(lua_State *);
-typedef struct zcp_lib_info {
- const char *name;
- zcp_lib_func_t *func;
- const zcp_arg_t pargs[4];
- const zcp_arg_t kwargs[2];
-} zcp_lib_info_t;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_ZCP_H */