summaryrefslogtreecommitdiffstats
path: root/rpc/xdr/src/glusterfs4-xdr.x
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/xdr/src/glusterfs4-xdr.x')
-rw-r--r--rpc/xdr/src/glusterfs4-xdr.x801
1 files changed, 776 insertions, 25 deletions
diff --git a/rpc/xdr/src/glusterfs4-xdr.x b/rpc/xdr/src/glusterfs4-xdr.x
index 9e3223b58b5..bf92c8db9de 100644
--- a/rpc/xdr/src/glusterfs4-xdr.x
+++ b/rpc/xdr/src/glusterfs4-xdr.x
@@ -16,6 +16,36 @@
%#include "glusterfs3-xdr.h"
+/* Need to consume iattx and new dict in all the fops */
+struct gfx_iattx {
+ opaque ia_gfid[16];
+
+ unsigned hyper ia_flags;
+ unsigned hyper ia_ino; /* inode number */
+ unsigned hyper ia_dev; /* backing device ID */
+ unsigned hyper ia_rdev; /* device ID (if special file) */
+ unsigned hyper ia_size; /* file size in bytes */
+ unsigned hyper ia_blocks; /* number of 512B blocks allocated */
+ unsigned hyper ia_attributes; /* chattr related:compressed, immutable,
+ * append only, encrypted etc.*/
+ unsigned hyper ia_attributes_mask; /* Mask for the attributes */
+
+ hyper ia_atime; /* last access time */
+ hyper ia_mtime; /* last modification time */
+ hyper ia_ctime; /* last status change time */
+ hyper ia_btime; /* creation time. Fill using statx */
+
+ unsigned int ia_atime_nsec;
+ unsigned int ia_mtime_nsec;
+ unsigned int ia_ctime_nsec;
+ unsigned int ia_btime_nsec;
+ unsigned int ia_nlink; /* Link count */
+ unsigned int ia_uid; /* user ID of owner */
+ unsigned int ia_gid; /* group ID of owner */
+ unsigned int ia_blksize; /* blocksize for filesystem I/O */
+ unsigned int mode; /* type of file and rwx mode */
+};
+
union gfx_value switch (gf_dict_data_type_t type) {
case GF_DATA_TYPE_INT:
hyper value_int;
@@ -26,9 +56,9 @@ union gfx_value switch (gf_dict_data_type_t type) {
case GF_DATA_TYPE_STR:
opaque val_string<>;
case GF_DATA_TYPE_IATT:
- gf_iatt iatt;
+ gfx_iattx iatt;
case GF_DATA_TYPE_GFUUID:
- opaque uuid[20];
+ opaque uuid[16];
case GF_DATA_TYPE_PTR:
opaque other<>;
};
@@ -64,52 +94,773 @@ struct gfx_dict_pair {
};
struct gfx_dict {
- unsigned int count;
+ unsigned int xdr_size;
+ int count;
gfx_dict_pair pairs<>;
};
-/* fops */
- struct gfs3_fsetattr_req_v2 {
+/* FOPS */
+struct gfx_common_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_common_iatt_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata;
+ gfx_iattx stat;
+};
+
+struct gfx_common_2iatt_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata;
+ gfx_iattx prestat;
+ gfx_iattx poststat;
+};
+
+struct gfx_common_3iatt_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gfx_iattx stat;
+ gfx_iattx preparent;
+ gfx_iattx postparent;
+};
+
+struct gfx_fsetattr_req {
opaque gfid[16];
hyper fd;
- struct gf_iatt stbuf;
+ gfx_iattx stbuf;
int valid;
- opaque xdata<>; /* Extra data */
-} ;
+ gfx_dict xdata; /* Extra data */
+};
- struct gfs3_rchecksum_req_v2 {
+struct gfx_rchecksum_req {
opaque gfid[16];
hyper fd;
unsigned hyper offset;
unsigned int len;
- opaque xdata<>; /* Extra data */
+ unsigned int flags;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_icreate_req {
+ opaque gfid[16];
+ unsigned int mode;
+ gfx_dict xdata;
+};
+
+struct gfx_namelink_req {
+ opaque pargfid[16];
+ string bname<>;
+ gfx_dict xdata;
+};
+
+/* Define every fops */
+/* Changes from Version 3:
+ 1. Dict has its own type instead of being opaque
+ 2. Iattx instead of iatt on wire
+ 3. gfid has 4 extra bytes so it can be used for future
+*/
+struct gfx_stat_req {
+ opaque gfid[16];
+ gfx_dict xdata;
+};
+
+struct gfx_readlink_req {
+ opaque gfid[16];
+ unsigned int size;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_readlink_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gfx_iattx buf;
+ string path<>; /* NULL terminated */
+};
+
+struct gfx_mknod_req {
+ opaque pargfid[16];
+ u_quad_t dev;
+ unsigned int mode;
+ unsigned int umask;
+ string bname<>; /* NULL terminated */
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_mkdir_req {
+ opaque pargfid[16];
+ unsigned int mode;
+ unsigned int umask;
+ string bname<>; /* NULL terminated */
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_unlink_req {
+ opaque pargfid[16];
+ string bname<>; /* NULL terminated */
+ unsigned int xflags;
+ gfx_dict xdata; /* Extra data */
+};
+
+
+struct gfx_rmdir_req {
+ opaque pargfid[16];
+ int xflags;
+ string bname<>; /* NULL terminated */
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_symlink_req {
+ opaque pargfid[16];
+ string bname<>;
+ unsigned int umask;
+ string linkname<>;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_rename_req {
+ opaque oldgfid[16];
+ opaque newgfid[16];
+ string oldbname<>; /* NULL terminated */
+ string newbname<>; /* NULL terminated */
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_rename_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gfx_iattx stat;
+ gfx_iattx preoldparent;
+ gfx_iattx postoldparent;
+ gfx_iattx prenewparent;
+ gfx_iattx postnewparent;
+};
+
+
+ struct gfx_link_req {
+ opaque oldgfid[16];
+ opaque newgfid[16];
+ string newbname<>;
+ gfx_dict xdata; /* Extra data */
+};
+
+ struct gfx_truncate_req {
+ opaque gfid[16];
+ u_quad_t offset;
+ gfx_dict xdata; /* Extra data */
+};
+
+ struct gfx_open_req {
+ opaque gfid[16];
+ unsigned int flags;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_open_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ quad_t fd;
+};
+
+struct gfx_opendir_req {
+ opaque gfid[16];
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_read_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ unsigned int size;
+ unsigned int flag;
+ gfx_dict xdata; /* Extra data */
+};
+ struct gfx_read_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_iattx stat;
+ unsigned int size;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_lookup_req {
+ opaque gfid[16];
+ opaque pargfid[16];
+ unsigned int flags;
+ string bname<>;
+ gfx_dict xdata; /* Extra data */
+};
+
+
+ struct gfx_write_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ unsigned int size;
+ unsigned int flag;
+ gfx_dict xdata; /* Extra data */
+};
+
+ struct gfx_statfs_req {
+ opaque gfid[16];
+ gfx_dict xdata; /* Extra data */
+} ;
+ struct gfx_statfs_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gf_statfs statfs;
+} ;
+
+ struct gfx_lk_req {
+ opaque gfid[16];
+ int64_t fd;
+ unsigned int cmd;
+ unsigned int type;
+ gf_proto_flock flock;
+ gfx_dict xdata; /* Extra data */
+} ;
+ struct gfx_lk_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gf_proto_flock flock;
+} ;
+
+struct gfx_lease_req {
+ opaque gfid[16];
+ gf_proto_lease lease;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_lease_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gf_proto_lease lease;
+} ;
+
+struct gfx_recall_lease_req {
+ opaque gfid[16];
+ unsigned int lease_type;
+ opaque tid[16];
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_inodelk_req {
+ opaque gfid[16];
+ unsigned int cmd;
+ unsigned int type;
+ gf_proto_flock flock;
+ string volume<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_finodelk_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int cmd;
+ unsigned int type;
+ gf_proto_flock flock;
+ string volume<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_flush_req {
+ opaque gfid[16];
+ quad_t fd;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_fsync_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int data;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_setxattr_req {
+ opaque gfid[16];
+ unsigned int flags;
+ gfx_dict dict;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+
+ struct gfx_fsetxattr_req {
+ opaque gfid[16];
+ int64_t fd;
+ unsigned int flags;
+ gfx_dict dict;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+
+ struct gfx_xattrop_req {
+ opaque gfid[16];
+ unsigned int flags;
+ gfx_dict dict;
+ gfx_dict xdata; /* Extra data */
} ;
-struct gfs4_icreate_rsp {
+struct gfx_common_dict_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gfx_dict dict;
+ gfx_iattx prestat;
+ gfx_iattx poststat;
+};
+
+
+ struct gfx_fxattrop_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int flags;
+ gfx_dict dict;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_getxattr_req {
+ opaque gfid[16];
+ unsigned int namelen;
+ string name<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_fgetxattr_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int namelen;
+ string name<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_removexattr_req {
+ opaque gfid[16];
+ string name<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_fremovexattr_req {
+ opaque gfid[16];
+ quad_t fd;
+ string name<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_fsyncdir_req {
+ opaque gfid[16];
+ quad_t fd;
+ int data;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_readdir_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ unsigned int size;
+ gfx_dict xdata; /* Extra data */
+};
+
+ struct gfx_readdirp_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ unsigned int size;
+ gfx_dict xdata;
+} ;
+
+
+struct gfx_access_req {
+ opaque gfid[16];
+ unsigned int mask;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+struct gfx_create_req {
+ opaque pargfid[16];
+ unsigned int flags;
+ unsigned int mode;
+ unsigned int umask;
+ string bname<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+struct gfx_create_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ gfx_iattx stat;
+ u_quad_t fd;
+ gfx_iattx preparent;
+ gfx_iattx postparent;
+} ;
+
+struct gfx_ftruncate_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+struct gfx_fstat_req {
+ opaque gfid[16];
+ quad_t fd;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+struct gfx_entrylk_req {
+ opaque gfid[16];
+ unsigned int cmd;
+ unsigned int type;
+ u_quad_t namelen;
+ string name<>;
+ string volume<>;
+ gfx_dict xdata; /* Extra data */
+};
+
+struct gfx_fentrylk_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int cmd;
+ unsigned int type;
+ u_quad_t namelen;
+ string name<>;
+ string volume<>;
+ gfx_dict xdata; /* Extra data */
+};
+
+ struct gfx_setattr_req {
+ opaque gfid[16];
+ gfx_iattx stbuf;
+ int valid;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+ struct gfx_fallocate_req {
+ opaque gfid[16];
+ quad_t fd;
+ unsigned int flags;
+ u_quad_t offset;
+ u_quad_t size;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_discard_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ u_quad_t size;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_zerofill_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ u_quad_t size;
+ gfx_dict xdata;
+} ;
+
+struct gfx_rchecksum_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata; /* Extra data */
+ unsigned int flags;
+ unsigned int weak_checksum;
+ opaque strong_checksum<>;
+} ;
+
+
+struct gfx_ipc_req {
+ int op;
+ gfx_dict xdata;
+};
+
+
+struct gfx_seek_req {
+ opaque gfid[16];
+ quad_t fd;
+ u_quad_t offset;
+ int what;
+ gfx_dict xdata;
+};
+
+struct gfx_seek_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata;
+ u_quad_t offset;
+};
+
+
+ struct gfx_setvolume_req {
+ gfx_dict dict;
+} ;
+ struct gfx_setvolume_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict dict;
+} ;
+
+
+ struct gfx_getspec_req {
+ unsigned int flags;
+ string key<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+ struct gfx_getspec_rsp {
+ int op_ret;
+ int op_errno;
+ string spec<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+
+ struct gfx_notify_req {
+ unsigned int flags;
+ string buf<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+ struct gfx_notify_rsp {
+ int op_ret;
+ int op_errno;
+ unsigned int flags;
+ string buf<>;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_releasedir_req {
+ opaque gfid[16];
+ quad_t fd;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_release_req {
+ opaque gfid[16];
+ quad_t fd;
+ gfx_dict xdata; /* Extra data */
+} ;
+
+struct gfx_dirlist {
+ u_quad_t d_ino;
+ u_quad_t d_off;
+ unsigned int d_len;
+ unsigned int d_type;
+ string name<>;
+ gfx_dirlist *nextentry;
+};
+
+
+struct gfx_readdir_rsp {
int op_ret;
int op_errno;
- gf_iatt stat;
- opaque xdata<>;
+ gfx_dict xdata; /* Extra data */
+ gfx_dirlist *reply;
};
-struct gfs4_icreate_req {
- opaque gfid[16];
- unsigned int mode;
- opaque xdata<>;
+struct gfx_dirplist {
+ u_quad_t d_ino;
+ u_quad_t d_off;
+ unsigned int d_len;
+ unsigned int d_type;
+ string name<>;
+ gfx_iattx stat;
+ gfx_dict dict;
+ gfx_dirplist *nextentry;
};
-struct gfs4_namelink_rsp {
+struct gfx_readdirp_rsp {
int op_ret;
int op_errno;
- gf_iatt preparent;
- gf_iatt postparent;
- opaque xdata<>;
+ gfx_dict xdata; /* Extra data */
+ gfx_dirplist *reply;
};
-struct gfs4_namelink_req {
- opaque pargfid[16];
- string bname<>;
- opaque xdata<>;
+struct gfx_set_lk_ver_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata;
+ int lk_ver;
+};
+
+struct gfx_set_lk_ver_req {
+ string uid<>;
+ int lk_ver;
+};
+
+struct gfx_event_notify_req {
+ int op;
+ gfx_dict dict;
+};
+
+
+struct gfx_getsnap_name_uuid_req {
+ gfx_dict dict;
+};
+
+struct gfx_getsnap_name_uuid_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict dict;
+ string op_errstr<>;
+};
+
+struct gfx_getactivelk_rsp {
+ int op_ret;
+ int op_errno;
+ gfx_dict xdata;
+ gfs3_locklist *reply;
+};
+
+struct gfx_getactivelk_req {
+ opaque gfid[16];
+ gfx_dict xdata;
+};
+
+struct gfx_setactivelk_req {
+ opaque gfid[16];
+ gfs3_locklist *request;
+ gfx_dict xdata;
+};
+
+union compound_req_v2 switch (glusterfs_fop_t fop_enum) {
+ case GF_FOP_STAT: gfx_stat_req compound_stat_req;
+ case GF_FOP_READLINK: gfx_readlink_req compound_readlink_req;
+ case GF_FOP_MKNOD: gfx_mknod_req compound_mknod_req;
+ case GF_FOP_MKDIR: gfx_mkdir_req compound_mkdir_req;
+ case GF_FOP_UNLINK: gfx_unlink_req compound_unlink_req;
+ case GF_FOP_RMDIR: gfx_rmdir_req compound_rmdir_req;
+ case GF_FOP_SYMLINK: gfx_symlink_req compound_symlink_req;
+ case GF_FOP_RENAME: gfx_rename_req compound_rename_req;
+ case GF_FOP_LINK: gfx_link_req compound_link_req;
+ case GF_FOP_TRUNCATE: gfx_truncate_req compound_truncate_req;
+ case GF_FOP_OPEN: gfx_open_req compound_open_req;
+ case GF_FOP_READ: gfx_read_req compound_read_req;
+ case GF_FOP_WRITE: gfx_write_req compound_write_req;
+ case GF_FOP_STATFS: gfx_statfs_req compound_statfs_req;
+ case GF_FOP_FLUSH: gfx_flush_req compound_flush_req;
+ case GF_FOP_FSYNC: gfx_fsync_req compound_fsync_req;
+ case GF_FOP_GETXATTR: gfx_getxattr_req compound_getxattr_req;
+ case GF_FOP_SETXATTR: gfx_setxattr_req compound_setxattr_req;
+ case GF_FOP_REMOVEXATTR: gfx_removexattr_req compound_removexattr_req;
+ case GF_FOP_OPENDIR: gfx_opendir_req compound_opendir_req;
+ case GF_FOP_FSYNCDIR: gfx_fsyncdir_req compound_fsyncdir_req;
+ case GF_FOP_ACCESS: gfx_access_req compound_access_req;
+ case GF_FOP_CREATE: gfx_create_req compound_create_req;
+ case GF_FOP_FTRUNCATE: gfx_ftruncate_req compound_ftruncate_req;
+ case GF_FOP_FSTAT: gfx_fstat_req compound_fstat_req;
+ case GF_FOP_LK: gfx_lk_req compound_lk_req;
+ case GF_FOP_LOOKUP: gfx_lookup_req compound_lookup_req;
+ case GF_FOP_READDIR: gfx_readdir_req compound_readdir_req;
+ case GF_FOP_INODELK: gfx_inodelk_req compound_inodelk_req;
+ case GF_FOP_FINODELK: gfx_finodelk_req compound_finodelk_req;
+ case GF_FOP_ENTRYLK: gfx_entrylk_req compound_entrylk_req;
+ case GF_FOP_FENTRYLK: gfx_fentrylk_req compound_fentrylk_req;
+ case GF_FOP_XATTROP: gfx_xattrop_req compound_xattrop_req;
+ case GF_FOP_FXATTROP: gfx_fxattrop_req compound_fxattrop_req;
+ case GF_FOP_FGETXATTR: gfx_fgetxattr_req compound_fgetxattr_req;
+ case GF_FOP_FSETXATTR: gfx_fsetxattr_req compound_fsetxattr_req;
+ case GF_FOP_RCHECKSUM: gfx_rchecksum_req compound_rchecksum_req;
+ case GF_FOP_SETATTR: gfx_setattr_req compound_setattr_req;
+ case GF_FOP_FSETATTR: gfx_fsetattr_req compound_fsetattr_req;
+ case GF_FOP_READDIRP: gfx_readdirp_req compound_readdirp_req;
+ case GF_FOP_RELEASE: gfx_release_req compound_release_req;
+ case GF_FOP_RELEASEDIR: gfx_releasedir_req compound_releasedir_req;
+ case GF_FOP_FREMOVEXATTR: gfx_fremovexattr_req compound_fremovexattr_req;
+ case GF_FOP_FALLOCATE: gfx_fallocate_req compound_fallocate_req;
+ case GF_FOP_DISCARD: gfx_discard_req compound_discard_req;
+ case GF_FOP_ZEROFILL: gfx_zerofill_req compound_zerofill_req;
+ case GF_FOP_IPC: gfx_ipc_req compound_ipc_req;
+ case GF_FOP_SEEK: gfx_seek_req compound_seek_req;
+ case GF_FOP_LEASE: gfx_lease_req compound_lease_req;
+ default: void;
+};
+
+struct gfx_compound_req {
+ int compound_version;
+ glusterfs_compound_fop_t compound_fop_enum;
+ compound_req_v2 compound_req_array<>;
+ gfx_dict xdata;
+};
+
+union compound_rsp_v2 switch (glusterfs_fop_t fop_enum) {
+ case GF_FOP_STAT: gfx_common_iatt_rsp compound_stat_rsp;
+ case GF_FOP_READLINK: gfx_readlink_rsp compound_readlink_rsp;
+ case GF_FOP_MKNOD: gfx_common_3iatt_rsp compound_mknod_rsp;
+ case GF_FOP_MKDIR: gfx_common_3iatt_rsp compound_mkdir_rsp;
+ case GF_FOP_UNLINK: gfx_common_2iatt_rsp compound_unlink_rsp;
+ case GF_FOP_RMDIR: gfx_common_2iatt_rsp compound_rmdir_rsp;
+ case GF_FOP_SYMLINK: gfx_common_3iatt_rsp compound_symlink_rsp;
+ case GF_FOP_RENAME: gfx_rename_rsp compound_rename_rsp;
+ case GF_FOP_LINK: gfx_common_3iatt_rsp compound_link_rsp;
+ case GF_FOP_TRUNCATE: gfx_common_2iatt_rsp compound_truncate_rsp;
+ case GF_FOP_OPEN: gfx_open_rsp compound_open_rsp;
+ case GF_FOP_READ: gfx_read_rsp compound_read_rsp;
+ case GF_FOP_WRITE: gfx_common_2iatt_rsp compound_write_rsp;
+ case GF_FOP_STATFS: gfx_statfs_rsp compound_statfs_rsp;
+ case GF_FOP_FLUSH: gfx_common_rsp compound_flush_rsp;
+ case GF_FOP_FSYNC: gfx_common_2iatt_rsp compound_fsync_rsp;
+ case GF_FOP_GETXATTR: gfx_common_dict_rsp compound_getxattr_rsp;
+ case GF_FOP_SETXATTR: gfx_common_rsp compound_setxattr_rsp;
+ case GF_FOP_REMOVEXATTR: gfx_common_rsp compound_removexattr_rsp;
+ case GF_FOP_OPENDIR: gfx_open_rsp compound_opendir_rsp;
+ case GF_FOP_FSYNCDIR: gfx_common_rsp compound_fsyncdir_rsp;
+ case GF_FOP_ACCESS: gfx_common_rsp compound_access_rsp;
+ case GF_FOP_CREATE: gfx_create_rsp compound_create_rsp;
+ case GF_FOP_FTRUNCATE: gfx_common_2iatt_rsp compound_ftruncate_rsp;
+ case GF_FOP_FSTAT: gfx_common_iatt_rsp compound_fstat_rsp;
+ case GF_FOP_LK: gfx_lk_rsp compound_lk_rsp;
+ case GF_FOP_LOOKUP: gfx_common_2iatt_rsp compound_lookup_rsp;
+ case GF_FOP_READDIR: gfx_readdir_rsp compound_readdir_rsp;
+ case GF_FOP_INODELK: gfx_common_rsp compound_inodelk_rsp;
+ case GF_FOP_FINODELK: gfx_common_rsp compound_finodelk_rsp;
+ case GF_FOP_ENTRYLK: gfx_common_rsp compound_entrylk_rsp;
+ case GF_FOP_FENTRYLK: gfx_common_rsp compound_fentrylk_rsp;
+ case GF_FOP_XATTROP: gfx_common_dict_rsp compound_xattrop_rsp;
+ case GF_FOP_FXATTROP: gfx_common_dict_rsp compound_fxattrop_rsp;
+ case GF_FOP_FGETXATTR: gfx_common_dict_rsp compound_fgetxattr_rsp;
+ case GF_FOP_FSETXATTR: gfx_common_rsp compound_fsetxattr_rsp;
+ case GF_FOP_RCHECKSUM: gfx_rchecksum_rsp compound_rchecksum_rsp;
+ case GF_FOP_SETATTR: gfx_common_2iatt_rsp compound_setattr_rsp;
+ case GF_FOP_FSETATTR: gfx_common_2iatt_rsp compound_fsetattr_rsp;
+ case GF_FOP_READDIRP: gfx_readdirp_rsp compound_readdirp_rsp;
+ case GF_FOP_RELEASE: gfx_common_rsp compound_release_rsp;
+ case GF_FOP_RELEASEDIR: gfx_common_rsp compound_releasedir_rsp;
+ case GF_FOP_FREMOVEXATTR: gfx_common_rsp compound_fremovexattr_rsp;
+ case GF_FOP_FALLOCATE: gfx_common_2iatt_rsp compound_fallocate_rsp;
+ case GF_FOP_DISCARD: gfx_common_2iatt_rsp compound_discard_rsp;
+ case GF_FOP_ZEROFILL: gfx_common_2iatt_rsp compound_zerofill_rsp;
+ case GF_FOP_IPC: gfx_common_rsp compound_ipc_rsp;
+ case GF_FOP_SEEK: gfx_seek_rsp compound_seek_rsp;
+ case GF_FOP_LEASE: gfx_lease_rsp compound_lease_rsp;
+ default: void;
+};
+
+struct gfx_compound_rsp {
+ int op_ret;
+ int op_errno;
+ compound_rsp_v2 compound_rsp_array<>;
+ gfx_dict xdata;
};
struct gfs4_inodelk_contention_req {