diff options
author | Gluster Ant <bugzilla-bot@gluster.org> | 2018-09-12 17:22:48 +0530 |
---|---|---|
committer | Nigel Babu <nigelb@redhat.com> | 2018-09-12 17:22:48 +0530 |
commit | 45a71c0548b6fd2c757aa2e7b7671a1411948894 (patch) | |
tree | 2a5a9b73bae47ab53a41166fd041a06612587f48 /rpc/rpc-transport | |
parent | be77dbbda692792335a8e9e7c02e0c281f003c40 (diff) |
Land clang-format changes
Change-Id: I6f5d8140a06f3c1b2d196849299f8d483028d33b
Diffstat (limited to 'rpc/rpc-transport')
-rw-r--r-- | rpc/rpc-transport/rdma/src/name.h | 19 | ||||
-rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.h | 506 | ||||
-rw-r--r-- | rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h | 119 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/name.h | 20 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/socket-mem-types.h | 8 | ||||
-rw-r--r-- | rpc/rpc-transport/socket/src/socket.h | 385 |
6 files changed, 502 insertions, 555 deletions
diff --git a/rpc/rpc-transport/rdma/src/name.h b/rpc/rpc-transport/rdma/src/name.h index 742fc5fc3f2..6c782b52db5 100644 --- a/rpc/rpc-transport/rdma/src/name.h +++ b/rpc/rpc-transport/rdma/src/name.h @@ -16,21 +16,20 @@ #include "compat.h" int32_t -gf_rdma_client_bind (rpc_transport_t *this, struct sockaddr *sockaddr, - socklen_t *sockaddr_len, struct rdma_cm_id *cm_id); +gf_rdma_client_bind(rpc_transport_t *this, struct sockaddr *sockaddr, + socklen_t *sockaddr_len, struct rdma_cm_id *cm_id); int32_t -gf_rdma_client_get_remote_sockaddr (rpc_transport_t *this, - struct sockaddr *sockaddr, - socklen_t *sockaddr_len, - int16_t remote_port); +gf_rdma_client_get_remote_sockaddr(rpc_transport_t *this, + struct sockaddr *sockaddr, + socklen_t *sockaddr_len, + int16_t remote_port); int32_t -gf_rdma_server_get_local_sockaddr (rpc_transport_t *this, - struct sockaddr *addr, - socklen_t *addr_len); +gf_rdma_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr, + socklen_t *addr_len); int32_t -gf_rdma_get_transport_identifiers (rpc_transport_t *this); +gf_rdma_get_transport_identifiers(rpc_transport_t *this); #endif /* _IB_VERBS_NAME_H */ diff --git a/rpc/rpc-transport/rdma/src/rdma.h b/rpc/rpc-transport/rdma/src/rdma.h index 39f7f45046d..84c1397054b 100644 --- a/rpc/rpc-transport/rdma/src/rdma.h +++ b/rpc/rpc-transport/rdma/src/rdma.h @@ -11,7 +11,6 @@ #ifndef _XPORT_RDMA_H #define _XPORT_RDMA_H - #ifndef MAX_IOVEC #define MAX_IOVEC 16 #endif /* MAX_IOVEC */ @@ -29,364 +28,357 @@ /* FIXME: give appropriate values to these macros */ #define GF_DEFAULT_RDMA_LISTEN_PORT (GF_DEFAULT_BASE_PORT + 1) - /* If you are changing GF_RDMA_MAX_SEGMENTS, please make sure to update * GLUSTERFS_GF_RDMA_MAX_HEADER_SIZE defined in glusterfs.h . */ -#define GF_RDMA_MAX_SEGMENTS 8 +#define GF_RDMA_MAX_SEGMENTS 8 -#define GF_RDMA_VERSION 1 -#define GF_RDMA_POOL_SIZE 512 +#define GF_RDMA_VERSION 1 +#define GF_RDMA_POOL_SIZE 512 /* Additional attributes */ -#define GF_RDMA_TIMEOUT 14 -#define GF_RDMA_RETRY_CNT 7 -#define GF_RDMA_RNR_RETRY 7 +#define GF_RDMA_TIMEOUT 14 +#define GF_RDMA_RETRY_CNT 7 +#define GF_RDMA_RNR_RETRY 7 -typedef enum gf_rdma_errcode { - ERR_VERS = 1, - ERR_CHUNK = 2 -}gf_rdma_errcode_t; +typedef enum gf_rdma_errcode { ERR_VERS = 1, ERR_CHUNK = 2 } gf_rdma_errcode_t; struct gf_rdma_err_vers { - uint32_t gf_rdma_vers_low; /* Version range supported by peer */ - uint32_t gf_rdma_vers_high; -}__attribute__ ((packed)); + uint32_t gf_rdma_vers_low; /* Version range supported by peer */ + uint32_t gf_rdma_vers_high; +} __attribute__((packed)); typedef struct gf_rdma_err_vers gf_rdma_err_vers_t; typedef enum gf_rdma_proc { - GF_RDMA_MSG = 0, /* An RPC call or reply msg */ - GF_RDMA_NOMSG = 1, /* An RPC call or reply msg - separate body */ - GF_RDMA_MSGP = 2, /* An RPC call or reply msg with padding */ - GF_RDMA_DONE = 3, /* Client signals reply completion */ - GF_RDMA_ERROR = 4 /* An RPC RDMA encoding error */ -}gf_rdma_proc_t; + GF_RDMA_MSG = 0, /* An RPC call or reply msg */ + GF_RDMA_NOMSG = 1, /* An RPC call or reply msg - separate body */ + GF_RDMA_MSGP = 2, /* An RPC call or reply msg with padding */ + GF_RDMA_DONE = 3, /* Client signals reply completion */ + GF_RDMA_ERROR = 4 /* An RPC RDMA encoding error */ +} gf_rdma_proc_t; typedef enum gf_rdma_chunktype { - gf_rdma_noch = 0, /* no chunk */ - gf_rdma_readch, /* some argument through rdma read */ - gf_rdma_areadch, /* entire request through rdma read */ - gf_rdma_writech, /* some result through rdma write */ - gf_rdma_replych /* entire reply through rdma write */ -}gf_rdma_chunktype_t; + gf_rdma_noch = 0, /* no chunk */ + gf_rdma_readch, /* some argument through rdma read */ + gf_rdma_areadch, /* entire request through rdma read */ + gf_rdma_writech, /* some result through rdma write */ + gf_rdma_replych /* entire reply through rdma write */ +} gf_rdma_chunktype_t; /* If you are modifying __gf_rdma_header, please make sure to change - * GLUSTERFS_GF_RDMA_MAX_HEADER_SIZE defined in glusterfs.h to reflect your changes + * GLUSTERFS_GF_RDMA_MAX_HEADER_SIZE defined in glusterfs.h to reflect your + * changes */ struct __gf_rdma_header { - uint32_t rm_xid; /* Mirrors the RPC header xid */ - uint32_t rm_vers; /* Version of this protocol */ - uint32_t rm_credit; /* Buffers requested/granted */ - uint32_t rm_type; /* Type of message (enum gf_rdma_proc) */ - union { - struct { /* no chunks */ - uint32_t rm_empty[3]; /* 3 empty chunk lists */ - }__attribute__((packed)) rm_nochunks; - - struct { /* no chunks and padded */ - uint32_t rm_align; /* Padding alignment */ - uint32_t rm_thresh; /* Padding threshold */ - uint32_t rm_pempty[3]; /* 3 empty chunk lists */ - }__attribute__((packed)) rm_padded; - - struct { - uint32_t rm_type; - gf_rdma_err_vers_t rm_version; - }__attribute__ ((packed)) rm_error; - - uint32_t rm_chunks[0]; /* read, write and reply chunks */ - }__attribute__ ((packed)) rm_body; + uint32_t rm_xid; /* Mirrors the RPC header xid */ + uint32_t rm_vers; /* Version of this protocol */ + uint32_t rm_credit; /* Buffers requested/granted */ + uint32_t rm_type; /* Type of message (enum gf_rdma_proc) */ + union { + struct { /* no chunks */ + uint32_t rm_empty[3]; /* 3 empty chunk lists */ + } __attribute__((packed)) rm_nochunks; + + struct { /* no chunks and padded */ + uint32_t rm_align; /* Padding alignment */ + uint32_t rm_thresh; /* Padding threshold */ + uint32_t rm_pempty[3]; /* 3 empty chunk lists */ + } __attribute__((packed)) rm_padded; + + struct { + uint32_t rm_type; + gf_rdma_err_vers_t rm_version; + } __attribute__((packed)) rm_error; + + uint32_t rm_chunks[0]; /* read, write and reply chunks */ + } __attribute__((packed)) rm_body; } __attribute__((packed)); typedef struct __gf_rdma_header gf_rdma_header_t; -/* If you are modifying __gf_rdma_segment or __gf_rdma_read_chunk, please make sure - * to change GLUSTERFS_GF_RDMA_MAX_HEADER_SIZE defined in glusterfs.h to reflect - * your changes. +/* If you are modifying __gf_rdma_segment or __gf_rdma_read_chunk, please make + * sure to change GLUSTERFS_GF_RDMA_MAX_HEADER_SIZE defined in glusterfs.h to + * reflect your changes. */ struct __gf_rdma_segment { - uint32_t rs_handle; /* Registered memory handle */ - uint32_t rs_length; /* Length of the chunk in bytes */ - uint64_t rs_offset; /* Chunk virtual address or offset */ + uint32_t rs_handle; /* Registered memory handle */ + uint32_t rs_length; /* Length of the chunk in bytes */ + uint64_t rs_offset; /* Chunk virtual address or offset */ } __attribute__((packed)); typedef struct __gf_rdma_segment gf_rdma_segment_t; /* read chunk(s), encoded as a linked list. */ struct __gf_rdma_read_chunk { - uint32_t rc_discrim; /* 1 indicates presence */ - uint32_t rc_position; /* Position in XDR stream */ - gf_rdma_segment_t rc_target; + uint32_t rc_discrim; /* 1 indicates presence */ + uint32_t rc_position; /* Position in XDR stream */ + gf_rdma_segment_t rc_target; } __attribute__((packed)); typedef struct __gf_rdma_read_chunk gf_rdma_read_chunk_t; /* write chunk, and reply chunk. */ struct __gf_rdma_write_chunk { - gf_rdma_segment_t wc_target; + gf_rdma_segment_t wc_target; } __attribute__((packed)); typedef struct __gf_rdma_write_chunk gf_rdma_write_chunk_t; /* write chunk(s), encoded as a counted array. */ struct __gf_rdma_write_array { - uint32_t wc_discrim; /* 1 indicates presence */ - uint32_t wc_nchunks; /* Array count */ - struct __gf_rdma_write_chunk wc_array[0]; + uint32_t wc_discrim; /* 1 indicates presence */ + uint32_t wc_nchunks; /* Array count */ + struct __gf_rdma_write_chunk wc_array[0]; } __attribute__((packed)); typedef struct __gf_rdma_write_array gf_rdma_write_array_t; /* options per transport end point */ struct __gf_rdma_options { - int32_t port; - char *device_name; - enum ibv_mtu mtu; - int32_t send_count; - int32_t recv_count; - uint64_t recv_size; - uint64_t send_size; - uint8_t attr_timeout; - uint8_t attr_retry_cnt; - uint8_t attr_rnr_retry; - uint32_t backlog; + int32_t port; + char *device_name; + enum ibv_mtu mtu; + int32_t send_count; + int32_t recv_count; + uint64_t recv_size; + uint64_t send_size; + uint8_t attr_timeout; + uint8_t attr_retry_cnt; + uint8_t attr_rnr_retry; + uint32_t backlog; }; typedef struct __gf_rdma_options gf_rdma_options_t; struct __gf_rdma_reply_info { - uint32_t rm_xid; /* xid in network endian */ - gf_rdma_chunktype_t type; /* - * can be either gf_rdma_replych - * or gf_rdma_writech. - */ - gf_rdma_write_array_t *wc_array; - struct mem_pool *pool; + uint32_t rm_xid; /* xid in network endian */ + gf_rdma_chunktype_t type; /* + * can be either gf_rdma_replych + * or gf_rdma_writech. + */ + gf_rdma_write_array_t *wc_array; + struct mem_pool *pool; }; typedef struct __gf_rdma_reply_info gf_rdma_reply_info_t; struct __gf_rdma_ioq { - union { - struct list_head list; - struct { - struct __gf_rdma_ioq *next; - struct __gf_rdma_ioq *prev; - }; + union { + struct list_head list; + struct { + struct __gf_rdma_ioq *next; + struct __gf_rdma_ioq *prev; }; + }; + + char is_request; + struct iovec rpchdr[MAX_IOVEC]; + int rpchdr_count; + struct iovec proghdr[MAX_IOVEC]; + int proghdr_count; + struct iovec prog_payload[MAX_IOVEC]; + int prog_payload_count; + + struct iobref *iobref; + + union { + struct __gf_rdma_ioq_request { + /* used to build reply_chunk for GF_RDMA_NOMSG type msgs */ + struct iovec rsphdr_vec[MAX_IOVEC]; + int rsphdr_count; + + /* + * used to build write_array during operations like + * read. + */ + struct iovec rsp_payload[MAX_IOVEC]; + int rsp_payload_count; + + struct rpc_req *rpc_req; /* FIXME: hack! hack! should be + * cleaned up later + */ + struct iobref *rsp_iobref; + } request; + + gf_rdma_reply_info_t *reply_info; + } msg; - char is_request; - struct iovec rpchdr[MAX_IOVEC]; - int rpchdr_count; - struct iovec proghdr[MAX_IOVEC]; - int proghdr_count; - struct iovec prog_payload[MAX_IOVEC]; - int prog_payload_count; - - struct iobref *iobref; - - union { - struct __gf_rdma_ioq_request { - /* used to build reply_chunk for GF_RDMA_NOMSG type msgs */ - struct iovec rsphdr_vec[MAX_IOVEC]; - int rsphdr_count; - - /* - * used to build write_array during operations like - * read. - */ - struct iovec rsp_payload[MAX_IOVEC]; - int rsp_payload_count; - - struct rpc_req *rpc_req; /* FIXME: hack! hack! should be - * cleaned up later - */ - struct iobref *rsp_iobref; - }request; - - gf_rdma_reply_info_t *reply_info; - }msg; - - struct mem_pool *pool; + struct mem_pool *pool; }; typedef struct __gf_rdma_ioq gf_rdma_ioq_t; typedef enum __gf_rdma_send_post_type { - GF_RDMA_SEND_POST_NO_CHUNKLIST, /* post which is sent using rdma-send - * and the msg carries no - * chunklists. - */ - GF_RDMA_SEND_POST_READ_CHUNKLIST, /* post which is sent using rdma-send - * and the msg carries only read - * chunklist. - */ - GF_RDMA_SEND_POST_WRITE_CHUNKLIST, /* post which is sent using - * rdma-send and the msg carries - * only write chunklist. - */ - GF_RDMA_SEND_POST_READ_WRITE_CHUNKLIST, /* post which is sent using - * rdma-send and the msg - * carries both read and - * write chunklists. - */ - GF_RDMA_SEND_POST_GF_RDMA_READ, /* RDMA read */ - GF_RDMA_SEND_POST_GF_RDMA_WRITE, /* RDMA write */ -}gf_rdma_send_post_type_t; + GF_RDMA_SEND_POST_NO_CHUNKLIST, /* post which is sent using rdma-send + * and the msg carries no + * chunklists. + */ + GF_RDMA_SEND_POST_READ_CHUNKLIST, /* post which is sent using rdma-send + * and the msg carries only read + * chunklist. + */ + GF_RDMA_SEND_POST_WRITE_CHUNKLIST, /* post which is sent using + * rdma-send and the msg carries + * only write chunklist. + */ + GF_RDMA_SEND_POST_READ_WRITE_CHUNKLIST, /* post which is sent using + * rdma-send and the msg + * carries both read and + * write chunklists. + */ + GF_RDMA_SEND_POST_GF_RDMA_READ, /* RDMA read */ + GF_RDMA_SEND_POST_GF_RDMA_WRITE, /* RDMA write */ +} gf_rdma_send_post_type_t; /* represents one communication peer, two per transport_t */ struct __gf_rdma_peer { - rpc_transport_t *trans; - struct rdma_cm_id *cm_id; - struct ibv_qp *qp; - pthread_t rdma_event_thread; - char quota_set; - - int32_t recv_count; - int32_t send_count; - int32_t recv_size; - int32_t send_size; - - int32_t quota; - union { - struct list_head ioq; - struct { - gf_rdma_ioq_t *ioq_next; - gf_rdma_ioq_t *ioq_prev; - }; + rpc_transport_t *trans; + struct rdma_cm_id *cm_id; + struct ibv_qp *qp; + pthread_t rdma_event_thread; + char quota_set; + + int32_t recv_count; + int32_t send_count; + int32_t recv_size; + int32_t send_size; + + int32_t quota; + union { + struct list_head ioq; + struct { + gf_rdma_ioq_t *ioq_next; + gf_rdma_ioq_t *ioq_prev; }; - - /* QP attributes, needed to connect with remote QP */ - int32_t local_lid; - int32_t local_psn; - int32_t local_qpn; - int32_t remote_lid; - int32_t remote_psn; - int32_t remote_qpn; + }; + + /* QP attributes, needed to connect with remote QP */ + int32_t local_lid; + int32_t local_psn; + int32_t local_qpn; + int32_t remote_lid; + int32_t remote_psn; + int32_t remote_qpn; }; typedef struct __gf_rdma_peer gf_rdma_peer_t; struct __gf_rdma_post_context { - struct ibv_mr *mr[GF_RDMA_MAX_SEGMENTS]; - int mr_count; - struct iovec vector[MAX_IOVEC]; - int count; - struct iobref *iobref; - struct iobuf *hdr_iobuf; - char is_request; - int gf_rdma_reads; - gf_rdma_reply_info_t *reply_info; + struct ibv_mr *mr[GF_RDMA_MAX_SEGMENTS]; + int mr_count; + struct iovec vector[MAX_IOVEC]; + int count; + struct iobref *iobref; + struct iobuf *hdr_iobuf; + char is_request; + int gf_rdma_reads; + gf_rdma_reply_info_t *reply_info; }; typedef struct __gf_rdma_post_context gf_rdma_post_context_t; -typedef enum { - GF_RDMA_SEND_POST, - GF_RDMA_RECV_POST -} gf_rdma_post_type_t; +typedef enum { GF_RDMA_SEND_POST, GF_RDMA_RECV_POST } gf_rdma_post_type_t; struct __gf_rdma_post { - struct __gf_rdma_post *next, *prev; - struct ibv_mr *mr; - char *buf; - int32_t buf_size; - char aux; - int32_t reused; - struct __gf_rdma_device *device; - gf_rdma_post_type_t type; - gf_rdma_post_context_t ctx; - int refcount; - pthread_mutex_t lock; + struct __gf_rdma_post *next, *prev; + struct ibv_mr *mr; + char *buf; + int32_t buf_size; + char aux; + int32_t reused; + struct __gf_rdma_device *device; + gf_rdma_post_type_t type; + gf_rdma_post_context_t ctx; + int refcount; + pthread_mutex_t lock; }; typedef struct __gf_rdma_post gf_rdma_post_t; struct __gf_rdma_queue { - gf_rdma_post_t active_posts, passive_posts; - int32_t active_count, passive_count; - pthread_mutex_t lock; + gf_rdma_post_t active_posts, passive_posts; + int32_t active_count, passive_count; + pthread_mutex_t lock; }; typedef struct __gf_rdma_queue gf_rdma_queue_t; struct __gf_rdma_qpreg { - pthread_mutex_t lock; - int32_t count; - struct _qpent { - struct _qpent *next, *prev; - int32_t qp_num; - gf_rdma_peer_t *peer; - } ents[42]; + pthread_mutex_t lock; + int32_t count; + struct _qpent { + struct _qpent *next, *prev; + int32_t qp_num; + gf_rdma_peer_t *peer; + } ents[42]; }; typedef struct __gf_rdma_qpreg gf_rdma_qpreg_t; /* context per device, stored in global glusterfs_ctx_t->ib */ struct __gf_rdma_device { - struct __gf_rdma_device *next; - const char *device_name; - struct ibv_context *context; - int32_t port; - struct ibv_pd *pd; - struct ibv_srq *srq; - gf_rdma_qpreg_t qpreg; - struct ibv_comp_channel *send_chan, *recv_chan; - struct ibv_cq *send_cq, *recv_cq; - gf_rdma_queue_t sendq, recvq; - pthread_t send_thread, recv_thread, async_event_thread; - struct mem_pool *request_ctx_pool; - struct mem_pool *ioq_pool; - struct mem_pool *reply_info_pool; - struct list_head all_mr; - pthread_mutex_t all_mr_lock; + struct __gf_rdma_device *next; + const char *device_name; + struct ibv_context *context; + int32_t port; + struct ibv_pd *pd; + struct ibv_srq *srq; + gf_rdma_qpreg_t qpreg; + struct ibv_comp_channel *send_chan, *recv_chan; + struct ibv_cq *send_cq, *recv_cq; + gf_rdma_queue_t sendq, recvq; + pthread_t send_thread, recv_thread, async_event_thread; + struct mem_pool *request_ctx_pool; + struct mem_pool *ioq_pool; + struct mem_pool *reply_info_pool; + struct list_head all_mr; + pthread_mutex_t all_mr_lock; }; typedef struct __gf_rdma_device gf_rdma_device_t; - struct __gf_rdma_arena_mr { - struct list_head list; - struct iobuf_arena *iobuf_arena; - struct ibv_mr *mr; + struct list_head list; + struct iobuf_arena *iobuf_arena; + struct ibv_mr *mr; }; typedef struct __gf_rdma_arena_mr gf_rdma_arena_mr; struct __gf_rdma_ctx { - gf_rdma_device_t *device; - struct rdma_event_channel *rdma_cm_event_channel; - pthread_t rdma_cm_thread; - pthread_mutex_t lock; - int32_t dlcount; + gf_rdma_device_t *device; + struct rdma_event_channel *rdma_cm_event_channel; + pthread_t rdma_cm_thread; + pthread_mutex_t lock; + int32_t dlcount; }; typedef struct __gf_rdma_ctx gf_rdma_ctx_t; struct __gf_rdma_request_context { - struct ibv_mr *mr[GF_RDMA_MAX_SEGMENTS]; - int mr_count; - struct mem_pool *pool; - gf_rdma_peer_t *peer; - struct iobref *iobref; - struct iobref *rsp_iobref; + struct ibv_mr *mr[GF_RDMA_MAX_SEGMENTS]; + int mr_count; + struct mem_pool *pool; + gf_rdma_peer_t *peer; + struct iobref *iobref; + struct iobref *rsp_iobref; }; typedef struct __gf_rdma_request_context gf_rdma_request_context_t; typedef enum { - GF_RDMA_SERVER_LISTENER, - GF_RDMA_SERVER, - GF_RDMA_CLIENT, + GF_RDMA_SERVER_LISTENER, + GF_RDMA_SERVER, + GF_RDMA_CLIENT, } gf_rdma_transport_entity_t; struct __gf_rdma_private { - int32_t idx; - unsigned char connected; - in_addr_t addr; - unsigned short port; - - /* IB Verbs Driver specific variables, pointers */ - gf_rdma_peer_t peer; - struct __gf_rdma_device *device; - gf_rdma_options_t options; - - /* Used by trans->op->receive */ - char *data_ptr; - int32_t data_offset; - int32_t data_len; - - /* Mutex */ - pthread_mutex_t write_mutex; - rpc_transport_t *listener; - pthread_mutex_t recv_mutex; - pthread_cond_t recv_cond; - gf_rdma_transport_entity_t entity; - uint32_t backlog; + int32_t idx; + unsigned char connected; + in_addr_t addr; + unsigned short port; + + /* IB Verbs Driver specific variables, pointers */ + gf_rdma_peer_t peer; + struct __gf_rdma_device *device; + gf_rdma_options_t options; + + /* Used by trans->op->receive */ + char *data_ptr; + int32_t data_offset; + int32_t data_len; + + /* Mutex */ + pthread_mutex_t write_mutex; + rpc_transport_t *listener; + pthread_mutex_t recv_mutex; + pthread_cond_t recv_cond; + gf_rdma_transport_entity_t entity; + uint32_t backlog; }; -typedef struct __gf_rdma_private gf_rdma_private_t; +typedef struct __gf_rdma_private gf_rdma_private_t; #endif /* _XPORT_GF_RDMA_H */ diff --git a/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h b/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h index 97979970e73..6e9ea9a2925 100644 --- a/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h +++ b/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h @@ -23,85 +23,44 @@ * glfs-message-id.h. */ -GLFS_MSGID(RPC_TRANS_RDMA, - RDMA_MSG_PORT_BIND_FAILED, - RDMA_MSG_POST_CREATION_FAILED, - RDMA_MSG_DEREGISTER_ARENA_FAILED, - RDMA_MSG_MR_ALOC_FAILED, - RDMA_MSG_PREREG_BUFFER_FAILED, - RDMA_MSG_CQ_CREATION_FAILED, - RDMA_MSG_REQ_NOTIFY_CQ_REVQ_FAILED, - RDMA_MSG_QUERY_DEVICE_FAILED, - RDMA_MSG_REQ_NOTIFY_CQ_SENDQ_FAILED, - RDMA_MSG_SEND_COMP_CHAN_FAILED, - RDMA_MSG_RECV_COMP_CHAN_FAILED, - RDMA_MSG_ALOC_PROT_DOM_FAILED, - RDMA_MSG_CRE_SRQ_FAILED, - RDMA_MSG_ALOC_POST_FAILED, - RDMA_MSG_SEND_COMP_THREAD_FAILED, - RDMA_MSG_RECV_COMP_THREAD_FAILED, - RDMA_MSG_ASYNC_EVENT_THEAD_FAILED, - RDMA_MSG_GET_DEVICE_NAME_FAILED, - RDMA_MSG_GET_IB_DEVICE_FAILED, - RDMA_MSG_CREAT_INC_TRANS_FAILED, - RDMA_MSG_CREAT_QP_FAILED, - RDMA_MSG_ACCEPT_FAILED, - RDMA_MSG_CONNECT_FAILED, - RDMA_MSG_ROUTE_RESOLVE_FAILED, - RDMA_MSG_GET_DEVICE_FAILED, - RDMA_MSG_PEER_DISCONNECTED, - RDMA_MSG_ENCODE_ERROR, - RDMA_MSG_POST_SEND_FAILED, - RDMA_MSG_READ_CHUNK_VECTOR_FAILED, - RDMA_MSG_WRITE_CHUNK_VECTOR_FAILED, - RDMA_MSG_WRITE_REPLY_CHUNCK_CONFLICT, - RDMA_MSG_CHUNK_COUNT_GREAT_MAX_SEGMENTS, - RDMA_MSG_CREATE_READ_CHUNK_FAILED, - RDMA_MSG_CREATE_WRITE_REPLAY_FAILED, - RDMA_MSG_SEND_SIZE_GREAT_INLINE_THRESHOLD, - RDMA_MSG_REG_ACCESS_LOCAL_WRITE_FAILED, - RDMA_MSG_WRITE_PEER_FAILED, - RDMA_MSG_SEND_REPLY_FAILED, - RDMA_MSG_INVALID_CHUNK_TYPE, - RDMA_MSG_PROC_IOQ_ENTRY_FAILED, - RDMA_MSG_NEW_IOQ_ENTRY_FAILED, - RDMA_MSG_RPC_REPLY_CREATE_FAILED, - RDMA_MSG_GET_READ_CHUNK_FAILED, - RDMA_MSG_GET_WRITE_CHUNK_FAILED, - RDMA_MSG_REPLY_INFO_ALLOC_FAILED, - RDMA_MSG_RDMA_ERROR_RECEIVED, - RDMA_MSG_GET_REQ_INFO_RPC_FAILED, - RDMA_MSG_POLL_IN_NOTIFY_FAILED, - RDMA_MSG_HEADER_DECODE_FAILED, - RDMA_MSG_EVENT_SRQ_LIMIT_REACHED, - RDMA_MSG_UNRECG_MQ_VALUE, - RDMA_MSG_BUFFER_ERROR, - RDMA_MSG_OPTION_SET_FAILED, - RDMA_MSG_LISTEN_FAILED, - RDMA_MSG_INIT_IB_DEVICE_FAILED, - RDMA_MSG_WRITE_CLIENT_ERROR, - RDMA_MSG_CHUNKLIST_ERROR, - RDMA_MSG_INVALID_ENTRY, - RDMA_MSG_READ_CLIENT_ERROR, - RDMA_MSG_RPC_ST_ERROR, - RDMA_MSG_PEER_READ_FAILED, - RDMA_MSG_POST_MISSING, - RDMA_MSG_PEER_REQ_FAILED, - RDMA_MSG_PEER_REP_FAILED, - RDMA_MSG_EVENT_ERROR, - RDMA_MSG_IBV_GET_CQ_FAILED, - RDMA_MSG_IBV_REQ_NOTIFY_CQ_FAILED, - RDMA_MSG_RECV_ERROR, - RDMA_MSG_IBV_POLL_CQ_ERROR, - RDMA_MSG_RDMA_HANDLE_FAILED, - RDMA_MSG_CM_EVENT_FAILED, - RDMA_MSG_CLIENT_BIND_FAILED, - RDMA_MSG_RDMA_RESOLVE_ADDR_FAILED, - RDMA_MSG_NW_ADDR_UNKNOWN, - RDMA_MSG_RDMA_BIND_ADDR_FAILED, - RDMA_MSG_SEND_CLIENT_ERROR, - RDMA_MSG_UNRECG_MTU_VALUE -); +GLFS_MSGID( + RPC_TRANS_RDMA, RDMA_MSG_PORT_BIND_FAILED, RDMA_MSG_POST_CREATION_FAILED, + RDMA_MSG_DEREGISTER_ARENA_FAILED, RDMA_MSG_MR_ALOC_FAILED, + RDMA_MSG_PREREG_BUFFER_FAILED, RDMA_MSG_CQ_CREATION_FAILED, + RDMA_MSG_REQ_NOTIFY_CQ_REVQ_FAILED, RDMA_MSG_QUERY_DEVICE_FAILED, + RDMA_MSG_REQ_NOTIFY_CQ_SENDQ_FAILED, RDMA_MSG_SEND_COMP_CHAN_FAILED, + RDMA_MSG_RECV_COMP_CHAN_FAILED, RDMA_MSG_ALOC_PROT_DOM_FAILED, + RDMA_MSG_CRE_SRQ_FAILED, RDMA_MSG_ALOC_POST_FAILED, + RDMA_MSG_SEND_COMP_THREAD_FAILED, RDMA_MSG_RECV_COMP_THREAD_FAILED, + RDMA_MSG_ASYNC_EVENT_THEAD_FAILED, RDMA_MSG_GET_DEVICE_NAME_FAILED, + RDMA_MSG_GET_IB_DEVICE_FAILED, RDMA_MSG_CREAT_INC_TRANS_FAILED, + RDMA_MSG_CREAT_QP_FAILED, RDMA_MSG_ACCEPT_FAILED, RDMA_MSG_CONNECT_FAILED, + RDMA_MSG_ROUTE_RESOLVE_FAILED, RDMA_MSG_GET_DEVICE_FAILED, + RDMA_MSG_PEER_DISCONNECTED, RDMA_MSG_ENCODE_ERROR, + RDMA_MSG_POST_SEND_FAILED, RDMA_MSG_READ_CHUNK_VECTOR_FAILED, + RDMA_MSG_WRITE_CHUNK_VECTOR_FAILED, RDMA_MSG_WRITE_REPLY_CHUNCK_CONFLICT, + RDMA_MSG_CHUNK_COUNT_GREAT_MAX_SEGMENTS, RDMA_MSG_CREATE_READ_CHUNK_FAILED, + RDMA_MSG_CREATE_WRITE_REPLAY_FAILED, + RDMA_MSG_SEND_SIZE_GREAT_INLINE_THRESHOLD, + RDMA_MSG_REG_ACCESS_LOCAL_WRITE_FAILED, RDMA_MSG_WRITE_PEER_FAILED, + RDMA_MSG_SEND_REPLY_FAILED, RDMA_MSG_INVALID_CHUNK_TYPE, + RDMA_MSG_PROC_IOQ_ENTRY_FAILED, RDMA_MSG_NEW_IOQ_ENTRY_FAILED, + RDMA_MSG_RPC_REPLY_CREATE_FAILED, RDMA_MSG_GET_READ_CHUNK_FAILED, + RDMA_MSG_GET_WRITE_CHUNK_FAILED, RDMA_MSG_REPLY_INFO_ALLOC_FAILED, + RDMA_MSG_RDMA_ERROR_RECEIVED, RDMA_MSG_GET_REQ_INFO_RPC_FAILED, + RDMA_MSG_POLL_IN_NOTIFY_FAILED, RDMA_MSG_HEADER_DECODE_FAILED, + RDMA_MSG_EVENT_SRQ_LIMIT_REACHED, RDMA_MSG_UNRECG_MQ_VALUE, + RDMA_MSG_BUFFER_ERROR, RDMA_MSG_OPTION_SET_FAILED, RDMA_MSG_LISTEN_FAILED, + RDMA_MSG_INIT_IB_DEVICE_FAILED, RDMA_MSG_WRITE_CLIENT_ERROR, + RDMA_MSG_CHUNKLIST_ERROR, RDMA_MSG_INVALID_ENTRY, + RDMA_MSG_READ_CLIENT_ERROR, RDMA_MSG_RPC_ST_ERROR, + RDMA_MSG_PEER_READ_FAILED, RDMA_MSG_POST_MISSING, RDMA_MSG_PEER_REQ_FAILED, + RDMA_MSG_PEER_REP_FAILED, RDMA_MSG_EVENT_ERROR, RDMA_MSG_IBV_GET_CQ_FAILED, + RDMA_MSG_IBV_REQ_NOTIFY_CQ_FAILED, RDMA_MSG_RECV_ERROR, + RDMA_MSG_IBV_POLL_CQ_ERROR, RDMA_MSG_RDMA_HANDLE_FAILED, + RDMA_MSG_CM_EVENT_FAILED, RDMA_MSG_CLIENT_BIND_FAILED, + RDMA_MSG_RDMA_RESOLVE_ADDR_FAILED, RDMA_MSG_NW_ADDR_UNKNOWN, + RDMA_MSG_RDMA_BIND_ADDR_FAILED, RDMA_MSG_SEND_CLIENT_ERROR, + RDMA_MSG_UNRECG_MTU_VALUE); #endif /* !_RPC_TRANS_RDMA_MESSAGES_H_ */ - diff --git a/rpc/rpc-transport/socket/src/name.h b/rpc/rpc-transport/socket/src/name.h index 0a13d8a9624..85f8bb7040b 100644 --- a/rpc/rpc-transport/socket/src/name.h +++ b/rpc/rpc-transport/socket/src/name.h @@ -14,22 +14,20 @@ #include "compat.h" int32_t -client_bind (rpc_transport_t *this, - struct sockaddr *sockaddr, - socklen_t *sockaddr_len, - int sock); +client_bind(rpc_transport_t *this, struct sockaddr *sockaddr, + socklen_t *sockaddr_len, int sock); int32_t -socket_client_get_remote_sockaddr (rpc_transport_t *this, - struct sockaddr *sockaddr, - socklen_t *sockaddr_len, - sa_family_t *sa_family); +socket_client_get_remote_sockaddr(rpc_transport_t *this, + struct sockaddr *sockaddr, + socklen_t *sockaddr_len, + sa_family_t *sa_family); int32_t -socket_server_get_local_sockaddr (rpc_transport_t *this, struct sockaddr *addr, - socklen_t *addr_len, sa_family_t *sa_family); +socket_server_get_local_sockaddr(rpc_transport_t *this, struct sockaddr *addr, + socklen_t *addr_len, sa_family_t *sa_family); int32_t -get_transport_identifiers (rpc_transport_t *this); +get_transport_identifiers(rpc_transport_t *this); #endif /* _SOCKET_NAME_H */ diff --git a/rpc/rpc-transport/socket/src/socket-mem-types.h b/rpc/rpc-transport/socket/src/socket-mem-types.h index d1860e6c9a9..81635b72320 100644 --- a/rpc/rpc-transport/socket/src/socket-mem-types.h +++ b/rpc/rpc-transport/socket/src/socket-mem-types.h @@ -14,10 +14,10 @@ #include "mem-types.h" typedef enum gf_sock_mem_types_ { - gf_sock_connect_error_state_t = gf_common_mt_end + 1, - gf_sock_mt_lock_array, - gf_sock_mt_tid_wrap, - gf_sock_mt_end + gf_sock_connect_error_state_t = gf_common_mt_end + 1, + gf_sock_mt_lock_array, + gf_sock_mt_tid_wrap, + gf_sock_mt_end } gf_sock_mem_types_t; #endif diff --git a/rpc/rpc-transport/socket/src/socket.h b/rpc/rpc-transport/socket/src/socket.h index 4e65489f987..27db0ed427b 100644 --- a/rpc/rpc-transport/socket/src/socket.h +++ b/rpc/rpc-transport/socket/src/socket.h @@ -33,7 +33,7 @@ #define MAX_IOVEC 16 #endif /* MAX_IOVEC */ -#define GF_DEFAULT_SOCKET_LISTEN_PORT GF_DEFAULT_BASE_PORT +#define GF_DEFAULT_SOCKET_LISTEN_PORT GF_DEFAULT_BASE_PORT #define RPC_MAX_FRAGMENT_SIZE 0x7fffffff @@ -45,247 +45,246 @@ * setsockopt will fail. Having larger values might be beneficial for * IB links. */ -#define GF_DEFAULT_SOCKET_WINDOW_SIZE (0) -#define GF_MAX_SOCKET_WINDOW_SIZE (1 * GF_UNIT_MB) -#define GF_MIN_SOCKET_WINDOW_SIZE (0) -#define GF_USE_DEFAULT_KEEPALIVE (-1) +#define GF_DEFAULT_SOCKET_WINDOW_SIZE (0) +#define GF_MAX_SOCKET_WINDOW_SIZE (1 * GF_UNIT_MB) +#define GF_MIN_SOCKET_WINDOW_SIZE (0) +#define GF_USE_DEFAULT_KEEPALIVE (-1) -#define GF_KEEPALIVE_TIME (20) -#define GF_KEEPALIVE_INTERVAL (2) -#define GF_KEEPALIVE_COUNT (9) +#define GF_KEEPALIVE_TIME (20) +#define GF_KEEPALIVE_INTERVAL (2) +#define GF_KEEPALIVE_COUNT (9) typedef enum { - SP_STATE_NADA = 0, - SP_STATE_COMPLETE, - SP_STATE_READING_FRAGHDR, - SP_STATE_READ_FRAGHDR, - SP_STATE_READING_FRAG, + SP_STATE_NADA = 0, + SP_STATE_COMPLETE, + SP_STATE_READING_FRAGHDR, + SP_STATE_READ_FRAGHDR, + SP_STATE_READING_FRAG, } sp_rpcrecord_state_t; typedef enum { - SP_STATE_RPCFRAG_INIT, - SP_STATE_READING_MSGTYPE, - SP_STATE_READ_MSGTYPE, - SP_STATE_NOTIFYING_XID + SP_STATE_RPCFRAG_INIT, + SP_STATE_READING_MSGTYPE, + SP_STATE_READ_MSGTYPE, + SP_STATE_NOTIFYING_XID } sp_rpcfrag_state_t; typedef enum { - SP_STATE_SIMPLE_MSG_INIT, - SP_STATE_READING_SIMPLE_MSG, + SP_STATE_SIMPLE_MSG_INIT, + SP_STATE_READING_SIMPLE_MSG, } sp_rpcfrag_simple_msg_state_t; typedef enum { - SP_STATE_VECTORED_REQUEST_INIT, - SP_STATE_READING_CREDBYTES, - SP_STATE_READ_CREDBYTES, /* read credential data. */ - SP_STATE_READING_VERFBYTES, - SP_STATE_READ_VERFBYTES, /* read verifier data */ - SP_STATE_READING_PROGHDR, - SP_STATE_READ_PROGHDR, - SP_STATE_READING_PROGHDR_XDATA, - SP_STATE_READ_PROGHDR_XDATA, /* It's a bad "name" in the generic - RPC state machine, but greatly - aids code review (and xdata is - the only "consumer" of this state) - */ - SP_STATE_READING_PROG, + SP_STATE_VECTORED_REQUEST_INIT, + SP_STATE_READING_CREDBYTES, + SP_STATE_READ_CREDBYTES, /* read credential data. */ + SP_STATE_READING_VERFBYTES, + SP_STATE_READ_VERFBYTES, /* read verifier data */ + SP_STATE_READING_PROGHDR, + SP_STATE_READ_PROGHDR, + SP_STATE_READING_PROGHDR_XDATA, + SP_STATE_READ_PROGHDR_XDATA, /* It's a bad "name" in the generic + RPC state machine, but greatly + aids code review (and xdata is + the only "consumer" of this state) + */ + SP_STATE_READING_PROG, } sp_rpcfrag_vectored_request_state_t; typedef enum { - SP_STATE_REQUEST_HEADER_INIT, - SP_STATE_READING_RPCHDR1, - SP_STATE_READ_RPCHDR1, /* read msg from beginning till and - * including credlen - */ + SP_STATE_REQUEST_HEADER_INIT, + SP_STATE_READING_RPCHDR1, + SP_STATE_READ_RPCHDR1, /* read msg from beginning till and + * including credlen + */ } sp_rpcfrag_request_header_state_t; struct ioq { - union { - struct list_head list; - struct { - struct ioq *next; - struct ioq *prev; - }; + union { + struct list_head list; + struct { + struct ioq *next; + struct ioq *prev; }; - - uint32_t fraghdr; - struct iovec vector[MAX_IOVEC]; - int count; - struct iovec *pending_vector; - int pending_count; - struct iobref *iobref; + }; + + uint32_t fraghdr; + struct iovec vector[MAX_IOVEC]; + int count; + struct iovec *pending_vector; + int pending_count; + struct iobref *iobref; }; typedef struct { - sp_rpcfrag_request_header_state_t header_state; - sp_rpcfrag_vectored_request_state_t vector_state; - int vector_sizer_state; + sp_rpcfrag_request_header_state_t header_state; + sp_rpcfrag_vectored_request_state_t vector_state; + int vector_sizer_state; } sp_rpcfrag_request_state_t; typedef enum { - SP_STATE_VECTORED_REPLY_STATUS_INIT, - SP_STATE_READING_REPLY_STATUS, - SP_STATE_READ_REPLY_STATUS, + SP_STATE_VECTORED_REPLY_STATUS_INIT, + SP_STATE_READING_REPLY_STATUS, + SP_STATE_READ_REPLY_STATUS, } sp_rpcfrag_vectored_reply_status_state_t; typedef enum { - SP_STATE_ACCEPTED_SUCCESS_REPLY_INIT, - SP_STATE_READING_PROC_HEADER, - SP_STATE_READING_PROC_OPAQUE, - SP_STATE_READ_PROC_OPAQUE, - SP_STATE_READ_PROC_HEADER, + SP_STATE_ACCEPTED_SUCCESS_REPLY_INIT, + SP_STATE_READING_PROC_HEADER, + SP_STATE_READING_PROC_OPAQUE, + SP_STATE_READ_PROC_OPAQUE, + SP_STATE_READ_PROC_HEADER, } sp_rpcfrag_vectored_reply_accepted_success_state_t; typedef enum { - SP_STATE_ACCEPTED_REPLY_INIT, - SP_STATE_READING_REPLY_VERFLEN, - SP_STATE_READ_REPLY_VERFLEN, - SP_STATE_READING_REPLY_VERFBYTES, - SP_STATE_READ_REPLY_VERFBYTES, + SP_STATE_ACCEPTED_REPLY_INIT, + SP_STATE_READING_REPLY_VERFLEN, + SP_STATE_READ_REPLY_VERFLEN, + SP_STATE_READING_REPLY_VERFBYTES, + SP_STATE_READ_REPLY_VERFBYTES, } sp_rpcfrag_vectored_reply_accepted_state_t; typedef struct { - uint32_t accept_status; - sp_rpcfrag_vectored_reply_status_state_t status_state; - sp_rpcfrag_vectored_reply_accepted_state_t accepted_state; - sp_rpcfrag_vectored_reply_accepted_success_state_t accepted_success_state; + uint32_t accept_status; + sp_rpcfrag_vectored_reply_status_state_t status_state; + sp_rpcfrag_vectored_reply_accepted_state_t accepted_state; + sp_rpcfrag_vectored_reply_accepted_success_state_t accepted_success_state; } sp_rpcfrag_vectored_reply_state_t; struct gf_sock_incoming_frag { - char *fragcurrent; - uint32_t bytes_read; - uint32_t remaining_size; - struct iovec vector; - struct iovec *pending_vector; - union { - sp_rpcfrag_request_state_t request; - sp_rpcfrag_vectored_reply_state_t reply; - } call_body; - - sp_rpcfrag_simple_msg_state_t simple_state; - sp_rpcfrag_state_t state; + char *fragcurrent; + uint32_t bytes_read; + uint32_t remaining_size; + struct iovec vector; + struct iovec *pending_vector; + union { + sp_rpcfrag_request_state_t request; + sp_rpcfrag_vectored_reply_state_t reply; + } call_body; + + sp_rpcfrag_simple_msg_state_t simple_state; + sp_rpcfrag_state_t state; }; #define GF_SOCKET_RA_MAX 1024 struct gf_sock_incoming { - sp_rpcrecord_state_t record_state; - struct gf_sock_incoming_frag frag; - char *proghdr_base_addr; - struct iobuf *iobuf; - size_t iobuf_size; - struct iovec vector[2]; - int count; - struct iovec payload_vector; - struct iobref *iobref; - rpc_request_info_t *request_info; - struct iovec *pending_vector; - int pending_count; - uint32_t fraghdr; - char complete_record; - msg_type_t msg_type; - size_t total_bytes_read; - - size_t ra_read; - size_t ra_max; - size_t ra_served; - char *ra_buf; + sp_rpcrecord_state_t record_state; + struct gf_sock_incoming_frag frag; + char *proghdr_base_addr; + struct iobuf *iobuf; + size_t iobuf_size; + struct iovec vector[2]; + int count; + struct iovec payload_vector; + struct iobref *iobref; + rpc_request_info_t *request_info; + struct iovec *pending_vector; + int pending_count; + uint32_t fraghdr; + char complete_record; + msg_type_t msg_type; + size_t total_bytes_read; + + size_t ra_read; + size_t ra_max; + size_t ra_served; + char *ra_buf; }; typedef enum { - OT_IDLE, /* Uninitialized or termination complete. */ - OT_SPAWNING, /* Past pthread_create but not in thread yet. */ - OT_RUNNING, /* Poller thread running normally. */ - OT_CALLBACK, /* Poller thread in the middle of a callback. */ - OT_PLEASE_DIE, /* Poller termination requested. */ + OT_IDLE, /* Uninitialized or termination complete. */ + OT_SPAWNING, /* Past pthread_create but not in thread yet. */ + OT_RUNNING, /* Poller thread running normally. */ + OT_CALLBACK, /* Poller thread in the middle of a callback. */ + OT_PLEASE_DIE, /* Poller termination requested. */ } ot_state_t; typedef struct { - int32_t sock; - int32_t idx; - int32_t gen; - /* -1 = not connected. 0 = in progress. 1 = connected */ - char connected; - /* 1 = connect failed for reasons other than EINPROGRESS/ENOENT - see socket_connect for details */ - char connect_failed; - char bio; - char connect_finish_log; - char submit_log; - union { - struct list_head ioq; - struct { - struct ioq *ioq_next; - struct ioq *ioq_prev; - }; - }; - struct gf_sock_incoming incoming; - pthread_mutex_t in_lock; - pthread_mutex_t out_lock; - pthread_mutex_t cond_lock; - pthread_cond_t cond; - int windowsize; - char lowlat; - char nodelay; - int keepalive; - int keepaliveidle; - int keepaliveintvl; - int keepalivecnt; - int timeout; - uint32_t backlog; - gf_boolean_t read_fail_log; - gf_boolean_t ssl_enabled; /* outbound I/O */ - gf_boolean_t mgmt_ssl; /* outbound mgmt */ - mgmt_ssl_t srvr_ssl; - gf_boolean_t use_ssl; - SSL_METHOD *ssl_meth; - SSL_CTX *ssl_ctx; - int ssl_session_id; - BIO *ssl_sbio; - SSL *ssl_ssl; - char *ssl_own_cert; - char *ssl_private_key; - char *ssl_ca_list; - pthread_t thread; - int pipe[2]; - gf_boolean_t is_server; - int log_ctr; - gf_boolean_t ssl_accepted; /* To indicate SSL_accept() */ - gf_boolean_t ssl_connected;/* or SSL_connect() has been - * been completed on this socket. - * These are valid only when - * use_ssl is true. - */ - /* SSL_CTX is created for each transport. Since we are now using non- - * blocking mechanism for SSL_accept() and SSL_connect(), the SSL - * context is created on the first EPOLLIN event which may lead to - * SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE and may not complete the - * SSL connection at the first attempt. - * ssl_context_created is a flag to note that we've created the SSL - * context for the connection so that we don't blindly create any more - * while !ssl_accepted or !ssl_connected. - */ - gf_boolean_t ssl_context_created; - gf_boolean_t accepted; /* explicit flag to be set in - * socket_event_handler() for - * newly accepted socket - */ - - /* ssl_error_required is used only during the SSL connection setup - * phase. - * It holds the error code returned by SSL_get_error() and is used to - * arm the epoll event set for the required event for the specific fd. - */ - int ssl_error_required; - - GF_REF_DECL; /* refcount to keep track of socket_poller - threads */ + int32_t sock; + int32_t idx; + int32_t gen; + /* -1 = not connected. 0 = in progress. 1 = connected */ + char connected; + /* 1 = connect failed for reasons other than EINPROGRESS/ENOENT + see socket_connect for details */ + char connect_failed; + char bio; + char connect_finish_log; + char submit_log; + union { + struct list_head ioq; struct { - pthread_mutex_t lock; - pthread_cond_t cond; - uint64_t in_progress; - } notify; + struct ioq *ioq_next; + struct ioq *ioq_prev; + }; + }; + struct gf_sock_incoming incoming; + pthread_mutex_t in_lock; + pthread_mutex_t out_lock; + pthread_mutex_t cond_lock; + pthread_cond_t cond; + int windowsize; + char lowlat; + char nodelay; + int keepalive; + int keepaliveidle; + int keepaliveintvl; + int keepalivecnt; + int timeout; + uint32_t backlog; + gf_boolean_t read_fail_log; + gf_boolean_t ssl_enabled; /* outbound I/O */ + gf_boolean_t mgmt_ssl; /* outbound mgmt */ + mgmt_ssl_t srvr_ssl; + gf_boolean_t use_ssl; + SSL_METHOD *ssl_meth; + SSL_CTX *ssl_ctx; + int ssl_session_id; + BIO *ssl_sbio; + SSL *ssl_ssl; + char *ssl_own_cert; + char *ssl_private_key; + char *ssl_ca_list; + pthread_t thread; + int pipe[2]; + gf_boolean_t is_server; + int log_ctr; + gf_boolean_t ssl_accepted; /* To indicate SSL_accept() */ + gf_boolean_t ssl_connected; /* or SSL_connect() has been + * been completed on this socket. + * These are valid only when + * use_ssl is true. + */ + /* SSL_CTX is created for each transport. Since we are now using non- + * blocking mechanism for SSL_accept() and SSL_connect(), the SSL + * context is created on the first EPOLLIN event which may lead to + * SSL_ERROR_WANT_READ/SSL_ERROR_WANT_WRITE and may not complete the + * SSL connection at the first attempt. + * ssl_context_created is a flag to note that we've created the SSL + * context for the connection so that we don't blindly create any more + * while !ssl_accepted or !ssl_connected. + */ + gf_boolean_t ssl_context_created; + gf_boolean_t accepted; /* explicit flag to be set in + * socket_event_handler() for + * newly accepted socket + */ + + /* ssl_error_required is used only during the SSL connection setup + * phase. + * It holds the error code returned by SSL_get_error() and is used to + * arm the epoll event set for the required event for the specific fd. + */ + int ssl_error_required; + + GF_REF_DECL; /* refcount to keep track of socket_poller + threads */ + struct { + pthread_mutex_t lock; + pthread_cond_t cond; + uint64_t in_progress; + } notify; } socket_private_t; - #endif |