234c91c508
Authored by: Chris Williamson <chris.williamson@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: John Kennedy <john.kennedy@delphix.com> Reviewed by: Brad Lewis <brad.lewis@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com> Ported-by: Don Brady <don.brady@delphix.com> ZFS channel programs should be able to create snapshots. In addition to the base snapshot functionality, this entails extra logic to handle edge cases which were formerly not possible, such as creating then destroying a snapshot in the same transaction sync. OpenZFS-issue: https://www.illumos.org/issues/8600 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/68089b8b
90 lines
1.9 KiB
C
90 lines
1.9 KiB
C
/*
|
|
* 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, 2017 by Delphix. All rights reserved.
|
|
*/
|
|
|
|
#include <sys/zcp_global.h>
|
|
|
|
#include <sys/lua/lua.h>
|
|
#include <sys/lua/lauxlib.h>
|
|
|
|
typedef struct zcp_errno_global {
|
|
const char *zeg_name;
|
|
int zeg_errno;
|
|
} zcp_errno_global_t;
|
|
|
|
static const zcp_errno_global_t errno_globals[] = {
|
|
{"EPERM", EPERM},
|
|
{"ENOENT", ENOENT},
|
|
{"ESRCH", ESRCH},
|
|
{"EINTR", EINTR},
|
|
{"EIO", EIO},
|
|
{"ENXIO", ENXIO},
|
|
{"E2BIG", E2BIG},
|
|
{"ENOEXEC", ENOEXEC},
|
|
{"EBADF", EBADF},
|
|
{"ECHILD", ECHILD},
|
|
{"EAGAIN", EAGAIN},
|
|
{"ENOMEM", ENOMEM},
|
|
{"EACCES", EACCES},
|
|
{"EFAULT", EFAULT},
|
|
{"ENOTBLK", ENOTBLK},
|
|
{"EBUSY", EBUSY},
|
|
{"EEXIST", EEXIST},
|
|
{"EXDEV", EXDEV},
|
|
{"ENODEV", ENODEV},
|
|
{"ENOTDIR", ENOTDIR},
|
|
{"EISDIR", EISDIR},
|
|
{"EINVAL", EINVAL},
|
|
{"ENFILE", ENFILE},
|
|
{"EMFILE", EMFILE},
|
|
{"ENOTTY", ENOTTY},
|
|
{"ETXTBSY", ETXTBSY},
|
|
{"EFBIG", EFBIG},
|
|
{"ENOSPC", ENOSPC},
|
|
{"ESPIPE", ESPIPE},
|
|
{"EROFS", EROFS},
|
|
{"EMLINK", EMLINK},
|
|
{"EPIPE", EPIPE},
|
|
{"EDOM", EDOM},
|
|
{"ERANGE", ERANGE},
|
|
{"EDEADLK", EDEADLK},
|
|
{"ENOLCK", ENOLCK},
|
|
{"ECANCELED", ECANCELED},
|
|
{"ENOTSUP", ENOTSUP},
|
|
{"EDQUOT", EDQUOT},
|
|
{"ENAMETOOLONG", ENAMETOOLONG},
|
|
{0, 0}
|
|
};
|
|
|
|
static void
|
|
zcp_load_errno_globals(lua_State *state)
|
|
{
|
|
const zcp_errno_global_t *global = errno_globals;
|
|
while (global->zeg_name != NULL) {
|
|
lua_pushnumber(state, (lua_Number)global->zeg_errno);
|
|
lua_setglobal(state, global->zeg_name);
|
|
global++;
|
|
}
|
|
}
|
|
|
|
void
|
|
zcp_load_globals(lua_State *state)
|
|
{
|
|
zcp_load_errno_globals(state);
|
|
}
|