diff options
| author | Amar Tumballi <amar@gluster.com> | 2010-06-21 07:00:04 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2010-06-21 20:21:10 -0700 | 
| commit | fdd20492638fe98a62b5e6d5e82f18cf4799fd1a (patch) | |
| tree | 98082d7bfdc66157f40666f2070d3a45b582327a /xlators/protocol/client/src/client.h | |
| parent | b9b8734a9496ccf5f8ed5527dc7714930a59948b (diff) | |
rpc protocol
Signed-off-by: Amar Tumballi <amar@gluster.com>
Signed-off-by: Raghavendra G <raghavendra@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 875 (Implement a new protocol to provide proper backward/forward compatibility)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=875
Diffstat (limited to 'xlators/protocol/client/src/client.h')
| -rw-r--r-- | xlators/protocol/client/src/client.h | 125 | 
1 files changed, 125 insertions, 0 deletions
diff --git a/xlators/protocol/client/src/client.h b/xlators/protocol/client/src/client.h new file mode 100644 index 00000000000..9d713bed204 --- /dev/null +++ b/xlators/protocol/client/src/client.h @@ -0,0 +1,125 @@ +/* +   Copyright (c) 2010 Gluster, Inc. <http://www.gluster.com> +   This file is part of GlusterFS. + +   GlusterFS is free software; you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published +   by the Free Software Foundation; either version 3 of the License, +   or (at your option) any later version. + +   GlusterFS is distributed in the hope that it will be useful, but +   WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +   General Public License for more details. + +   You should have received a copy of the GNU General Public License +   along with this program.  If not, see +   <http://www.gnu.org/licenses/>. +*/ + +#ifndef _CLIENT_H +#define _CLIENT_H + +#include <pthread.h> +#include <stdint.h> + +#include "rpc-clnt.h" +#include "list.h" +#include "inode.h" +#include "client-mem-types.h" +#include "protocol-common.h" + +struct clnt_options { +        char *remote_subvolume; +        int   ping_timeout; +}; + +typedef struct clnt_conf { +        struct rpc_clnt       *rpc; +        struct clnt_options    opt; +        struct rpc_clnt_config rpc_conf; +	struct list_head       saved_fds; +        pthread_mutex_t        lock; +        int                    connecting; +	struct timeval         last_sent; +	struct timeval         last_received; + +        rpc_clnt_prog_t       *fops; +        rpc_clnt_prog_t       *mgmt; +        rpc_clnt_prog_t       *handshake; +} clnt_conf_t; + +typedef struct _client_fd_ctx { +        struct list_head  sfd_pos;      /*  Stores the reference to this +                                            fd's position in the saved_fds list. +                                        */ +        int64_t           remote_fd; +        inode_t          *inode; +        uint64_t          ino; +        uint64_t          gen; +        char              is_dir; +        char              released; +        int32_t           flags; +        int32_t           wbflags; +} clnt_fd_ctx_t; + +typedef struct client_local { +        loc_t              loc; +        loc_t              loc2; +        fd_t              *fd; +        clnt_fd_ctx_t     *fdctx; +        uint32_t           flags; +        uint32_t           wbflags; +        fop_cbk_fn_t       op; +} clnt_local_t; + +typedef struct client_args { +        loc_t              *loc; +        fd_t               *fd; +        dict_t             *xattr_req; +        const char         *linkname; +        struct iobref      *iobref; +        struct iovec       *vector; +        dict_t             *xattr; +        struct iatt        *stbuf; +        dict_t             *dict; +        loc_t              *oldloc; +        loc_t              *newloc; +        const char         *name; +        struct flock       *flock; +        const char         *volume; +        const char         *basename; +        off_t               offset; +        int32_t             mask; +        int32_t             cmd; +        size_t              size; +        mode_t              mode; +        dev_t               rdev; +        int32_t             flags; +        int32_t             wbflags; +        int32_t             count; +        int32_t             datasync; +        entrylk_cmd         cmd_entrylk; +        entrylk_type        type; +        gf_xattrop_flags_t  optype; +        int32_t             valid; +        int32_t             len; +} clnt_args_t; + +typedef ssize_t (*gfs_serialize_t) (struct iovec outmsg, void *args); + +clnt_fd_ctx_t *this_fd_get_ctx (fd_t *file, xlator_t *this); +clnt_fd_ctx_t *this_fd_del_ctx (fd_t *file, xlator_t *this); +void this_fd_set_ctx (fd_t *file, xlator_t *this, loc_t *loc, +                      clnt_fd_ctx_t *ctx); + +int client_local_wipe (clnt_local_t *local); +int client_submit_request (xlator_t *this, void *req, +                           call_frame_t *frame, rpc_clnt_prog_t *prog, +                           int procnum, struct iobref *iobref, +                           gfs_serialize_t sfunc); + +int protocol_client_reopendir (xlator_t *this, clnt_fd_ctx_t *fdctx); +int protocol_client_reopen (xlator_t *this, clnt_fd_ctx_t *fdctx); + +#endif /* !_CLIENT_H */  | 
