/*
* Copyright (c) 2016 Red Hat, Inc. <http://www.redhat.com>
* This file is part of GlusterFS.
*
* This file is licensed to you under your choice of the GNU Lesser
* General Public License, version 3 or any later version (LGPLv3 or
* later), or the GNU General Public License, version 2 (GPLv2), in all
* cases as published by the Free Software Foundation.
*/
#ifdef RPC_XDR
%#include "rpc-pragmas.h"
#endif
%#include <glusterfs/compat.h>
/* NOTE: add members ONLY at the end (just before _MAXVALUE) */
/*
* OTHER NOTE: fop_enum_to_str and fop_enum_to_pri_str (in common-utils.h) also
* contain lists of fops, so if you update this list UPDATE THOSE TOO.
*/
enum glusterfs_fop_t {
GF_FOP_NULL = 0,
GF_FOP_STAT,
GF_FOP_READLINK,
GF_FOP_MKNOD,
GF_FOP_MKDIR,
GF_FOP_UNLINK,
GF_FOP_RMDIR,
GF_FOP_SYMLINK,
GF_FOP_RENAME,
GF_FOP_LINK,
GF_FOP_TRUNCATE,
GF_FOP_OPEN,
GF_FOP_READ,
GF_FOP_WRITE,
GF_FOP_STATFS,
GF_FOP_FLUSH,
GF_FOP_FSYNC, /* 16 */
GF_FOP_SETXATTR,
GF_FOP_GETXATTR,
GF_FOP_REMOVEXATTR,
GF_FOP_OPENDIR,
GF_FOP_FSYNCDIR,
GF_FOP_ACCESS,
GF_FOP_CREATE,
GF_FOP_FTRUNCATE,
GF_FOP_FSTAT, /* 25 */
GF_FOP_LK,
GF_FOP_LOOKUP,
GF_FOP_READDIR,
GF_FOP_INODELK,
GF_FOP_FINODELK,
GF_FOP_ENTRYLK,
GF_FOP_FENTRYLK,
GF_FOP_XATTROP,
GF_FOP_FXATTROP,
GF_FOP_FGETXATTR,
GF_FOP_FSETXATTR,
GF_FOP_RCHECKSUM,
GF_FOP_SETATTR,
GF_FOP_FSETATTR,
GF_FOP_READDIRP,
GF_FOP_FORGET,
GF_FOP_RELEASE,
GF_FOP_RELEASEDIR,
GF_FOP_GETSPEC,
GF_FOP_FREMOVEXATTR,
GF_FOP_FALLOCATE,
GF_FOP_DISCARD,
GF_FOP_ZEROFILL,
GF_FOP_IPC,
GF_FOP_SEEK,
GF_FOP_LEASE,
GF_FOP_COMPOUND,
GF_FOP_GETACTIVELK,
GF_FOP_SETACTIVELK,
GF_FOP_PUT,
GF_FOP_ICREATE,
GF_FOP_NAMELINK,
GF_FOP_COPY_FILE_RANGE,
GF_FOP_MAXVALUE
};
/* Note: Removed event GF_EVENT_CHILD_MODIFIED=8, hence
*to preserve backward compatibiliy, GF_EVENT_CLEANUP = 9
*/
enum glusterfs_event_t {
GF_EVENT_PARENT_UP = 1,
GF_EVENT_POLLIN,
GF_EVENT_POLLOUT,
GF_EVENT_POLLERR,
GF_EVENT_CHILD_UP,
GF_EVENT_CHILD_DOWN,
GF_EVENT_CHILD_CONNECTING,
GF_EVENT_CLEANUP = 9,
GF_EVENT_TRANSPORT_CONNECTED,
GF_EVENT_VOLFILE_MODIFIED,
GF_EVENT_GRAPH_NEW,
GF_EVENT_TRANSLATOR_INFO,
GF_EVENT_TRANSLATOR_OP,
GF_EVENT_AUTH_FAILED,
GF_EVENT_VOLUME_DEFRAG,
GF_EVENT_PARENT_DOWN,
GF_EVENT_VOLUME_BARRIER_OP,
GF_EVENT_UPCALL,
GF_EVENT_SCRUB_STATUS,
GF_EVENT_SOME_DESCENDENT_DOWN,
GF_EVENT_SCRUB_ONDEMAND,
GF_EVENT_SOME_DESCENDENT_UP,
GF_EVENT_CHILD_PING,
GF_EVENT_MAXVAL
};
/* List of compound fops. Add fops at the end. */
enum glusterfs_compound_fop_t {
GF_CFOP_NON_PREDEFINED = 0, /* needs single FOP inspection */
GF_CFOP_XATTROP_WRITEV,
GF_CFOP_XATTROP_UNLOCK,
GF_CFOP_PUT, /* create+write+setxattr+fsync+close+rename */
GF_CFOP_MAXVALUE
};
enum glusterfs_mgmt_t {
GF_MGMT_NULL = 0,
GF_MGMT_MAXVALUE
};
enum gf_op_type_t {
GF_OP_TYPE_NULL = 0,
GF_OP_TYPE_FOP,
GF_OP_TYPE_MGMT,
GF_OP_TYPE_MAX
};
/* NOTE: all the miscellaneous flags used by GlusterFS should be listed here */
enum glusterfs_lk_cmds_t {
GF_LK_GETLK = 0,
GF_LK_SETLK,
GF_LK_SETLKW,
GF_LK_RESLK_LCK,
GF_LK_RESLK_LCKW,
GF_LK_RESLK_UNLCK,
GF_LK_GETLK_FD
};
enum glusterfs_lk_types_t {
GF_LK_F_RDLCK = 0,
GF_LK_F_WRLCK,
GF_LK_F_UNLCK,
GF_LK_EOL
};
/* Lease Types */
enum gf_lease_types_t {
NONE = 0,
GF_RD_LEASE = 1,
GF_RW_LEASE = 2,
GF_LEASE_MAX_TYPE
};
/* Lease cmds */
enum gf_lease_cmds_t {
GF_GET_LEASE = 1,
GF_SET_LEASE = 2,
GF_UNLK_LEASE = 3
};
%#define LEASE_ID_SIZE 16 /* 128bits */
struct gf_lease {
gf_lease_cmds_t cmd;
gf_lease_types_t lease_type;
char lease_id[LEASE_ID_SIZE];
unsigned int lease_flags;
};
enum glusterfs_lk_recovery_cmds_t {
F_RESLK_LCK = 200,
F_RESLK_LCKW,
F_RESLK_UNLCK,
F_GETLK_FD
};
enum gf_lk_domain_t {
GF_LOCK_POSIX,
GF_LOCK_INTERNAL
};
enum entrylk_cmd {
ENTRYLK_LOCK,
ENTRYLK_UNLOCK,
ENTRYLK_LOCK_NB
};
enum entrylk_type {
ENTRYLK_RDLCK,
ENTRYLK_WRLCK
};
%#define GF_MAX_LOCK_OWNER_LEN 1024 /* 1kB as per NLM */
/* 16strings-16strings-... */
%#define GF_LKOWNER_BUF_SIZE ((GF_MAX_LOCK_OWNER_LEN * 2) + (GF_MAX_LOCK_OWNER_LEN / 8))
struct gf_lkowner_t {
int len;
char data[GF_MAX_LOCK_OWNER_LEN];
};
enum gf_xattrop_flags_t {
GF_XATTROP_ADD_ARRAY,
GF_XATTROP_ADD_ARRAY64,
GF_XATTROP_OR_ARRAY,
GF_XATTROP_AND_ARRAY,
GF_XATTROP_GET_AND_SET,
GF_XATTROP_ADD_ARRAY_WITH_DEFAULT,
GF_XATTROP_ADD_ARRAY64_WITH_DEFAULT
};
enum gf_seek_what_t {
GF_SEEK_DATA,
GF_SEEK_HOLE
};
enum gf_upcall_flags_t {
GF_UPCALL_NULL,
GF_UPCALL,
GF_UPCALL_CI_STAT,
GF_UPCALL_CI_XATTR,
GF_UPCALL_CI_RENAME,
GF_UPCALL_CI_NLINK,
GF_UPCALL_CI_FORGET,
GF_UPCALL_LEASE_RECALL,
GF_UPCALL_FLAGS_MAXVALUE
};
enum gf_dict_data_type_t {
GF_DATA_TYPE_UNKNOWN,
GF_DATA_TYPE_STR_OLD, /* Will be set by volgen and dict-serialize
and unserialize. Used to reduce warnings
if one is using old protocol */
GF_DATA_TYPE_INT,
GF_DATA_TYPE_UINT,
GF_DATA_TYPE_DOUBLE,
GF_DATA_TYPE_STR,
GF_DATA_TYPE_PTR,
GF_DATA_TYPE_GFUUID,
GF_DATA_TYPE_IATT,
GF_DATA_TYPE_MDATA,
GF_DATA_TYPE_MAX
};