summaryrefslogtreecommitdiffstats
path: root/rpc/xdr/src/glusterfs-fops.x
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2016-04-18 21:47:18 +0200
committerJeff Darcy <jdarcy@redhat.com>2016-04-28 13:51:12 -0700
commit2f945b86d30eca3a32f5e8e42fbe692ddf4b55be (patch)
tree61765dd2febe2fa5416fdf6e37625e4d66d3f094 /rpc/xdr/src/glusterfs-fops.x
parent40e96c17647b281264783520f8fbdd9056332b4c (diff)
rpc: split FOPs enum from glusterfs.h
Moving the enumeration of FOPs and some of the other parts that are defining the network protocol to the rpc/xdr/ section. These structures need some care when modifications are made, moving them out of the common glusterfs.h header helps with that. The protocol definition structures are generated in a new glusterfs-fops header. This file is present in rpc/xdr/src/ and libglusterfs/src/, it is a little ugly, but prevents the need to update all Makefile.am files with the additional -I option for finding the new header file. The generation of the .c and .h files from the .x descriptions needed small modifications to accommodate these changes. The build/xdrgen script was improved slightly for this. The .c and .h files are incorrectly in the $(top_srcdir), instead of $(top_builddir). This is an existing issue, and bug 1330604 has been filed to get that addressed. Change-Id: I98fc8cf7e4b631082c7b203b5a0a77111bec1fb9 BUG: 1328502 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/14032 Smoke: Gluster Build System <jenkins@build.gluster.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'rpc/xdr/src/glusterfs-fops.x')
-rw-r--r--rpc/xdr/src/glusterfs-fops.x196
1 files changed, 196 insertions, 0 deletions
diff --git a/rpc/xdr/src/glusterfs-fops.x b/rpc/xdr/src/glusterfs-fops.x
new file mode 100644
index 00000000000..1216f9d7460
--- /dev/null
+++ b/rpc/xdr/src/glusterfs-fops.x
@@ -0,0 +1,196 @@
+/* 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_MAXVALUE
+};
+
+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_CHILD_MODIFIED,
+ GF_EVENT_TRANSPORT_CLEANUP,
+ 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_CHILD_DOWN,
+ 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
+};