summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/client/src/client-common.h
diff options
context:
space:
mode:
authorAmar Tumballi <amarts@redhat.com>2017-12-22 13:12:42 +0530
committerAmar Tumballi <amarts@redhat.com>2018-01-19 22:48:39 +0530
commit303cc2b54797bc5371be742543ccb289010c92f2 (patch)
treecf383488d0edff81b012b5e908f8ebca7affaea3 /xlators/protocol/client/src/client-common.h
parent9eefff096fd9b54120e4347b6b00f10a6c502cf4 (diff)
protocol: make on-wire-change of protocol using new XDR definition.
With this patchset, some major things are changed in XDR, mainly: * Naming: Instead of gfs3/gfs4 settle for gfx_ for xdr structures * add iattx as a separate structure, and add conversion methods * the *_rsp structure is now changed, and is also reduced in number (ie, no need for different strucutes if it is similar to other response). * use proper XDR methods for sending dict on wire. Also, with the change of xdr structure, there are changes needed outside of xlator protocol layer to handle these properly. Mainly because the abstraction was broken to support 0-copy RDMA with payload for write and read FOP. This made transport layer know about the xdr payload, hence with the change of xdr payload structure, transport layer needed to know about the change. Updates #384 Change-Id: I1448fbe9deab0a1b06cb8351f2f37488cefe461f Signed-off-by: Amar Tumballi <amarts@redhat.com>
Diffstat (limited to 'xlators/protocol/client/src/client-common.h')
-rw-r--r--xlators/protocol/client/src/client-common.h240
1 files changed, 240 insertions, 0 deletions
diff --git a/xlators/protocol/client/src/client-common.h b/xlators/protocol/client/src/client-common.h
index fd3fba869f5..76ec0e9279d 100644
--- a/xlators/protocol/client/src/client-common.h
+++ b/xlators/protocol/client/src/client-common.h
@@ -15,6 +15,7 @@
#include "xlator.h"
#include "rpc-common-xdr.h"
#include "glusterfs3-xdr.h"
+#include "glusterfs4-xdr.h"
#include "glusterfs3.h"
#include "client.h"
@@ -400,4 +401,243 @@ client_post_seek (xlator_t *this, gfs3_seek_rsp *rsp, dict_t **xdata);
int
client_post_lease (xlator_t *this, gfs3_lease_rsp *rsp, struct gf_lease *lease,
dict_t **xdata);
+
+/* New functions for version 4 */
+int
+client_post_common_dict (xlator_t *this, gfx_common_dict_rsp *rsp, dict_t **dict,
+ dict_t **xdata);
+int
+client_post_common_3iatt (xlator_t *this, gfx_common_3iatt_rsp *rsp, struct iatt *iatt,
+ struct iatt *iatt2, struct iatt *iatt3, dict_t **xdata);
+int
+client_post_common_2iatt (xlator_t *this, gfx_common_2iatt_rsp *rsp, struct iatt *iatt,
+ struct iatt *iatt2, dict_t **xdata);
+int
+client_post_common_iatt (xlator_t *this, gfx_common_iatt_rsp *rsp, struct iatt *iatt,
+ dict_t **xdata);
+int
+client_post_common_rsp (xlator_t *this, gfx_common_rsp *rsp, dict_t **xdata);
+
+
+int
+client_pre_stat_v2 (xlator_t *this, gfx_stat_req *req, loc_t *loc,
+ dict_t *xdata);
+
+int
+client_pre_readlink_v2 (xlator_t *this, gfx_readlink_req *req, loc_t *loc,
+ size_t size, dict_t *xdata);
+
+int
+client_pre_mknod_v2 (xlator_t *this, gfx_mknod_req *req, loc_t *loc,
+ mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata);
+
+int
+client_pre_mkdir_v2 (xlator_t *this, gfx_mkdir_req *req, loc_t *loc,
+ mode_t mode, mode_t umask, dict_t *xdata);
+
+int
+client_pre_unlink_v2 (xlator_t *this, gfx_unlink_req *req, loc_t *loc,
+ int32_t flags, dict_t *xdata);
+
+int
+client_pre_rmdir_v2 (xlator_t *this, gfx_rmdir_req *req, loc_t *loc,
+ int32_t flags, dict_t *xdata);
+
+int
+client_pre_symlink_v2 (xlator_t *this, gfx_symlink_req *req, loc_t *loc,
+ const char *linkname, mode_t umask, dict_t *xdata);
+
+int
+client_pre_rename_v2 (xlator_t *this, gfx_rename_req *req, loc_t *oldloc,
+ loc_t *newloc, dict_t *xdata);
+
+int
+client_pre_link_v2 (xlator_t *this,
+ gfx_link_req *req, loc_t *oldloc, loc_t *newloc,
+ dict_t *xdata);
+
+int
+client_pre_truncate_v2 (xlator_t *this, gfx_truncate_req *req,
+ loc_t *loc, off_t offset, dict_t *xdata);
+
+int
+client_pre_open_v2 (xlator_t *this, gfx_open_req *req, loc_t *loc, fd_t *fd,
+ int32_t flags, dict_t *xdata);
+
+int
+client_pre_readv_v2 (xlator_t *this, gfx_read_req *req, fd_t *fd, size_t size,
+ off_t offset, int32_t flags, dict_t *xdata);
+
+int
+client_pre_writev_v2 (xlator_t *this, gfx_write_req *req,
+ fd_t *fd, size_t size, off_t offset, int32_t flags,
+ dict_t **xdata);
+
+int
+client_pre_statfs_v2 (xlator_t *this, gfx_statfs_req *req, loc_t *loc,
+ dict_t *xdata);
+
+int
+client_pre_flush_v2 (xlator_t *this, gfx_flush_req *req, fd_t *fd, dict_t *xdata);
+
+int
+client_pre_fsync_v2 (xlator_t *this, gfx_fsync_req *req, fd_t *fd,
+ int32_t flags, dict_t *xdata);
+
+int
+client_pre_setxattr_v2 (xlator_t *this, gfx_setxattr_req *req, loc_t *loc,
+ dict_t *xattr, int32_t flags, dict_t *xdata);
+
+int
+client_pre_getxattr_v2 (xlator_t *this, gfx_getxattr_req *req, loc_t *loc,
+ const char *name, dict_t *xdata);
+
+int
+client_pre_removexattr_v2 (xlator_t *this, gfx_removexattr_req *req,
+ loc_t *loc, const char *name, dict_t *xdata);
+
+int
+client_pre_opendir_v2 (xlator_t *this,
+ gfx_opendir_req *req, loc_t *loc,
+ fd_t *fd, dict_t *xdata);
+
+int
+client_pre_fsyncdir_v2 (xlator_t *this, gfx_fsyncdir_req *req, fd_t *fd,
+ int32_t flags, dict_t *xdata);
+
+int
+client_pre_access_v2 (xlator_t *this, gfx_access_req *req, loc_t *loc,
+ int32_t mask, dict_t *xdata);
+
+int
+client_pre_create_v2 (xlator_t *this, gfx_create_req *req,
+ loc_t *loc, fd_t *fd, mode_t mode,
+ int32_t flags, mode_t umask, dict_t *xdata);
+
+int
+client_pre_ftruncate_v2 (xlator_t *this, gfx_ftruncate_req *req, fd_t *fd,
+ off_t offset, dict_t *xdata);
+
+int
+client_pre_fstat_v2 (xlator_t *this, gfx_fstat_req *req, fd_t *fd,
+ dict_t *xdata);
+
+int
+client_pre_lk_v2 (xlator_t *this, gfx_lk_req *req,
+ int32_t cmd, struct gf_flock *flock, fd_t *fd, dict_t *xdata);
+
+int
+client_pre_lookup_v2 (xlator_t *this, gfx_lookup_req *req, loc_t *loc,
+ dict_t *xdata);
+
+int
+client_pre_readdir_v2 (xlator_t *this, gfx_readdir_req *req, fd_t *fd,
+ size_t size, off_t offset, dict_t *xdata);
+
+int
+client_pre_inodelk_v2 (xlator_t *this, gfx_inodelk_req *req, loc_t *loc,
+ int cmd, struct gf_flock *flock, const char *volume,
+ dict_t *xdata);
+
+int
+client_pre_finodelk_v2 (xlator_t *this, gfx_finodelk_req *req, fd_t *fd,
+ int cmd, struct gf_flock *flock, const char *volume,
+ dict_t *xdata);
+
+int
+client_pre_entrylk_v2 (xlator_t *this, gfx_entrylk_req *req, loc_t *loc,
+ entrylk_cmd cmd_entrylk, entrylk_type type,
+ const char *volume, const char *basename, dict_t *xdata);
+
+int
+client_pre_fentrylk_v2 (xlator_t *this, gfx_fentrylk_req *req, fd_t *fd,
+ entrylk_cmd cmd_entrylk, entrylk_type type,
+ const char *volume, const char *basename, dict_t *xdata);
+
+int
+client_pre_xattrop_v2 (xlator_t *this, gfx_xattrop_req *req, loc_t *loc,
+ dict_t *xattr, int32_t flags, dict_t *xdata);
+
+int
+client_pre_fxattrop_v2 (xlator_t *this, gfx_fxattrop_req *req, fd_t *fd,
+ dict_t *xattr, int32_t flags, dict_t *xdata);
+
+int
+client_pre_fgetxattr_v2 (xlator_t *this, gfx_fgetxattr_req *req, fd_t *fd,
+ const char *name, dict_t *xdata);
+
+int
+client_pre_fsetxattr_v2 (xlator_t *this, gfx_fsetxattr_req *req, fd_t *fd,
+ int32_t flags, dict_t *xattr, dict_t *xdata);
+int
+client_pre_seek_v2 (xlator_t *this, gfx_seek_req *req, fd_t *fd,
+ off_t offset, gf_seek_what_t what, dict_t *xdata);
+
+int
+client_pre_rchecksum_v2 (xlator_t *this, gfx_rchecksum_req *req, fd_t *fd,
+ int32_t len, off_t offset, dict_t *xdata);
+
+int
+client_pre_setattr_v2 (xlator_t *this, gfx_setattr_req *req, loc_t *loc,
+ int32_t valid, struct iatt *stbuf, dict_t *xdata);
+int
+client_pre_fsetattr_v2 (xlator_t *this, gfx_fsetattr_req *req, fd_t *fd,
+ int32_t valid, struct iatt *stbuf, dict_t *xdata);
+
+int
+client_pre_readdirp_v2 (xlator_t *this, gfx_readdirp_req *req, fd_t *fd,
+ size_t size, off_t offset, dict_t *xdata);
+
+int
+client_pre_fremovexattr_v2 (xlator_t *this, gfx_fremovexattr_req *req, fd_t *fd,
+ const char *name, dict_t *xdata);
+
+int
+client_pre_fallocate_v2 (xlator_t *this, gfx_fallocate_req *req, fd_t *fd,
+ int32_t flags, off_t offset, size_t size, dict_t *xdata);
+int
+client_pre_discard_v2 (xlator_t *this, gfx_discard_req *req, fd_t *fd,
+ off_t offset, size_t size, dict_t *xdata);
+int
+client_pre_zerofill_v2 (xlator_t *this, gfx_zerofill_req *req, fd_t *fd,
+ off_t offset, size_t size, dict_t *xdata);
+int
+client_pre_ipc_v2 (xlator_t *this, gfx_ipc_req *req, int32_t cmd,
+ dict_t *xdata);
+
+int
+client_pre_lease_v2 (xlator_t *this, gfx_lease_req *req, loc_t *loc,
+ struct gf_lease *lease, dict_t *xdata);
+
+int
+client_post_readv_v2 (xlator_t *this, gfx_read_rsp *rsp, struct iobref **iobref,
+ struct iobref *rsp_iobref, struct iatt *stat,
+ struct iovec *vector, struct iovec *rsp_vector,
+ int *rspcount, dict_t **xdata);
+
+
+int
+client_post_create_v2 (xlator_t *this, gfx_create_rsp *rsp,
+ struct iatt *stbuf, struct iatt *preparent,
+ struct iatt *postparent,
+ clnt_local_t *local, dict_t **xdata);
+int
+client_post_lease_v2 (xlator_t *this, gfx_lease_rsp *rsp, struct gf_lease *lease,
+ dict_t **xdata);
+int
+client_post_lk_v2 (xlator_t *this, gfx_lk_rsp *rsp, struct gf_flock *lock,
+ dict_t **xdata);
+int
+client_post_readdir_v2 (xlator_t *this, gfx_readdir_rsp *rsp,
+ gf_dirent_t *entries, dict_t **xdata);
+int
+client_post_readdirp_v2 (xlator_t *this, gfx_readdirp_rsp *rsp,
+ fd_t *fd, gf_dirent_t *entries,
+ dict_t **xdata);
+int
+client_post_rename_v2 (xlator_t *this, gfx_rename_rsp *rsp, struct iatt *stbuf,
+ struct iatt *preoldparent, struct iatt *postoldparent,
+ struct iatt *prenewparent, struct iatt *postnewparent,
+ dict_t **xdata);
+
#endif /* __CLIENT_COMMON_H__ */