diff options
| author | Niels de Vos <ndevos@redhat.com> | 2016-04-18 21:47:18 +0200 | 
|---|---|---|
| committer | Jeff Darcy <jdarcy@redhat.com> | 2016-04-28 13:51:12 -0700 | 
| commit | 2f945b86d30eca3a32f5e8e42fbe692ddf4b55be (patch) | |
| tree | 61765dd2febe2fa5416fdf6e37625e4d66d3f094 /rpc | |
| parent | 40e96c17647b281264783520f8fbdd9056332b4c (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')
| -rw-r--r-- | rpc/xdr/src/.gitignore | 2 | ||||
| -rw-r--r-- | rpc/xdr/src/Makefile.am | 11 | ||||
| -rw-r--r-- | rpc/xdr/src/acl3-xdr.x | 1 | ||||
| -rw-r--r-- | rpc/xdr/src/glusterfs-fops.x | 196 | ||||
| -rw-r--r-- | rpc/xdr/src/glusterfs3-xdr.x | 3 | ||||
| -rw-r--r-- | rpc/xdr/src/mount3udp.x | 2 | ||||
| -rw-r--r-- | rpc/xdr/src/nlm4-xdr.x | 2 | ||||
| -rw-r--r-- | rpc/xdr/src/rpc-common-xdr.x | 2 | 
8 files changed, 218 insertions, 1 deletions
diff --git a/rpc/xdr/src/.gitignore b/rpc/xdr/src/.gitignore index 06284c4afe2..df738be6c07 100644 --- a/rpc/xdr/src/.gitignore +++ b/rpc/xdr/src/.gitignore @@ -8,6 +8,8 @@ glusterd1-xdr.c  glusterd1-xdr.h  glusterfs3-xdr.c  glusterfs3-xdr.h +glusterfs-fops.h +glusterfs-fops.c  mount3udp.c  mount3udp.h  nlm4-xdr.c diff --git a/rpc/xdr/src/Makefile.am b/rpc/xdr/src/Makefile.am index 56e64ad3797..e0f9c28be86 100644 --- a/rpc/xdr/src/Makefile.am +++ b/rpc/xdr/src/Makefile.am @@ -1,6 +1,6 @@  XDRSOURCES = glusterfs3-xdr.c cli1-xdr.c nlm4-xdr.c nsm-xdr.c \  	rpc-common-xdr.c glusterd1-xdr.c acl3-xdr.c portmap-xdr.c \ -	mount3udp.c changelog-xdr.c +	mount3udp.c changelog-xdr.c glusterfs-fops.c  XDRHEADERS = $(XDRSOURCES:.c=.h)  XDRGENFILES = $(XDRSOURCES:.c=.x) @@ -30,6 +30,15 @@ EXTRA_DIST = $(XDRGENFILES)  CLEANFILES = $(XDRSOURCES) $(XDRHEADERS)  xdrsrc=$(top_srcdir)/rpc/xdr/src +glusterfs-fops.c: glusterfs-fops.x glusterfs-fops.h +	$(top_srcdir)/build-aux/xdrgen source $(xdrsrc)/`basename ${@:.c=.x}` + +glusterfs-fops.h: glusterfs-fops.x +	$(top_srcdir)/build-aux/xdrgen header $(xdrsrc)/`basename ${@:.h=.x}` + +$(top_srcdir)/libglusterfs/src/glusterfs-fops.h: glusterfs-fops.h +	cp $(xdrsrc)/`basename $@` $(top_srcdir)/libglusterfs/src/ +  glusterfs3-xdr.c: glusterfs3-xdr.x glusterfs3-xdr.h  	$(top_srcdir)/build-aux/xdrgen source $(xdrsrc)/`basename ${@:.c=.x}` diff --git a/rpc/xdr/src/acl3-xdr.x b/rpc/xdr/src/acl3-xdr.x index 8ca6e84b525..39388e07c7e 100644 --- a/rpc/xdr/src/acl3-xdr.x +++ b/rpc/xdr/src/acl3-xdr.x @@ -8,6 +8,7 @@   * cases as published by the Free Software Foundation.   */ +%#include "xdr-nfs3.h"  struct aclentry {  	int type; 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 +}; diff --git a/rpc/xdr/src/glusterfs3-xdr.x b/rpc/xdr/src/glusterfs3-xdr.x index 1257ea3bcdf..2240a460399 100644 --- a/rpc/xdr/src/glusterfs3-xdr.x +++ b/rpc/xdr/src/glusterfs3-xdr.x @@ -1,3 +1,6 @@ +%#include "rpc-common-xdr.h" +%#include "glusterfs-fops.h" +  #define GF_REQUEST_MAXGROUPS    16  struct gf_statfs {  	u_quad_t bsize; diff --git a/rpc/xdr/src/mount3udp.x b/rpc/xdr/src/mount3udp.x index 888c5312071..7fbe3ff523d 100644 --- a/rpc/xdr/src/mount3udp.x +++ b/rpc/xdr/src/mount3udp.x @@ -12,6 +12,8 @@   * mount3udp_svc.c is heavily modified though   */ +%#include "xdr-nfs3.h" +  const MNTUDPPATHLEN = 1024;  typedef string mntudpdirpath<MNTPATHLEN>; diff --git a/rpc/xdr/src/nlm4-xdr.x b/rpc/xdr/src/nlm4-xdr.x index e2be3b7f0f7..9c308d80474 100644 --- a/rpc/xdr/src/nlm4-xdr.x +++ b/rpc/xdr/src/nlm4-xdr.x @@ -10,6 +10,8 @@  /* .x file defined as according to the RFC */ +%#include "xdr-common.h" +  const MAXNETOBJ_SZ = 1024;  const LM_MAXSTRLEN = 1024;  const MAXNAMELEN = 1025; diff --git a/rpc/xdr/src/rpc-common-xdr.x b/rpc/xdr/src/rpc-common-xdr.x index e94077543b7..c2b25705d20 100644 --- a/rpc/xdr/src/rpc-common-xdr.x +++ b/rpc/xdr/src/rpc-common-xdr.x @@ -1,6 +1,8 @@  /* This file has definition of few XDR structures which are   * not captured in any section specific file */ +%#include "xdr-common.h" +  struct auth_glusterfs_parms_v2 {          int pid;          unsigned int uid;  | 
