summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorHumble Devassy Chirammal <hchiramm@redhat.com>2015-04-29 11:38:11 +0530
committerRaghavendra G <rgowdapp@redhat.com>2015-04-29 22:18:01 -0700
commit4306245aef7cdcbfa6d7a59dccd031d4ada54105 (patch)
tree38ca1d65ba14864687f317e5406f010ca6ba7f6e /rpc
parentd28a99d6f20650e5d78accb1e16bd3721a2b6d02 (diff)
rdma: porting rdma to a new message id logging format
Change-Id: I71e940817ae0a9378e82332d5a8569114fc13482 BUG: 1194640 Signed-off-by: Humble Devassy Chirammal <hchiramm@redhat.com> Reviewed-on: http://review.gluster.org/9868 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra G <rgowdapp@redhat.com> Tested-by: Raghavendra G <rgowdapp@redhat.com>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/rpc-lib/src/Makefile.am3
-rw-r--r--rpc/rpc-lib/src/rpc-lib-messages.h83
-rw-r--r--rpc/rpc-transport/rdma/src/Makefile.am2
-rw-r--r--rpc/rpc-transport/rdma/src/name.c149
-rw-r--r--rpc/rpc-transport/rdma/src/rdma.c698
-rw-r--r--rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h217
6 files changed, 780 insertions, 372 deletions
diff --git a/rpc/rpc-lib/src/Makefile.am b/rpc/rpc-lib/src/Makefile.am
index 6a098c9a8ce..36eb245bc06 100644
--- a/rpc/rpc-lib/src/Makefile.am
+++ b/rpc/rpc-lib/src/Makefile.am
@@ -8,7 +8,8 @@ libgfrpc_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
libgfrpc_la_LDFLAGS = -version-info $(LIBGFRPC_LT_VERSION) $(GF_LDFLAGS)
noinst_HEADERS = rpcsvc.h rpc-transport.h xdr-common.h xdr-rpc.h xdr-rpcclnt.h \
- rpc-clnt.h rpcsvc-common.h protocol-common.h rpc-drc.h rpc-clnt-ping.h
+ rpc-clnt.h rpcsvc-common.h protocol-common.h rpc-drc.h rpc-clnt-ping.h \
+ rpc-lib-messages.h
AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \
-I$(top_srcdir)/rpc/xdr/src \
diff --git a/rpc/rpc-lib/src/rpc-lib-messages.h b/rpc/rpc-lib/src/rpc-lib-messages.h
new file mode 100644
index 00000000000..51351e82283
--- /dev/null
+++ b/rpc/rpc-lib/src/rpc-lib-messages.h
@@ -0,0 +1,83 @@
+/*
+ Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of GlusterFS.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+#ifndef _RPC_LIB_MESSAGES_H_
+#define _RPC_LIB_MESSAGES_H_
+
+#ifndef _CONFIG_H
+#define _CONFIG_H
+#include "config.h"
+#endif
+
+#include "glfs-message-id.h"
+
+/* NOTE: Rules for message additions
+ * 1) Each instance of a message is _better_ left with a unique message ID, even
+ * if the message format is the same. Reasoning is that, if the message
+ * format needs to change in one instance, the other instances are not
+ * impacted or the new change does not change the ID of the instance being
+ * modified.
+ * 2) Addition of a message,
+ * - Should increment the GLFS_NUM_MESSAGES
+ * - Append to the list of messages defined, towards the end
+ * - Retain macro naming as glfs_msg_X (for redability across developers)
+ * NOTE: Rules for message format modifications
+ * 3) Check acorss the code if the message ID macro in question is reused
+ * anywhere. If reused then then the modifications should ensure correctness
+ * everywhere, or needs a new message ID as (1) above was not adhered to. If
+ * not used anywhere, proceed with the required modification.
+ * NOTE: Rules for message deletion
+ * 4) Check (3) and if used anywhere else, then cannot be deleted. If not used
+ * anywhere, then can be deleted, but will leave a hole by design, as
+ * addition rules specify modification to the end of the list and not filling
+ * holes.
+ */
+
+#define GLFS_RPC_LIB_BASE GLFS_MSGID_COMP_RPC_LIB
+#define GLFS_NUM_MESSAGES 12
+#define GLFS_RPC_LIB_MSGID_END (GLFS_RPC_LIB_BASE + GLFS_NUM_MESSAGES + 1)
+
+/* Messages with message IDs */
+
+#define glfs_msg_start_x GLFS_RPC_LIB_BASE, "Invalid: Start of messages"
+
+/*------------*/
+/* First slot is allocated for common transport msg ids */
+
+#define TRANS_MSG_ADDR_FAMILY_NOT_SPECIFIED (GLFS_RPC_LIB_BASE + 1)
+
+#define TRANS_MSG_UNKNOWN_ADDR_FAMILY (GLFS_RPC_LIB_BASE + 2)
+
+#define TRANS_MSG_REMOTE_HOST_ERROR (GLFS_RPC_LIB_BASE + 3)
+
+#define TRANS_MSG_DNS_RESOL_FAILED (GLFS_RPC_LIB_BASE + 4)
+
+#define TRANS_MSG_LISTEN_PATH_ERROR (GLFS_RPC_LIB_BASE + 5)
+
+#define TRANS_MSG_CONNECT_PATH_ERROR (GLFS_RPC_LIB_BASE + 6)
+
+#define TRANS_MSG_GET_ADDR_INFO_FAILED (GLFS_RPC_LIB_BASE + 7)
+
+#define TRANS_MSG_PORT_BIND_FAILED (GLFS_RPC_LIB_BASE + 8)
+
+#define TRANS_MSG_INET_ERROR (GLFS_RPC_LIB_BASE + 9)
+
+#define TRANS_MSG_GET_NAME_INFO_FAILED (GLFS_RPC_LIB_BASE + 10)
+
+#define TRANS_MSG_TRANSPORT_ERROR (GLFS_RPC_LIB_BASE + 11)
+
+#define TRANS_MSG_TIMEOUT_EXCEEDED (GLFS_RPC_LIB_BASE + 12)
+
+/*------------*/
+
+#define glfs_msg_end_x GLFS_RPC_LIB_MSGID_END, "Invalid: End of messages"
+
+#endif /* !_RPC_LIB_MESSAGES_H_ */
+
diff --git a/rpc/rpc-transport/rdma/src/Makefile.am b/rpc/rpc-transport/rdma/src/Makefile.am
index fed139e7c8d..6526b6ce790 100644
--- a/rpc/rpc-transport/rdma/src/Makefile.am
+++ b/rpc/rpc-transport/rdma/src/Makefile.am
@@ -9,7 +9,7 @@ rdma_la_SOURCES = rdma.c name.c
rdma_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
-libverbs -lrdmacm
-noinst_HEADERS = rdma.h name.h
+noinst_HEADERS = rdma.h name.h rpc-trans-rdma-messages.h
-I$(top_srcdir)/libglusterfs/src -I$(top_srcdir)/rpc/rpc-lib/src/ \
-I$(top_srcdir)/xlators/protocol/lib/src/ $(GF_CFLAGS)
diff --git a/rpc/rpc-transport/rdma/src/name.c b/rpc/rpc-transport/rdma/src/name.c
index 52ce5bbce55..97b2e37121e 100644
--- a/rpc/rpc-transport/rdma/src/name.c
+++ b/rpc/rpc-transport/rdma/src/name.c
@@ -22,6 +22,8 @@
#include "rpc-transport.h"
#include "rdma.h"
#include "common-utils.h"
+#include "rpc-lib-messages.h"
+#include "rpc-trans-rdma-messages.h"
int32_t
@@ -38,7 +40,7 @@ af_inet_bind_to_port_lt_ceiling (struct rdma_cm_id *cm_id,
{
int32_t ret = -1;
uint16_t port = ceiling - 1;
- // by default assume none of the ports are blocked and all are available
+ /* by default assume none of the ports are blocked and all are available */
gf_boolean_t ports[1024] = {_gf_false,};
int i = 0;
@@ -48,10 +50,8 @@ af_inet_bind_to_port_lt_ceiling (struct rdma_cm_id *cm_id,
ports[i] = _gf_false;
}
- while (port)
- {
- switch (sockaddr->sa_family)
- {
+ while (port) {
+ switch (sockaddr->sa_family) {
case AF_INET6:
((struct sockaddr_in6 *)sockaddr)->sin6_port
= htons (port);
@@ -63,7 +63,7 @@ af_inet_bind_to_port_lt_ceiling (struct rdma_cm_id *cm_id,
= htons (port);
break;
}
- // ignore the reserved ports
+ /* ignore the reserved ports */
if (ports[port] == _gf_true) {
port--;
continue;
@@ -134,7 +134,8 @@ client_fill_address_family (rpc_transport_t *this, struct sockaddr *sockaddr)
if (!(remote_host_data || connect_path_data) ||
(remote_host_data && connect_path_data)) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_ADDR_FAMILY_NOT_SPECIFIED,
"address-family not specified and not able to "
"determine the same from other options "
"(remote-host:%s and connect-path:%s)",
@@ -144,14 +145,13 @@ client_fill_address_family (rpc_transport_t *this, struct sockaddr *sockaddr)
}
if (remote_host_data) {
- gf_log (this->name, GF_LOG_DEBUG,
- "address-family not specified, guessing it "
- "to be inet/inet6");
+ gf_msg_debug (this->name, 0, "address-family not "
+ "specified, guessing it to be "
+ "inet/inet6");
sockaddr->sa_family = AF_UNSPEC;
} else {
- gf_log (this->name, GF_LOG_DEBUG,
- "address-family not specified, guessing it "
- "to be unix");
+ gf_msg_debug (this->name, 0, "address-family not "
+ "specified, guessing it to be unix");
sockaddr->sa_family = AF_UNIX;
}
@@ -166,7 +166,8 @@ client_fill_address_family (rpc_transport_t *this, struct sockaddr *sockaddr)
} else if (!strcasecmp (address_family, "inet-sdp")) {
sockaddr->sa_family = AF_INET_SDP;
} else {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_UNKNOWN_ADDR_FAMILY,
"unknown address-family (%s) specified",
address_family);
sockaddr->sa_family = AF_UNSPEC;
@@ -191,47 +192,40 @@ af_inet_client_get_remote_sockaddr (rpc_transport_t *this,
int32_t ret = 0;
remote_host_data = dict_get (options, "remote-host");
- if (remote_host_data == NULL)
- {
- gf_log (this->name, GF_LOG_ERROR,
- "option remote-host missing in volume %s",
- this->name);
+ if (remote_host_data == NULL) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_REMOTE_HOST_ERROR, "option remote-host "
+ "missing in volume %s", this->name);
ret = -1;
goto err;
}
remote_host = data_to_str (remote_host_data);
- if (remote_host == NULL)
- {
- gf_log (this->name, GF_LOG_ERROR,
- "option remote-host has data NULL in volume %s",
- this->name);
+ if (remote_host == NULL) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_REMOTE_HOST_ERROR, "option remote-host "
+ "has data NULL in volume %s", this->name);
ret = -1;
goto err;
}
if (remote_port == 0) {
remote_port_data = dict_get (options, "remote-port");
- if (remote_port_data == NULL)
- {
- gf_log (this->name, GF_LOG_DEBUG,
- "option remote-port missing in volume %s. "
- "Defaulting to %d",
- this->name, GF_DEFAULT_RDMA_LISTEN_PORT);
+ if (remote_port_data == NULL) {
+ gf_msg_debug (this->name, 0, "option remote-port "
+ "missing in volume %s. Defaulting to %d",
+ this->name, GF_DEFAULT_RDMA_LISTEN_PORT);
remote_port = GF_DEFAULT_RDMA_LISTEN_PORT;
- }
- else
- {
+ } else {
remote_port = data_to_uint16 (remote_port_data);
}
}
- if (remote_port == -1)
- {
- gf_log (this->name, GF_LOG_ERROR,
- "option remote-port has invalid port in volume %s",
- this->name);
+ if (remote_port == -1) {
+ gf_msg (this->name, GF_LOG_ERROR, EINVAL,
+ RDMA_MSG_INVALID_ENTRY, "option remote-port has "
+ "invalid port in volume %s", this->name);
ret = -1;
goto err;
}
@@ -242,7 +236,7 @@ af_inet_client_get_remote_sockaddr (rpc_transport_t *this,
sockaddr->sa_family,
&this->dnscache, &addr_info);
if (ret == -1) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0, TRANS_MSG_DNS_RESOL_FAILED,
"DNS resolution failed on host %s", remote_host);
goto err;
}
@@ -267,32 +261,32 @@ af_unix_client_get_remote_sockaddr (rpc_transport_t *this,
connect_path_data = dict_get (this->options,
"transport.rdma.connect-path");
if (!connect_path_data) {
- gf_log (this->name, GF_LOG_ERROR,
- "option transport.rdma.connect-path not "
- "specified for address-family unix");
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_CONNECT_PATH_ERROR, "option "
+ "transport.rdma.connect-path not specified for "
+ "address-family unix");
ret = -1;
goto err;
}
connect_path = data_to_str (connect_path_data);
if (!connect_path) {
- gf_log (this->name, GF_LOG_ERROR,
- "connect-path is null-string");
+ gf_msg (this->name, GF_LOG_ERROR, EINVAL,
+ RDMA_MSG_INVALID_ENTRY, "connect-path is null-string");
ret = -1;
goto err;
}
if (strlen (connect_path) > UNIX_PATH_MAX) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_CONNECT_PATH_ERROR,
"connect-path value length %"GF_PRI_SIZET" > "
"%d octets", strlen (connect_path), UNIX_PATH_MAX);
ret = -1;
goto err;
}
- gf_log (this->name,
- GF_LOG_DEBUG,
- "using connect-path %s", connect_path);
+ gf_msg_debug (this->name, 0, "using connect-path %s", connect_path);
sockaddr_un = (struct sockaddr_un *)sockaddr;
strcpy (sockaddr_un->sun_path, connect_path);
*sockaddr_len = sizeof (struct sockaddr_un);
@@ -315,7 +309,8 @@ af_unix_server_get_local_sockaddr (rpc_transport_t *this,
listen_path_data = dict_get (this->options,
"transport.rdma.listen-path");
if (!listen_path_data) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_LISTEN_PATH_ERROR,
"missing option listen-path");
ret = -1;
goto err;
@@ -328,8 +323,9 @@ af_unix_server_get_local_sockaddr (rpc_transport_t *this,
#endif
if (strlen (listen_path) > UNIX_PATH_MAX) {
- gf_log (this->name, GF_LOG_ERROR,
- "option listen-path has value length %"GF_PRI_SIZET" > %d",
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_LISTEN_PATH_ERROR, "option listen-path has "
+ "value length %"GF_PRI_SIZET" > %d",
strlen (listen_path), UNIX_PATH_MAX);
ret = -1;
goto err;
@@ -399,7 +395,8 @@ af_inet_server_get_local_sockaddr (rpc_transport_t *this,
ret = getaddrinfo(listen_host, service, &hints, &res);
if (ret != 0) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, ret,
+ TRANS_MSG_GET_ADDR_INFO_FAILED,
"getaddrinfo failed for host %s, service %s (%s)",
listen_host, service, gai_strerror (ret));
ret = -1;
@@ -422,8 +419,7 @@ gf_rdma_client_bind (rpc_transport_t *this, struct sockaddr *sockaddr,
int ret = 0;
*sockaddr_len = sizeof (struct sockaddr_in6);
- switch (sockaddr->sa_family)
- {
+ switch (sockaddr->sa_family) {
case AF_INET_SDP:
case AF_INET:
*sockaddr_len = sizeof (struct sockaddr_in);
@@ -433,7 +429,8 @@ gf_rdma_client_bind (rpc_transport_t *this, struct sockaddr *sockaddr,
*sockaddr_len,
GF_CLIENT_PORT_CEILING);
if (ret == -1) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_PORT_BIND_FAILED,
"cannot bind rdma_cm_id to port "
"less than %d (%s)", GF_CLIENT_PORT_CEILING,
strerror (errno));
@@ -457,7 +454,8 @@ gf_rdma_client_bind (rpc_transport_t *this, struct sockaddr *sockaddr,
break;
default:
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_UNKNOWN_ADDR_FAMILY,
"unknown address family %d", sockaddr->sa_family);
ret = -1;
break;
@@ -481,8 +479,7 @@ gf_rdma_client_get_remote_sockaddr (rpc_transport_t *this,
goto err;
}
- switch (sockaddr->sa_family)
- {
+ switch (sockaddr->sa_family) {
case AF_INET_SDP:
sockaddr->sa_family = AF_INET;
is_inet_sdp = 1;
@@ -508,7 +505,8 @@ gf_rdma_client_get_remote_sockaddr (rpc_transport_t *this,
break;
default:
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_UNKNOWN_ADDR_FAMILY,
"unknown address-family %d", sockaddr->sa_family);
ret = -1;
}
@@ -541,22 +539,20 @@ gf_rdma_server_get_local_sockaddr (rpc_transport_t *this,
} else if (!strcasecmp (address_family, "unix")) {
addr->sa_family = AF_UNIX;
} else {
- gf_log (this->name, GF_LOG_ERROR,
- "unknown address family (%s) specified",
- address_family);
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_UNKNOWN_ADDR_FAMILY, "unknown address"
+ " family (%s) specified", address_family);
addr->sa_family = AF_UNSPEC;
ret = -1;
goto err;
}
} else {
- gf_log (this->name, GF_LOG_DEBUG,
- "option address-family not specified, defaulting "
- "to inet");
+ gf_msg_debug (this->name, 0, "option address-family not "
+ "specified, defaulting to inet");
addr->sa_family = AF_INET;
}
- switch (addr->sa_family)
- {
+ switch (addr->sa_family) {
case AF_INET_SDP:
is_inet_sdp = 1;
addr->sa_family = AF_INET;
@@ -639,8 +635,8 @@ fill_inet6_inet_identifiers (rpc_transport_t *this, struct sockaddr_storage *add
service, sizeof (service),
NI_NUMERICHOST | NI_NUMERICSERV);
if (ret != 0) {
- gf_log (this->name,
- GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, ret,
+ TRANS_MSG_GET_NAME_INFO_FAILED,
"getnameinfo failed (%s)", gai_strerror (ret));
}
@@ -655,21 +651,20 @@ gf_rdma_get_transport_identifiers (rpc_transport_t *this)
int32_t ret = 0;
char is_inet_sdp = 0;
- switch (((struct sockaddr *) &this->myinfo.sockaddr)->sa_family)
- {
+ switch (((struct sockaddr *) &this->myinfo.sockaddr)->sa_family) {
case AF_INET_SDP:
is_inet_sdp = 1;
((struct sockaddr *) &this->peerinfo.sockaddr)->sa_family = ((struct sockaddr *) &this->myinfo.sockaddr)->sa_family = AF_INET;
case AF_INET:
- case AF_INET6:
- {
+ case AF_INET6: {
ret = fill_inet6_inet_identifiers (this,
&this->myinfo.sockaddr,
this->myinfo.sockaddr_len,
this->myinfo.identifier);
if (ret == -1) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_INET_ERROR,
"can't fill inet/inet6 identifier for server");
goto err;
}
@@ -679,7 +674,8 @@ gf_rdma_get_transport_identifiers (rpc_transport_t *this)
this->peerinfo.sockaddr_len,
this->peerinfo.identifier);
if (ret == -1) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_INET_ERROR,
"can't fill inet/inet6 identifier for client");
goto err;
}
@@ -703,7 +699,8 @@ gf_rdma_get_transport_identifiers (rpc_transport_t *this)
break;
default:
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ TRANS_MSG_UNKNOWN_ADDR_FAMILY,
"unknown address family (%d)",
((struct sockaddr *) &this->myinfo.sockaddr)->sa_family);
ret = -1;
diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c
index 5fc6076f996..5a8a78817d5 100644
--- a/rpc/rpc-transport/rdma/src/rdma.c
+++ b/rpc/rpc-transport/rdma/src/rdma.c
@@ -22,6 +22,8 @@
#include "byte-order.h"
#include "xlator.h"
#include "xdr-rpc.h"
+#include "rpc-lib-messages.h"
+#include "rpc-trans-rdma-messages.h"
#include <signal.h>
#define GF_RDMA_LOG_NAME "rpc-transport/rdma"
@@ -116,7 +118,8 @@ gf_rdma_new_post (rpc_transport_t *this, gf_rdma_device_t *device, int32_t len,
post->buf_size,
IBV_ACCESS_LOCAL_WRITE);
if (!post->mr) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_MR_ALOC_FAILED,
"memory registration failed (%s)",
strerror (errno));
goto out;
@@ -324,12 +327,13 @@ __gf_rdma_create_posts (rpc_transport_t *this, int32_t count, int32_t size,
priv = this->private;
device = priv->device;
- for (i=0 ; i<count ; i++) {
+ for (i = 0 ; i < count ; i++) {
gf_rdma_post_t *post = NULL;
post = gf_rdma_new_post (this, device, size + 2048, type);
if (!post) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_POST_CREATION_FAILED,
"post creation failed");
ret = -1;
break;
@@ -375,9 +379,10 @@ gf_rdma_deregister_arena (struct list_head **mr_list,
list_for_each_entry_safe (tmp, dummy, mr_list[i], list) {
if (tmp->iobuf_arena == iobuf_arena) {
if (ibv_dereg_mr(tmp->mr)) {
- gf_log("rdma", GF_LOG_WARNING,
- "deallocation of memory region "
- "failed");
+ gf_msg ("rdma", GF_LOG_WARNING, 0,
+ RDMA_MSG_DEREGISTER_ARENA_FAILED,
+ "deallocation of memory region "
+ "failed");
return -1;
}
list_del(&tmp->list);
@@ -407,8 +412,10 @@ gf_rdma_register_arena (void **arg1, void *arg2)
new = GF_CALLOC(1, sizeof(gf_rdma_arena_mr),
gf_common_mt_rdma_arena_mr);
if (new == NULL) {
- gf_log ("rdma", GF_LOG_INFO, "Out of memory:"
- " registering pre allocated buffer wth rdma device failed.");
+ gf_msg ("rdma", GF_LOG_INFO, ENOMEM,
+ RDMA_MSG_MR_ALOC_FAILED, "Out of "
+ "memory: registering pre allocated buffer "
+ "with rdma device failed.");
return -1;
}
INIT_LIST_HEAD (&new->list);
@@ -421,8 +428,9 @@ gf_rdma_register_arena (void **arg1, void *arg2)
IBV_ACCESS_REMOTE_WRITE
);
if (!mr)
- gf_log("rdma", GF_LOG_WARNING,
- "allocation of mr failed");
+ gf_msg ("rdma", GF_LOG_WARNING, 0,
+ RDMA_MSG_MR_ALOC_FAILED, "allocation of mr "
+ "failed");
new->mr = mr;
list_add (&new->list, &device[i]->all_mr);
@@ -455,8 +463,10 @@ gf_rdma_register_iobuf_pool (rpc_transport_t *this)
new = GF_CALLOC(1, sizeof(gf_rdma_arena_mr),
gf_common_mt_rdma_arena_mr);
if (new == NULL) {
- gf_log ("rdma", GF_LOG_INFO, "Out of memory:"
- " registering pre allocated buffer with rdma device failed.");
+ gf_msg ("rdma", GF_LOG_INFO, ENOMEM,
+ RDMA_MSG_MR_ALOC_FAILED, "Out of "
+ "memory: registering pre allocated "
+ "buffer with rdma device failed.");
return;
}
INIT_LIST_HEAD (&new->list);
@@ -468,8 +478,9 @@ gf_rdma_register_iobuf_pool (rpc_transport_t *this)
IBV_ACCESS_LOCAL_WRITE |
IBV_ACCESS_REMOTE_WRITE);
if (!mr) {
- gf_log ("rdma", GF_LOG_WARNING, "failed to pre"
- " register buffers with rdma "
+ gf_msg ("rdma", GF_LOG_WARNING, 0,
+ RDMA_MSG_MR_ALOC_FAILED, "failed"
+ " to pre register buffers with rdma "
"devices.");
}
@@ -529,7 +540,7 @@ gf_rdma_create_posts (rpc_transport_t *this)
GF_RDMA_RECV_POST);
if (!ret) {
- for (i=0 ; i<options->recv_count ; i++) {
+ for (i = 0 ; i < options->recv_count ; i++) {
post = gf_rdma_get_post (&device->recvq);
if (gf_rdma_post_recv (device->srq, post) != 0) {
ret = -1;
@@ -586,14 +597,15 @@ gf_rdma_create_cq (rpc_transport_t *this)
device->recv_chan,
0);
if (!device->recv_cq) {
- gf_log (this->name, GF_LOG_ERROR,
- "creation of CQ for device %s failed",
- device->device_name);
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_CQ_CREATION_FAILED, "creation of CQ for "
+ "device %s failed", device->device_name);
ret = -1;
goto out;
} else if (ibv_req_notify_cq (device->recv_cq, 0)) {
- gf_log (this->name, GF_LOG_ERROR,
- "ibv_req_notify_cq on recv CQ of device %s failed",
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_REQ_NOTIFY_CQ_REVQ_FAILED, "ibv_req_notify_"
+ "cq on recv CQ of device %s failed",
device->device_name);
ret = -1;
goto out;
@@ -602,8 +614,9 @@ gf_rdma_create_cq (rpc_transport_t *this)
do {
ret = ibv_query_device (priv->device->context, &device_attr);
if (ret != 0) {
- gf_log (this->name, GF_LOG_ERROR,
- "ibv_query_device on %s returned %d (%s)",
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_QUERY_DEVICE_FAILED, "ibv_query_"
+ "device on %s returned %d (%s)",
priv->device->device_name, ret,
(ret > 0) ? strerror (ret) : "");
ret = -1;
@@ -619,15 +632,17 @@ gf_rdma_create_cq (rpc_transport_t *this)
send_cqe, device,
device->send_chan, 0);
if (!device->send_cq) {
- gf_log (this->name, GF_LOG_ERROR,
- "creation of send_cq for device %s failed",
- device->device_name);
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_CQ_CREATION_FAILED,
+ "creation of send_cq "
+ "for device %s failed", device->device_name);
ret = -1;
goto out;
}
if (ibv_req_notify_cq (device->send_cq, 0)) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_REQ_NOTIFY_CQ_SENDQ_FAILED,
"ibv_req_notify_cq on send_cq for device %s"
" failed", device->device_name);
ret = -1;
@@ -706,16 +721,18 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
trav->send_chan = ibv_create_comp_channel (trav->context);
if (!trav->send_chan) {
- gf_log (this->name, GF_LOG_ERROR,
- "could not create send completion channel for "
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_SEND_COMP_CHAN_FAILED, "could not "
+ "create send completion channel for "
"device (%s)", device_name);
goto out;
}
trav->recv_chan = ibv_create_comp_channel (trav->context);
if (!trav->recv_chan) {
- gf_log (this->name, GF_LOG_ERROR,
- "could not create recv completion channel for "
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_RECV_COMP_CHAN_FAILED, "could not "
+ "create recv completion channel for "
"device (%s)", device_name);
/* TODO: cleanup current mess */
@@ -723,7 +740,8 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
}
if (gf_rdma_create_cq (this) < 0) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_CQ_CREATION_FAILED,
"could not create CQ for device (%s)",
device_name);
goto out;
@@ -733,9 +751,10 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
trav->pd = ibv_alloc_pd (trav->context);
if (!trav->pd) {
- gf_log (this->name, GF_LOG_ERROR,
- "could not allocate protection domain for "
- "device (%s)", device_name);
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_ALOC_PROT_DOM_FAILED, "could not "
+ "allocate protection domain for device (%s)",
+ device_name);
goto out;
}
@@ -749,8 +768,9 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
trav->srq = ibv_create_srq (trav->pd, &attr);
if (!trav->srq) {
- gf_log (this->name, GF_LOG_ERROR,
- "could not create SRQ for device (%s)",
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_CRE_SRQ_FAILED, "could not create SRQ"
+ " for device (%s)",
device_name);
goto out;
}
@@ -763,9 +783,9 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
gf_rdma_register_iobuf_pool(this);
if (gf_rdma_create_posts (this) < 0) {
- gf_log (this->name, GF_LOG_ERROR,
- "could not allocate posts for device (%s)",
- device_name);
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_ALOC_POST_FAILED, "could not allocate"
+ "posts for device (%s)", device_name);
goto out;
}
@@ -774,7 +794,8 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
gf_rdma_send_completion_proc,
trav->send_chan);
if (ret) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_SEND_COMP_THREAD_FAILED,
"could not create send completion thread for "
"device (%s)", device_name);
goto out;
@@ -784,7 +805,8 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
gf_rdma_recv_completion_proc,
trav->recv_chan);
if (ret) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_RECV_COMP_THREAD_FAILED,
"could not create recv completion thread "
"for device (%s)", device_name);
return NULL;
@@ -794,14 +816,15 @@ gf_rdma_get_device (rpc_transport_t *this, struct ibv_context *ibctx,
gf_rdma_async_event_thread,
ibctx);
if (ret) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ RDMA_MSG_ASYNC_EVENT_THEAD_FAILED,
"could not create async_event_thread");
return NULL;
}
/* qpreg */
pthread_mutex_init (&trav->qpreg.lock, NULL);
- for (i=0; i<42; i++) {
+ for (i = 0; i < 42; i++) {
trav->qpreg.ents[i].next = &trav->qpreg.ents[i];
trav->qpreg.ents[i].prev = &trav->qpreg.ents[i];
}
@@ -884,19 +907,20 @@ gf_rdma_transport_new (rpc_transport_t *listener, struct rdma_cm_id *cm_id)
device_name = (char *)ibv_get_device_name (cm_id->verbs->device);
if (device_name == NULL) {
- gf_log (listener->name, GF_LOG_WARNING,
- "cannot get device name (peer:%s me:%s)",
- this->peerinfo.identifier, this->myinfo.identifier);
+ gf_msg (listener->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_DEVICE_NAME_FAILED, "cannot get device "
+ "name (peer:%s me:%s)", this->peerinfo.identifier,
+ this->myinfo.identifier);
goto out;
}
priv->device = gf_rdma_get_device (this, cm_id->verbs,
device_name);
if (priv->device == NULL) {
- gf_log (listener->name, GF_LOG_WARNING,
- "cannot get infiniband device %s (peer:%s me:%s)",
- device_name, this->peerinfo.identifier,
- this->myinfo.identifier);
+ gf_msg (listener->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_IB_DEVICE_FAILED, "cannot get infiniband"
+ " device %s (peer:%s me:%s)", device_name,
+ this->peerinfo.identifier, this->myinfo.identifier);
goto out;
}
@@ -950,23 +974,25 @@ gf_rdma_cm_handle_connect_request (struct rdma_cm_event *event)
this = gf_rdma_transport_new (listener, child_cm_id);
if (this == NULL) {
- gf_log (listener->name, GF_LOG_WARNING,
- "could not create a transport for incoming connection"
+ gf_msg (listener->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_CREAT_INC_TRANS_FAILED, "could not create "
+ "a transport for incoming connection"
" (me.name:%s me.identifier:%s)", listener->name,
listener->myinfo.identifier);
rdma_destroy_id (child_cm_id);
goto out;
}
- gf_log (listener->name, GF_LOG_TRACE,
- "got a connect request (me:%s peer:%s)",
- listener->myinfo.identifier, this->peerinfo.identifier);
+ gf_msg_trace (listener->name, 0, "got a connect request (me:%s peer:"
+ "%s)", listener->myinfo.identifier,
+ this->peerinfo.identifier);
ret = gf_rdma_create_qp (this);
if (ret < 0) {
- gf_log (listener->name, GF_LOG_WARNING,
- "could not create QP (peer:%s me:%s)",
- this->peerinfo.identifier, this->myinfo.identifier);
+ gf_msg (listener->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_CREAT_QP_FAILED, "could not create QP "
+ "(peer:%s me:%s)", this->peerinfo.identifier,
+ this->myinfo.identifier);
gf_rdma_cm_handle_disconnect (this);
goto out;
}
@@ -978,8 +1004,9 @@ gf_rdma_cm_handle_connect_request (struct rdma_cm_event *event)
ret = rdma_accept(child_cm_id, &conn_param);
if (ret < 0) {
- gf_log (listener->name, GF_LOG_WARNING, "rdma_accept failed "
- "peer:%s me:%s (%s)", this->peerinfo.identifier,
+ gf_msg (listener->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_ACCEPT_FAILED, "rdma_accept failed peer:%s "
+ "me:%s (%s)", this->peerinfo.identifier,
this->myinfo.identifier, strerror (errno));
gf_rdma_cm_handle_disconnect (this);
goto out;
@@ -1014,9 +1041,10 @@ gf_rdma_cm_handle_route_resolved (struct rdma_cm_event *event)
ret = gf_rdma_create_qp (this);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
- "could not create QP (peer:%s me:%s)",
- this->peerinfo.identifier, this->myinfo.identifier);
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_CREAT_QP_FAILED, "could not create QP "
+ "(peer:%s me:%s)", this->peerinfo.identifier,
+ this->myinfo.identifier);
gf_rdma_cm_handle_disconnect (this);
goto out;
}
@@ -1029,14 +1057,15 @@ gf_rdma_cm_handle_route_resolved (struct rdma_cm_event *event)
ret = rdma_connect(peer->cm_id, &conn_param);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_CONNECT_FAILED,
"rdma_connect failed (%s)", strerror (errno));
gf_rdma_cm_handle_disconnect (this);
goto out;
}
- gf_log (this->name, GF_LOG_TRACE, "route resolved (me:%s peer:%s)",
- this->myinfo.identifier, this->peerinfo.identifier);
+ gf_msg_trace (this->name, 0, "route resolved (me:%s peer:%s)",
+ this->myinfo.identifier, this->peerinfo.identifier);
ret = 0;
out:
@@ -1071,15 +1100,16 @@ gf_rdma_cm_handle_addr_resolved (struct rdma_cm_event *event)
ret = rdma_resolve_route(peer->cm_id, 2000);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
- "rdma_resolve_route failed (me:%s peer:%s) (%s)",
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_ROUTE_RESOLVE_FAILED, "rdma_resolve_route "
+ "failed (me:%s peer:%s) (%s)",
this->myinfo.identifier, this->peerinfo.identifier,
strerror (errno));
gf_rdma_cm_handle_disconnect (this);
}
- gf_log (this->name, GF_LOG_TRACE, "Address resolved (me:%s peer:%s)",
- this->myinfo.identifier, this->peerinfo.identifier);
+ gf_msg_trace (this->name, 0, "Address resolved (me:%s peer:%s)",
+ this->myinfo.identifier, this->peerinfo.identifier);
return ret;
}
@@ -1092,8 +1122,7 @@ gf_rdma_cm_handle_disconnect (rpc_transport_t *this)
char need_unref = 0;
priv = this->private;
- gf_log (this->name, GF_LOG_DEBUG,
- "peer disconnected, cleaning up");
+ gf_msg_debug (this->name, 0, "peer disconnected, cleaning up");
pthread_mutex_lock (&priv->write_mutex);
{
@@ -1127,9 +1156,10 @@ gf_rdma_cm_handle_connect_init (struct rdma_cm_event *event)
priv = this->private;
if (priv->connected == 1) {
- gf_log (this->name, GF_LOG_TRACE,
- "received event RDMA_CM_EVENT_ESTABLISHED (me:%s peer:%s)",
- this->myinfo.identifier, this->peerinfo.identifier);
+ gf_msg_trace (this->name, 0, "received event "
+ "RDMA_CM_EVENT_ESTABLISHED (me:%s peer:%s)",
+ this->myinfo.identifier,
+ this->peerinfo.identifier);
return ret;
}
@@ -1143,9 +1173,10 @@ gf_rdma_cm_handle_connect_init (struct rdma_cm_event *event)
pthread_mutex_unlock (&priv->write_mutex);
if (priv->entity == GF_RDMA_CLIENT) {
- gf_log (this->name, GF_LOG_TRACE,
- "received event RDMA_CM_EVENT_ESTABLISHED (me:%s peer:%s)",
- this->myinfo.identifier, this->peerinfo.identifier);
+ gf_msg_trace (this->name, 0, "received event "
+ "RDMA_CM_EVENT_ESTABLISHED (me:%s peer:%s)",
+ this->myinfo.identifier,
+ this->peerinfo.identifier);
ret = rpc_transport_notify (this, RPC_TRANSPORT_CONNECT, this);
} else if (priv->entity == GF_RDMA_SERVER) {
@@ -1196,7 +1227,8 @@ gf_rdma_cm_event_handler (void *data)
while (1) {
ret = rdma_get_cm_event (event_channel, &event);
if (ret != 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_CM_EVENT_FAILED,
"rdma_cm_get_event failed (%s)",
strerror (errno));
break;
@@ -1226,10 +1258,9 @@ gf_rdma_cm_event_handler (void *data)
case RDMA_CM_EVENT_REJECTED:
this = event->id->context;
- gf_log (this->name, GF_LOG_WARNING,
- "cma event %s, error %d (me:%s peer:%s)\n "
- "Host Unreachable, Check your connection "
- "with IPoIB",
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_CM_EVENT_FAILED, "cma event %s, "
+ "error %d (me:%s peer:%s)\n",
rdma_event_str(event->event), event->status,
this->myinfo.identifier,
this->peerinfo.identifier);
@@ -1243,10 +1274,10 @@ gf_rdma_cm_event_handler (void *data)
case RDMA_CM_EVENT_DISCONNECTED:
this = event->id->context;
- gf_log (this->name, GF_LOG_DEBUG,
- "received disconnect (me:%s peer:%s)\n",
- this->myinfo.identifier,
- this->peerinfo.identifier);
+ gf_msg_debug (this->name, 0, "received disconnect "
+ "(me:%s peer:%s)\n",
+ this->myinfo.identifier,
+ this->peerinfo.identifier);
rdma_ack_cm_event (event);
event = NULL;
@@ -1255,13 +1286,15 @@ gf_rdma_cm_event_handler (void *data)
continue;
case RDMA_CM_EVENT_DEVICE_REMOVAL:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "device removed");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CM_EVENT_FAILED, "device "
+ "removed");
gf_rdma_cm_handle_device_removal (event);
break;
default:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CM_EVENT_FAILED,
"unhandled event: %s, ignoring",
rdma_event_str(event->event));
break;
@@ -1339,8 +1372,8 @@ __gf_rdma_send_error (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
len = __gf_rdma_encode_error (peer, reply_info, entry->rpchdr,
(gf_rdma_header_t *)post->buf, err);
if (len == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
- "encode error returned -1");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, 0,
+ RDMA_MSG_ENCODE_ERROR, "encode error returned -1");
goto out;
}
@@ -1350,7 +1383,8 @@ __gf_rdma_send_error (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if (!ret) {
ret = len;
} else {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POST_SEND_FAILED,
"gf_rdma_post_send (to %s) failed with ret = %d (%s)",
peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
@@ -1400,7 +1434,8 @@ __gf_rdma_create_read_chunks_from_vector (gf_rdma_peer_t *peer,
IBV_ACCESS_REMOTE_READ);
}
if (!mr) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_MR_ALOC_FAILED,
"memory registration failed (%s) (peer:%s)",
strerror (errno),
peer->trans->peerinfo.identifier);
@@ -1452,7 +1487,8 @@ __gf_rdma_create_read_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->rpchdr_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_READ_CHUNK_VECTOR_FAILED,
"cannot create read chunks from vector "
"entry->rpchdr");
goto out;
@@ -1465,7 +1501,8 @@ __gf_rdma_create_read_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->proghdr_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_READ_CHUNK_VECTOR_FAILED,
"cannot create read chunks from vector "
"entry->proghdr");
}
@@ -1478,7 +1515,8 @@ __gf_rdma_create_read_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->prog_payload_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_READ_CHUNK_VECTOR_FAILED,
"cannot create read chunks from vector"
" entry->prog_payload");
}
@@ -1492,7 +1530,8 @@ __gf_rdma_create_read_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->prog_payload_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_READ_CHUNK_VECTOR_FAILED,
"cannot create read chunks from vector "
"entry->prog_payload");
}
@@ -1542,8 +1581,9 @@ __gf_rdma_create_write_chunks_from_vector (gf_rdma_peer_t *peer,
}
if (!mr) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "memory registration failed (%s) (peer:%s)",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_MR_ALOC_FAILED, "memory "
+ "registration failed (%s) (peer:%s)",
strerror (errno),
peer->trans->peerinfo.identifier);
goto out;
@@ -1584,7 +1624,8 @@ __gf_rdma_create_write_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if ((chunk_type == gf_rdma_replych)
&& ((entry->msg.request.rsphdr_count != 1) ||
(entry->msg.request.rsphdr_vec[0].iov_base == NULL))) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_BUFFER_ERROR,
(entry->msg.request.rsphdr_count == 1)
? "chunktype specified as reply chunk but the vector "
"specifying the buffer to be used for holding reply"
@@ -1620,7 +1661,8 @@ __gf_rdma_create_write_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->msg.request.rsp_payload_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_CHUNK_VECTOR_FAILED,
"cannot create write chunks from vector "
"entry->rpc_payload");
goto out;
@@ -1650,7 +1692,8 @@ __gf_rdma_create_write_chunks (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->msg.request.rsphdr_count,
request_ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_CHUNK_VECTOR_FAILED,
"cannot create write chunks from vector "
"entry->rpchdr");
goto out;
@@ -1755,9 +1798,7 @@ __gf_rdma_request_context_destroy (gf_rdma_request_context_t *context)
if (priv->connected) {
ret = __gf_rdma_quota_put (peer);
if (ret < 0) {
- gf_log ("rdma", GF_LOG_DEBUG,
- "failed to send "
- "message");
+ gf_msg_debug ("rdma", 0, "failed to send message");
mem_put (context);
__gf_rdma_disconnect (peer->trans);
goto out;
@@ -1896,7 +1937,8 @@ __gf_rdma_ioq_churn_request (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if ((entry->msg.request.rsphdr_count != 0)
&& (entry->msg.request.rsp_payload_count != 0)) {
ret = -1;
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_REPLY_CHUNCK_CONFLICT,
"both write-chunklist and reply-chunk cannot be "
"present");
goto out;
@@ -1948,7 +1990,8 @@ __gf_rdma_ioq_churn_request (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if (chunk_count > GF_RDMA_MAX_SEGMENTS) {
ret = -1;
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CHUNK_COUNT_GREAT_MAX_SEGMENTS,
"chunk count(%d) exceeding maximum allowed RDMA "
"segment count(%d)", chunk_count, GF_RDMA_MAX_SEGMENTS);
goto out;
@@ -1994,7 +2037,8 @@ __gf_rdma_ioq_churn_request (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
&chunkptr,
request_ctx);
if (ret != 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CREATE_READ_CHUNK_FAILED,
"creation of read chunks failed");
goto out;
}
@@ -2007,7 +2051,8 @@ __gf_rdma_ioq_churn_request (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
&chunkptr,
request_ctx);
if (ret != 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CREATE_WRITE_REPLAY_FAILED,
"creation of write/reply chunk failed");
goto out;
}
@@ -2041,7 +2086,8 @@ __gf_rdma_ioq_churn_request (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if (!ret) {
ret = len;
} else {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POST_SEND_FAILED,
"gf_rdma_post_send (to %s) failed with ret = %d (%s)",
peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
@@ -2113,7 +2159,8 @@ __gf_rdma_send_reply_inline (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if (send_size > GLUSTERFS_RDMA_INLINE_THRESHOLD) {
ret = __gf_rdma_send_error (peer, entry, post, reply_info,
ERR_CHUNK);
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_SIZE_GREAT_INLINE_THRESHOLD,
"msg size (%d) is greater than maximum size "
"of msg that can be sent inlined (%d)",
send_size, GLUSTERFS_RDMA_INLINE_THRESHOLD);
@@ -2150,8 +2197,9 @@ __gf_rdma_send_reply_inline (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
if (!ret) {
ret = send_size;
} else {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "posting send (to %s) failed with ret = %d (%s)",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POST_SEND_FAILED, "posting send (to %s) "
+ "failed with ret = %d (%s)",
peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
gf_rdma_post_unref (post);
@@ -2184,9 +2232,9 @@ __gf_rdma_reply_encode_write_chunks (gf_rdma_peer_t *peer,
}
if (chunk_size < payload_size) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
- "length of payload (%d) is exceeding the total "
- "write chunk length (%d)", payload_size, chunk_size);
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0, "length of payload (%d) is "
+ "exceeding the total write chunk length (%d)",
+ payload_size, chunk_size);
goto out;
}
@@ -2252,9 +2300,10 @@ __gf_rdma_register_local_mr_for_rdma (gf_rdma_peer_t *peer,
IBV_ACCESS_LOCAL_WRITE);
}
if (ctx->mr[ctx->mr_count] == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "registering memory for IBV_ACCESS_LOCAL_WRITE "
- "failed (%s)", strerror (errno));
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_MR_ALOC_FAILED,
+ "registering memory for IBV_ACCESS_LOCAL_WRITE"
+ " failed (%s)", strerror (errno));
goto out;
}
@@ -2302,9 +2351,9 @@ __gf_rdma_write (gf_rdma_peer_t *peer, gf_rdma_post_t *post, struct iovec *vec,
for ((i = *idx), (num_sge = 0); (xfer_len != 0); i++, num_sge++) {
size = min (xfer_len, vec[i].iov_len);
- sg_list [num_sge].addr = (unsigned long)vec[i].iov_base;
- sg_list [num_sge].length = size;
- sg_list [num_sge].lkey = post->ctx.mr[i]->lkey;
+ sg_list[num_sge].addr = (unsigned long)vec[i].iov_base;
+ sg_list[num_sge].length = size;
+ sg_list[num_sge].lkey = post->ctx.mr[i]->lkey;
xfer_len -= size;
}
@@ -2325,8 +2374,8 @@ __gf_rdma_write (gf_rdma_peer_t *peer, gf_rdma_post_t *post, struct iovec *vec,
ret = ibv_post_send(peer->qp, &wr, &bad_wr);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma write to "
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_CLIENT_ERROR, "rdma write to "
"client (%s) failed with ret = %d (%s)",
peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
@@ -2361,7 +2410,8 @@ __gf_rdma_do_gf_rdma_write (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
ret = __gf_rdma_register_local_mr_for_rdma (peer, vector, count,
&post->ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_MR_ALOC_FAILED,
"registering memory region for rdma failed");
goto out;
}
@@ -2378,8 +2428,9 @@ __gf_rdma_do_gf_rdma_write (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
&payload_idx,
&reply_info->wc_array->wc_array[i]);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma write to client (%s) failed",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_CLIENT_ERROR, "rdma write to "
+ "client (%s) failed",
peer->trans->peerinfo.identifier);
goto out;
}
@@ -2422,8 +2473,8 @@ __gf_rdma_send_reply_type_nomsg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
reply_info,
(uint32_t **)&buf);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "encoding write chunks failed");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_ENCODE_ERROR, "encoding write chunks failed");
ret = __gf_rdma_send_error (peer, entry, post, reply_info,
ERR_CHUNK);
goto out;
@@ -2442,18 +2493,19 @@ __gf_rdma_send_reply_type_nomsg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
ret = __gf_rdma_do_gf_rdma_write (peer, post, vector, count,
entry->iobref, reply_info);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma write to peer (%s) failed",
- peer->trans->peerinfo.identifier);
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_PEER_FAILED, "rdma write to peer "
+ "(%s) failed", peer->trans->peerinfo.identifier);
gf_rdma_post_unref (post);
goto out;
}
ret = gf_rdma_post_send (peer->qp, post, (buf - post->buf));
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "posting a send request to client (%s) failed with "
- "ret = %d (%s)", peer->trans->peerinfo.identifier, ret,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POST_SEND_FAILED, "posting a send request "
+ "to client (%s) failed with ret = %d (%s)",
+ peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
ret = -1;
gf_rdma_post_unref (post);
@@ -2481,7 +2533,8 @@ __gf_rdma_send_reply_type_msg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
+ GLUSTERFS_RDMA_MAX_HEADER_SIZE;
if (send_size > GLUSTERFS_RDMA_INLINE_THRESHOLD) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_SIZE_GREAT_INLINE_THRESHOLD,
"client has provided only write chunks, but the "
"combined size of rpc and program header (%d) is "
"exceeding the size of msg that can be sent using "
@@ -2506,8 +2559,8 @@ __gf_rdma_send_reply_type_msg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
reply_info,
(uint32_t **)&ptr);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "encoding write chunks failed");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_ENCODE_ERROR, "encoding write chunks failed");
ret = __gf_rdma_send_error (peer, entry, post, reply_info,
ERR_CHUNK);
goto out;
@@ -2522,7 +2575,8 @@ __gf_rdma_send_reply_type_msg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
entry->prog_payload_count,
entry->iobref, reply_info);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING, "rdma write to peer "
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_PEER_FAILED, "rdma write to peer "
"(%s) failed", peer->trans->peerinfo.identifier);
gf_rdma_post_unref (post);
goto out;
@@ -2536,7 +2590,8 @@ __gf_rdma_send_reply_type_msg (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
ret = gf_rdma_post_send (peer->qp, post, (ptr - post->buf));
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_CLIENT_ERROR,
"rdma send to client (%s) failed with ret = %d (%s)",
peer->trans->peerinfo.identifier, ret,
(ret > 0) ? strerror (ret) : "");
@@ -2612,7 +2667,8 @@ __gf_rdma_ioq_churn_reply (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
ret = __gf_rdma_send_reply_inline (peer, entry, post,
reply_info);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_REPLY_FAILED,
"failed to send reply to peer (%s) as an "
"inlined rdma msg",
peer->trans->peerinfo.identifier);
@@ -2623,7 +2679,8 @@ __gf_rdma_ioq_churn_reply (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
ret = __gf_rdma_send_reply_type_nomsg (peer, entry, post,
reply_info);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_REPLY_FAILED,
"failed to send reply to peer (%s) as "
"RDMA_NOMSG", peer->trans->peerinfo.identifier);
}
@@ -2633,7 +2690,8 @@ __gf_rdma_ioq_churn_reply (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
ret = __gf_rdma_send_reply_type_msg (peer, entry, post,
reply_info);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_SEND_REPLY_FAILED,
"failed to send reply with write chunks "
"to peer (%s)",
peer->trans->peerinfo.identifier);
@@ -2641,7 +2699,8 @@ __gf_rdma_ioq_churn_reply (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry,
break;
default:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_CHUNK_TYPE,
"invalid chunktype (%d) specified for sending reply "
" (peer:%s)", type, peer->trans->peerinfo.identifier);
break;
@@ -2687,7 +2746,8 @@ __gf_rdma_ioq_churn_entry (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry)
if (entry->is_request) {
ret = __gf_rdma_ioq_churn_request (peer, entry, post);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PROC_IOQ_ENTRY_FAILED,
"failed to process request ioq entry "
"to peer(%s)",
peer->trans->peerinfo.identifier);
@@ -2695,7 +2755,8 @@ __gf_rdma_ioq_churn_entry (gf_rdma_peer_t *peer, gf_rdma_ioq_t *entry)
} else {
ret = __gf_rdma_ioq_churn_reply (peer, entry, post);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PROC_IOQ_ENTRY_FAILED,
"failed to process reply ioq entry "
"to peer (%s)",
peer->trans->peerinfo.identifier);
@@ -2720,8 +2781,7 @@ __gf_rdma_ioq_churn (gf_rdma_peer_t *peer)
gf_rdma_ioq_t *entry = NULL;
int32_t ret = 0;
- while (!list_empty (&peer->ioq))
- {
+ while (!list_empty (&peer->ioq)) {
/* pick next entry */
entry = peer->ioq_next;
@@ -2755,7 +2815,8 @@ gf_rdma_writev (rpc_transport_t *this, gf_rdma_ioq_t *entry)
pthread_mutex_lock (&priv->write_mutex);
{
if (!priv->connected) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_PEER_DISCONNECTED,
"rdma is not connected to peer (%s)",
this->peerinfo.identifier);
ret = -1;
@@ -2769,9 +2830,10 @@ gf_rdma_writev (rpc_transport_t *this, gf_rdma_ioq_t *entry)
need_append = 0;
if (ret < 0) {
- gf_log (this->name, GF_LOG_WARNING,
- "processing ioq entry destined "
- "to (%s) failed",
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_PROC_IOQ_ENTRY_FAILED,
+ "processing ioq entry destined"
+ " to (%s) failed",
this->peerinfo.identifier);
}
}
@@ -2914,7 +2976,8 @@ gf_rdma_submit_request (rpc_transport_t *this, rpc_transport_req_t *req)
entry = gf_rdma_ioq_new (this, &data);
if (entry == NULL) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_NEW_IOQ_ENTRY_FAILED,
"getting a new ioq entry failed (peer:%s)",
this->peerinfo.identifier);
goto out;
@@ -2925,7 +2988,8 @@ gf_rdma_submit_request (rpc_transport_t *this, rpc_transport_req_t *req)
if (ret > 0) {
ret = 0;
} else if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_PEER_FAILED,
"sending request to peer (%s) failed",
this->peerinfo.identifier);
rpc_transport_disconnect (this);
@@ -2950,7 +3014,8 @@ gf_rdma_submit_reply (rpc_transport_t *this, rpc_transport_reply_t *reply)
entry = gf_rdma_ioq_new (this, &data);
if (entry == NULL) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_NEW_IOQ_ENTRY_FAILED,
"getting a new ioq entry failed (peer:%s)",
this->peerinfo.identifier);
goto out;
@@ -2960,7 +3025,8 @@ gf_rdma_submit_reply (rpc_transport_t *this, rpc_transport_reply_t *reply)
if (ret > 0) {
ret = 0;
} else if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_WRITE_PEER_FAILED,
"sending request to peer (%s) failed",
this->peerinfo.identifier);
rpc_transport_disconnect (this);
@@ -3101,7 +3167,9 @@ gf_rdma_create_qp (rpc_transport_t *this)
device_name = (char *)ibv_get_device_name (peer->cm_id->verbs->device);
if (device_name == NULL) {
ret = -1;
- gf_log (this->name, GF_LOG_WARNING, "cannot get device_name");
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_DEVICE_NAME_FAILED, "cannot get "
+ "device_name");
goto out;
}
@@ -3109,7 +3177,8 @@ gf_rdma_create_qp (rpc_transport_t *this)
device_name);
if (device == NULL) {
ret = -1;
- gf_log (this->name, GF_LOG_WARNING, "cannot get device for "
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_DEVICE_FAILED, "cannot get device for "
"device %s", device_name);
goto out;
}
@@ -3133,9 +3202,9 @@ gf_rdma_create_qp (rpc_transport_t *this)
ret = rdma_create_qp(peer->cm_id, device->pd, &init_attr);
if (ret != 0) {
- gf_log (peer->trans->name, GF_LOG_CRITICAL,
- "%s: could not create QP (%s)", this->name,
- strerror (errno));
+ gf_msg (peer->trans->name, GF_LOG_CRITICAL, errno,
+ RDMA_MSG_CREAT_QP_FAILED, "%s: could not create QP "
+ "(%s)", this->name, strerror (errno));
ret = -1;
goto out;
}
@@ -3330,8 +3399,9 @@ gf_rdma_decode_error_msg (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
ret = rpc_reply_to_xdr (&rpc_msg, iobuf_ptr (iobuf),
iobuf_pagesize (iobuf), &post->ctx.vector[0]);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "Failed to create RPC reply");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_RPC_REPLY_CREATE_FAILED, "Failed to create "
+ "RPC reply");
goto out;
}
@@ -3372,8 +3442,9 @@ gf_rdma_decode_msg (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
ret = gf_rdma_get_read_chunklist (&ptr, readch);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "cannot get read chunklist from msg");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_READ_CHUNK_FAILED, "cannot get read "
+ "chunklist from msg");
goto out;
}
@@ -3382,8 +3453,9 @@ gf_rdma_decode_msg (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
ret = gf_rdma_get_write_chunklist (&ptr, &write_ary);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "cannot get write chunklist from msg");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_GET_WRITE_CHUNK_FAILED, "cannot get write "
+ "chunklist from msg");
goto out;
}
@@ -3393,7 +3465,8 @@ gf_rdma_decode_msg (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
if (write_ary != NULL) {
reply_info = gf_rdma_reply_info_alloc (peer);
if (reply_info == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_REPLY_INFO_ALLOC_FAILED,
"reply_info_alloc failed");
ret = -1;
goto out;
@@ -3405,15 +3478,17 @@ gf_rdma_decode_msg (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
} else {
ret = gf_rdma_get_write_chunklist (&ptr, &write_ary);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "cannot get reply chunklist from msg");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_CHUNKLIST_ERROR, "cannot get reply "
+ "chunklist from msg");
goto out;
}
if (write_ary != NULL) {
reply_info = gf_rdma_reply_info_alloc (peer);
if (reply_info == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_REPLY_INFO_ALLOC_FAILED,
"reply_info_alloc_failed");
ret = -1;
goto out;
@@ -3479,36 +3554,38 @@ gf_rdma_decode_header (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
case GF_RDMA_NOMSG:
ret = gf_rdma_decode_msg (peer, post, readch, bytes_in_post);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "cannot decode msg of type (%d)",
- header->rm_type);
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_ENCODE_ERROR, "cannot decode msg of "
+ "type (%d)", header->rm_type);
}
break;
case GF_RDMA_MSGP:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma msg of msg-type GF_RDMA_MSGP should not have "
- "been received");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_ENTRY, "rdma msg of msg-type "
+ "GF_RDMA_MSGP should not have been received");
ret = -1;
break;
case GF_RDMA_DONE:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma msg of msg-type GF_RDMA_DONE should not have "
- "been received");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_ENTRY, "rdma msg of msg-type "
+ "GF_RDMA_DONE should not have been received");
ret = -1;
break;
case GF_RDMA_ERROR:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "received a msg of type RDMA_ERROR");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_RDMA_ERROR_RECEIVED, "received a msg of type"
+ " RDMA_ERROR");
ret = gf_rdma_decode_error_msg (peer, post, bytes_in_post);
break;
default:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "unknown rdma msg-type (%d)", header->rm_type);
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_ENTRY, "unknown rdma msg-type (%d)",
+ header->rm_type);
}
return ret;
@@ -3534,9 +3611,10 @@ gf_rdma_do_reads (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
}
if (i == 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "message type specified as rdma-read but there are no "
- "rdma read-chunks present");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_CHUNK_TYPE, "message type specified "
+ "as rdma-read but there are no rdma read-chunks "
+ "present");
goto out;
}
@@ -3564,9 +3642,9 @@ gf_rdma_do_reads (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
pthread_mutex_lock (&priv->write_mutex);
{
if (!priv->connected) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "transport not connected to peer (%s), "
- "not doing rdma reads",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PEER_DISCONNECTED, "transport not "
+ "connected to peer (%s), not doing rdma reads",
peer->trans->peerinfo.identifier);
goto unlock;
}
@@ -3595,7 +3673,8 @@ gf_rdma_do_reads (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
ret = __gf_rdma_register_local_mr_for_rdma (peer,
&post->ctx.vector[count], 1, &post->ctx);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_MR_ALOC_FAILED,
"registering local memory"
" for rdma read failed");
goto unlock;
@@ -3624,9 +3703,9 @@ gf_rdma_do_reads (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
wr[i-1].next = NULL;
ret = ibv_post_send (peer->qp, wr, &bad_wr);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma read from client "
- "(%s) failed with ret = %d (%s)",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_READ_CLIENT_ERROR, "rdma read from "
+ "client (%s) failed with ret = %d (%s)",
peer->trans->peerinfo.identifier,
ret, (ret > 0) ? strerror (ret) : "");
@@ -3718,16 +3797,15 @@ gf_rdma_pollin_notify (gf_rdma_peer_t *peer, gf_rdma_post_t *post)
RPC_TRANSPORT_MAP_XID_REQUEST,
&request_info);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
- "cannot get request information from rpc "
- "layer");
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0, "cannot get request"
+ "information from rpc layer");
goto out;
}
rpc_req = request_info.rpc_req;
if (rpc_req == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
- "rpc request structure not found");
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0, "rpc request "
+ "structure not found");
ret = -1;
goto out;
}
@@ -3752,8 +3830,8 @@ gf_rdma_pollin_notify (gf_rdma_peer_t *peer, gf_rdma_post_t *post)
ret = rpc_transport_notify (peer->trans, RPC_TRANSPORT_MSG_RECEIVED,
pollin);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "transport_notify failed");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ TRANS_MSG_TRANSPORT_ERROR, "transport_notify failed");
}
out:
@@ -3815,16 +3893,18 @@ gf_rdma_recv_reply (gf_rdma_peer_t *peer, gf_rdma_post_t *post)
RPC_TRANSPORT_MAP_XID_REQUEST,
&request_info);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "cannot get request information (peer:%s) from rpc "
- "layer", peer->trans->peerinfo.identifier);
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ TRANS_MSG_TRANSPORT_ERROR, "cannot get request "
+ "information (peer:%s) from rpc layer",
+ peer->trans->peerinfo.identifier);
goto out;
}
rpc_req = request_info.rpc_req;
if (rpc_req == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rpc request structure not found");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_RPC_ST_ERROR, "rpc request structure not "
+ "found");
ret = -1;
goto out;
}
@@ -3842,7 +3922,8 @@ out:
if (ret == 0) {
ret = gf_rdma_pollin_notify (peer, post);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POLL_IN_NOTIFY_FAILED,
"pollin notify failed");
}
}
@@ -3860,14 +3941,16 @@ gf_rdma_recv_request (gf_rdma_peer_t *peer, gf_rdma_post_t *post,
if (readch != NULL) {
ret = gf_rdma_do_reads (peer, post, readch);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PEER_READ_FAILED,
"rdma read from peer (%s) failed",
peer->trans->peerinfo.identifier);
}
} else {
ret = gf_rdma_pollin_notify (peer, post);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POLL_IN_NOTIFY_FAILED,
"pollin notification failed");
}
}
@@ -3888,15 +3971,17 @@ gf_rdma_process_recv (gf_rdma_peer_t *peer, struct ibv_wc *wc)
post = (gf_rdma_post_t *) (long) wc->wr_id;
if (post == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "no post found in successful work completion element");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_POST_MISSING, "no post found in successful "
+ "work completion element");
goto out;
}
ret = gf_rdma_decode_header (peer, post, &readch, wc->byte_len);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "decoding of header failed");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_HEADER_DECODE_FAILED, "decoding of header "
+ "failed");
goto out;
}
@@ -3917,7 +4002,7 @@ gf_rdma_process_recv (gf_rdma_peer_t *peer, struct ibv_wc *wc)
* instead of directly setting it to header->rm_credit.
*/
priv->peer.quota = header->rm_credit
- - ( 1 - priv->peer.quota);
+ - (1 - priv->peer.quota);
}
}
pthread_mutex_unlock (&priv->write_mutex);
@@ -3938,7 +4023,8 @@ gf_rdma_process_recv (gf_rdma_peer_t *peer, struct ibv_wc *wc)
case GF_RDMA_ERROR:
if (header->rm_body.rm_error.rm_type == ERR_CHUNK) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_RDMA_ERROR_RECEIVED,
"peer (%s), couldn't encode or decode the msg "
"properly or write chunks were not provided "
"for replies that were bigger than "
@@ -3947,36 +4033,40 @@ gf_rdma_process_recv (gf_rdma_peer_t *peer, struct ibv_wc *wc)
GLUSTERFS_RDMA_INLINE_THRESHOLD);
ret = gf_rdma_pollin_notify (peer, post);
if (ret == -1) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
- "pollin notification failed");
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0, "pollin "
+ "notification failed");
}
goto out;
} else {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
- "an error has happened while transmission of "
- "msg, disconnecting the transport");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, 0,
+ TRANS_MSG_TRANSPORT_ERROR, "an error has "
+ "happened while transmission of msg, "
+ "disconnecting the transport");
ret = -1;
goto out;
}
default:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "invalid rdma msg-type (%d)", header->rm_type);
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_INVALID_ENTRY, "invalid rdma msg-type (%d)",
+ header->rm_type);
goto out;
}
if (msg_type == CALL) {
ret = gf_rdma_recv_request (peer, post, readch);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "receiving a request from peer (%s) failed",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PEER_REQ_FAILED, "receiving a request"
+ " from peer (%s) failed",
peer->trans->peerinfo.identifier);
}
} else {
ret = gf_rdma_recv_reply (peer, post);
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "receiving a reply from peer (%s) failed",
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_PEER_REP_FAILED, "receiving a reply "
+ "from peer (%s) failed",
peer->trans->peerinfo.identifier);
}
}
@@ -4001,21 +4091,22 @@ gf_rdma_async_event_thread (void *context)
&event);
if (ret && errno != EINTR) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "Error getting event (%s)",
- strerror (errno));
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_EVENT_ERROR, "Error getting "
+ "event (%s)", strerror (errno));
}
- } while(ret && errno == EINTR);
+ } while (ret && errno == EINTR);
switch (event.event_type) {
case IBV_EVENT_SRQ_LIMIT_REACHED:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "received srq_limit reached");
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_EVENT_SRQ_LIMIT_REACHED, "received "
+ "srq_limit reached");
break;
default:
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
- "event (%d) received", event.event_type);
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0, "event (%d) "
+ "received", event.event_type);
break;
}
@@ -4046,7 +4137,8 @@ gf_rdma_recv_completion_proc (void *data)
failed = 0;
ret = ibv_get_cq_event (chan, &event_cq, &event_ctx);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_GET_CQ_FAILED,
"ibv_get_cq_event failed, terminating recv "
"thread %d (%d)", ret, errno);
continue;
@@ -4056,7 +4148,8 @@ gf_rdma_recv_completion_proc (void *data)
ret = ibv_req_notify_cq (event_cq, 0);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_REQ_NOTIFY_CQ_FAILED,
"ibv_req_notify_cq on %s failed, terminating "
"recv thread: %d (%d)",
device->device_name, ret, errno);
@@ -4091,9 +4184,10 @@ gf_rdma_recv_completion_proc (void *data)
pthread_mutex_unlock (&device->qpreg.lock);
if (wc[index].status != IBV_WC_SUCCESS) {
- gf_log (GF_RDMA_LOG_NAME,
- GF_LOG_ERROR, "recv work request "
- "on `%s' returned error (%d)",
+ gf_msg (GF_RDMA_LOG_NAME,
+ GF_LOG_ERROR, 0,
+ RDMA_MSG_RECV_ERROR, "recv work "
+ "request on `%s' returned error (%d)",
device->device_name,
wc[index].status);
failed = 1;
@@ -4114,10 +4208,10 @@ gf_rdma_recv_completion_proc (void *data)
&wc[index]);
rpc_transport_unref (peer->trans);
} else {
- gf_log (GF_RDMA_LOG_NAME,
- GF_LOG_DEBUG,
- "could not lookup peer for qp_num: %d",
- wc[index].qp_num);
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0,
+ "could not lookup peer "
+ "for qp_num: %d",
+ wc[index].qp_num);
}
gf_rdma_post_unref (post);
@@ -4125,8 +4219,8 @@ gf_rdma_recv_completion_proc (void *data)
}
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME,
- GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_POLL_CQ_ERROR,
"ibv_poll_cq on `%s' returned error "
"(ret = %d, errno = %d)",
device->device_name, ret, errno);
@@ -4157,7 +4251,8 @@ gf_rdma_handle_failed_send_completion (gf_rdma_peer_t *peer, struct ibv_wc *wc)
post = (gf_rdma_post_t *) (long) wc->wr_id;
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_RDMA_HANDLE_FAILED,
"send work request on `%s' returned error "
"wc.status = %d, wc.vendor_err = %d, post->buf = %p, "
"wc.byte_len = %d, post->reused = %d",
@@ -4165,12 +4260,13 @@ gf_rdma_handle_failed_send_completion (gf_rdma_peer_t *peer, struct ibv_wc *wc)
wc->vendor_err, post->buf, wc->byte_len, post->reused);
if (wc->status == IBV_WC_RETRY_EXC_ERR) {
- gf_log ("rdma", GF_LOG_ERROR, "connection between client and"
- " server not working. check by running "
- "'ibv_srq_pingpong'. also make sure subnet manager"
- " is running (eg: 'opensm'), or check if rdma port is "
- "valid (or active) by running 'ibv_devinfo'. contact "
- "Gluster Support Team if the problem persists.");
+ gf_msg ("rdma", GF_LOG_ERROR, 0, TRANS_MSG_TIMEOUT_EXCEEDED,
+ "connection between client and server not working. "
+ "check by running 'ibv_srq_pingpong'. also make sure "
+ "subnet manager is running (eg: 'opensm'), or check "
+ "if rdma port is valid (or active) by running "
+ "'ibv_devinfo'. contact Gluster Support Team if the "
+ "problem persists.");
}
if (peer) {
@@ -4251,7 +4347,8 @@ gf_rdma_send_completion_proc (void *data)
failed = 0;
ret = ibv_get_cq_event (chan, &event_cq, &event_ctx);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_GET_CQ_FAILED,
"ibv_get_cq_event on failed, terminating "
"send thread: %d (%d)", ret, errno);
continue;
@@ -4261,7 +4358,8 @@ gf_rdma_send_completion_proc (void *data)
ret = ibv_req_notify_cq (event_cq, 0);
if (ret) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_REQ_NOTIFY_CQ_FAILED,
"ibv_req_notify_cq on %s failed, terminating "
"send thread: %d (%d)",
device->device_name, ret, errno);
@@ -4323,10 +4421,9 @@ gf_rdma_send_completion_proc (void *data)
quota_ret = gf_rdma_quota_put
(peer);
if (quota_ret < 0) {
- gf_log ("rdma",
- GF_LOG_DEBUG,
- "failed to send "
- "message");
+ gf_msg_debug ("rdma",
+ 0, "failed to send "
+ "message");
}
}
}
@@ -4334,7 +4431,7 @@ gf_rdma_send_completion_proc (void *data)
if (peer) {
rpc_transport_unref (peer->trans);
} else {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_DEBUG,
+ gf_msg_debug (GF_RDMA_LOG_NAME, 0,
"could not lookup peer for qp_num: %d",
wc[index].qp_num);
@@ -4343,7 +4440,8 @@ gf_rdma_send_completion_proc (void *data)
}
if (ret < 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_ERROR,
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_ERROR, errno,
+ RDMA_MSG_IBV_POLL_CQ_ERROR,
"ibv_poll_cq on `%s' returned error (ret = %d,"
" errno = %d)",
device->device_name, ret, errno);
@@ -4414,26 +4512,30 @@ gf_rdma_options_init (rpc_transport_t *this)
if (temp)
mtu = data_to_int32 (temp);
switch (mtu) {
+
case 256: options->mtu = IBV_MTU_256;
break;
+
case 512: options->mtu = IBV_MTU_512;
break;
+
case 1024: options->mtu = IBV_MTU_1024;
break;
+
case 2048: options->mtu = IBV_MTU_2048;
break;
+
case 4096: options->mtu = IBV_MTU_4096;
break;
default:
if (temp)
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "%s: unrecognized MTU value '%s', defaulting "
- "to '2048'", this->name,
- data_to_str (temp));
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, 0,
+ RDMA_MSG_UNRECG_MTU_VALUE, "%s: unrecognized "
+ "MTU value '%s', defaulting to '2048'",
+ this->name, data_to_str (temp));
else
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_TRACE,
- "%s: defaulting MTU to '2048'",
- this->name);
+ gf_msg_trace (GF_RDMA_LOG_NAME, 0, "%s: defaulting "
+ "MTU to '2048'", this->name);
options->mtu = IBV_MTU_2048;
break;
}
@@ -4460,9 +4562,9 @@ __gf_rdma_ctx_create (void)
rdma_ctx->rdma_cm_event_channel = rdma_create_event_channel ();
if (rdma_ctx->rdma_cm_event_channel == NULL) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "rdma_cm event channel creation failed (%s)",
- strerror (errno));
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, errno,
+ RDMA_MSG_CM_EVENT_FAILED, "rdma_cm event channel "
+ "creation failed (%s)", strerror (errno));
goto out;
}
@@ -4470,9 +4572,9 @@ __gf_rdma_ctx_create (void)
gf_rdma_cm_event_handler,
rdma_ctx->rdma_cm_event_channel);
if (ret != 0) {
- gf_log (GF_RDMA_LOG_NAME, GF_LOG_WARNING,
- "creation of thread to handle rdma-cm events "
- "failed (%s)", strerror (ret));
+ gf_msg (GF_RDMA_LOG_NAME, GF_LOG_WARNING, ret,
+ RDMA_MSG_CM_EVENT_FAILED, "creation of thread to "
+ "handle rdma-cm events failed (%s)", strerror (ret));
goto out;
}
@@ -4497,7 +4599,7 @@ gf_rdma_init (rpc_transport_t *this)
glusterfs_ctx_t *ctx = NULL;
gf_rdma_options_t *options = NULL;
- ctx= this->ctx;
+ ctx = this->ctx;
priv = this->private;
@@ -4574,8 +4676,8 @@ gf_rdma_connect (struct rpc_transport *this, int port)
&sock_union.sa,
&sockaddr_len, port);
if (ret != 0) {
- gf_log (this->name, GF_LOG_DEBUG,
- "cannot get remote address to connect");
+ gf_msg_debug (this->name, 0, "cannot get remote address to "
+ "connect");
goto out;
}
@@ -4595,9 +4697,9 @@ gf_rdma_connect (struct rpc_transport *this, int port)
ret = rdma_create_id (rdma_ctx->rdma_cm_event_channel,
&peer->cm_id, this, RDMA_PS_TCP);
if (ret != 0) {
- gf_log (this->name, GF_LOG_ERROR,
- "creation of rdma_cm_id failed (%s)",
- strerror (errno));
+ gf_msg (this->name, GF_LOG_ERROR, errno,
+ RDMA_MSG_CM_EVENT_FAILED, "creation of "
+ "rdma_cm_id failed (%s)", strerror (errno));
ret = -errno;
goto unlock;
}
@@ -4617,7 +4719,8 @@ gf_rdma_connect (struct rpc_transport *this, int port)
&this->myinfo.sockaddr_len,
peer->cm_id);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_CLIENT_BIND_FAILED,
"client bind failed: %s", strerror (errno));
goto unlock;
}
@@ -4625,7 +4728,8 @@ gf_rdma_connect (struct rpc_transport *this, int port)
ret = rdma_resolve_addr (peer->cm_id, NULL, &sock_union.sa,
2000);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_RDMA_RESOLVE_ADDR_FAILED,
"rdma_resolve_addr failed (%s)",
strerror (errno));
goto unlock;
@@ -4671,7 +4775,8 @@ gf_rdma_listen (rpc_transport_t *this)
ret = gf_rdma_server_get_local_sockaddr (this, &sock_union.sa,
&sockaddr_len);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_NW_ADDR_UNKNOWN,
"cannot find network address of server to bind to");
goto err;
}
@@ -4679,9 +4784,9 @@ gf_rdma_listen (rpc_transport_t *this)
ret = rdma_create_id (rdma_ctx->rdma_cm_event_channel,
&peer->cm_id, this, RDMA_PS_TCP);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
- "creation of rdma_cm_id failed (%s)",
- strerror (errno));
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_CM_EVENT_FAILED, "creation of rdma_cm_id "
+ "failed (%s)", strerror (errno));
goto err;
}
@@ -4694,7 +4799,8 @@ gf_rdma_listen (rpc_transport_t *this)
service, sizeof (service),
NI_NUMERICHOST);
if (ret != 0) {
- gf_log (this->name, GF_LOG_ERROR,
+ gf_msg (this->name, GF_LOG_ERROR, ret,
+ TRANS_MSG_GET_NAME_INFO_FAILED,
"getnameinfo failed (%s)", gai_strerror (ret));
goto err;
}
@@ -4705,21 +4811,24 @@ gf_rdma_listen (rpc_transport_t *this)
RDMA_OPTION_ID_REUSEADDR,
(void *)&optval, sizeof(optval));
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
- "rdma option set failed (%s)", strerror (errno));
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_OPTION_SET_FAILED, "rdma option set failed "
+ "(%s)", strerror (errno));
goto err;
}
ret = rdma_bind_addr (peer->cm_id, &sock_union.sa);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_RDMA_BIND_ADDR_FAILED,
"rdma_bind_addr failed (%s)", strerror (errno));
goto err;
}
ret = rdma_listen (peer->cm_id, 10);
if (ret != 0) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, errno,
+ RDMA_MSG_LISTEN_FAILED,
"rdma_listen failed (%s)", strerror (errno));
goto err;
}
@@ -4761,7 +4870,8 @@ init (rpc_transport_t *this)
this->private = priv;
if (gf_rdma_init (this)) {
- gf_log (this->name, GF_LOG_WARNING,
+ gf_msg (this->name, GF_LOG_WARNING, 0,
+ RDMA_MSG_INIT_IB_DEVICE_FAILED,
"Failed to initialize IB Device");
this->private = NULL;
GF_FREE (priv);
@@ -4794,8 +4904,8 @@ fini (struct rpc_transport *this)
pthread_mutex_destroy (&priv->recv_mutex);
pthread_mutex_destroy (&priv->write_mutex);
- gf_log (this->name, GF_LOG_TRACE,
- "called fini on transport: %p", this);
+ gf_msg_trace (this->name, 0,
+ "called fini on transport: %p", this);
GF_FREE (priv);
}
diff --git a/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h b/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h
new file mode 100644
index 00000000000..0957de25bb1
--- /dev/null
+++ b/rpc/rpc-transport/rdma/src/rpc-trans-rdma-messages.h
@@ -0,0 +1,217 @@
+/*
+ Copyright (c) 2015 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of GlusterFS.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+#ifndef _RPC_TRANS_RDMA_MESSAGES_H_
+#define _RPC_TRANS_RDMA_MESSAGES_H_
+
+#ifndef _CONFIG_H
+#define _CONFIG_H
+#include "config.h"
+#endif
+
+#include "glfs-message-id.h"
+
+/* NOTE: Rules for message additions
+ * 1) Each instance of a message is _better_ left with a unique message ID, even
+ * if the message format is the same. Reasoning is that, if the message
+ * format needs to change in one instance, the other instances are not
+ * impacted or the new change does not change the ID of the instance being
+ * modified.
+ * 2) Addition of a message,
+ * - Should increment the GLFS_NUM_MESSAGES_RDMA
+ * - Append to the list of messages defined, towards the end
+ * - Retain macro naming as glfs_msg_X (for redability across developers)
+ * NOTE: Rules for message format modifications
+ * 3) Check acorss the code if the message ID macro in question is reused
+ * anywhere. If reused then then the modifications should ensure correctness
+ * everywhere, or needs a new message ID as (1) above was not adhered to. If
+ * not used anywhere, proceed with the required modification.
+ * NOTE: Rules for message deletion
+ * 4) Check (3) and if used anywhere else, then cannot be deleted. If not used
+ * anywhere, then can be deleted, but will leave a hole by design, as
+ * addition rules specify modification to the end of the list and not filling
+ * holes.
+ */
+
+#define GLFS_RPC_TRANS_RDMA_BASE GLFS_MSGID_COMP_RPC_TRANS_RDMA
+#define GLFS_NUM_MESSAGES_RDMA 77
+#define GLFS_RPC_TRANS_RDMA_MSGID_END (GLFS_RPC_TRANS_RDMA_BASE + GLFS_NUM_MESSAGES_RDMA + 1)
+
+/* Messages with message IDs */
+
+#define glfs_msg_start_rdma GLFS_RPC_TRANS_RDMA_BASE, "Invalid: Start of messages"
+
+/* This slot/segment is allocated for RDMA message IDs
+ * The allocation starts from BASE.
+
+*/
+
+#define RDMA_MSG_PORT_BIND_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 1)
+
+#define RDMA_MSG_POST_CREATION_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 2)
+
+#define RDMA_MSG_DEREGISTER_ARENA_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 3)
+
+#define RDMA_MSG_MR_ALOC_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 4)
+
+#define RDMA_MSG_PREREG_BUFFER_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 5)
+
+#define RDMA_MSG_CQ_CREATION_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 6)
+
+#define RDMA_MSG_REQ_NOTIFY_CQ_REVQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 7)
+
+#define RDMA_MSG_QUERY_DEVICE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 8)
+
+#define RDMA_MSG_REQ_NOTIFY_CQ_SENDQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 9)
+
+#define RDMA_MSG_SEND_COMP_CHAN_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 10)
+
+#define RDMA_MSG_RECV_COMP_CHAN_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 11)
+
+#define RDMA_MSG_ALOC_PROT_DOM_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 12)
+
+#define RDMA_MSG_CRE_SRQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 13)
+
+#define RDMA_MSG_ALOC_POST_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 14)
+
+#define RDMA_MSG_SEND_COMP_THREAD_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 15)
+
+#define RDMA_MSG_RECV_COMP_THREAD_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 16)
+
+#define RDMA_MSG_ASYNC_EVENT_THEAD_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 17)
+
+#define RDMA_MSG_GET_DEVICE_NAME_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 18)
+
+#define RDMA_MSG_GET_IB_DEVICE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 19)
+
+#define RDMA_MSG_CREAT_INC_TRANS_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 20)
+
+#define RDMA_MSG_CREAT_QP_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 21)
+
+#define RDMA_MSG_ACCEPT_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 22)
+
+#define RDMA_MSG_CONNECT_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 23)
+
+#define RDMA_MSG_ROUTE_RESOLVE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 24)
+
+#define RDMA_MSG_GET_DEVICE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 25)
+
+#define RDMA_MSG_PEER_DISCONNECTED (GLFS_RPC_TRANS_RDMA_BASE + 26)
+
+#define RDMA_MSG_ENCODE_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 27)
+
+#define RDMA_MSG_POST_SEND_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 28)
+
+#define RDMA_MSG_READ_CHUNK_VECTOR_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 29)
+
+#define RDMA_MSG_WRITE_CHUNK_VECTOR_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 30)
+
+#define RDMA_MSG_WRITE_REPLY_CHUNCK_CONFLICT (GLFS_RPC_TRANS_RDMA_BASE + 31)
+
+#define RDMA_MSG_CHUNK_COUNT_GREAT_MAX_SEGMENTS (GLFS_RPC_TRANS_RDMA_BASE + 32)
+
+#define RDMA_MSG_CREATE_READ_CHUNK_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 33)
+
+#define RDMA_MSG_CREATE_WRITE_REPLAY_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 34)
+
+#define RDMA_MSG_SEND_SIZE_GREAT_INLINE_THRESHOLD (GLFS_RPC_TRANS_RDMA_BASE + 35)
+
+#define RDMA_MSG_REG_ACCESS_LOCAL_WRITE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 36)
+
+#define RDMA_MSG_WRITE_PEER_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 37)
+
+#define RDMA_MSG_SEND_REPLY_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 38)
+
+#define RDMA_MSG_INVALID_CHUNK_TYPE (GLFS_RPC_TRANS_RDMA_BASE + 39)
+
+#define RDMA_MSG_PROC_IOQ_ENTRY_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 40)
+
+#define RDMA_MSG_NEW_IOQ_ENTRY_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 41)
+
+#define RDMA_MSG_RPC_REPLY_CREATE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 42)
+
+#define RDMA_MSG_GET_READ_CHUNK_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 43)
+
+#define RDMA_MSG_GET_WRITE_CHUNK_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 44)
+
+#define RDMA_MSG_REPLY_INFO_ALLOC_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 45)
+
+#define RDMA_MSG_RDMA_ERROR_RECEIVED (GLFS_RPC_TRANS_RDMA_BASE + 46)
+
+#define RDMA_MSG_GET_REQ_INFO_RPC_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 47)
+
+#define RDMA_MSG_POLL_IN_NOTIFY_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 48)
+
+#define RDMA_MSG_HEADER_DECODE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 49)
+
+#define RDMA_MSG_EVENT_SRQ_LIMIT_REACHED (GLFS_RPC_TRANS_RDMA_BASE + 50)
+
+#define RDMA_MSG_UNRECG_MQ_VALUE (GLFS_RPC_TRANS_RDMA_BASE + 51)
+
+#define RDMA_MSG_BUFFER_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 52)
+
+#define RDMA_MSG_OPTION_SET_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 53)
+
+#define RDMA_MSG_LISTEN_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 54)
+
+#define RDMA_MSG_INIT_IB_DEVICE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 55)
+
+#define RDMA_MSG_WRITE_CLIENT_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 56)
+
+#define RDMA_MSG_CHUNKLIST_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 57)
+
+#define RDMA_MSG_INVALID_ENTRY (GLFS_RPC_TRANS_RDMA_BASE + 58)
+
+#define RDMA_MSG_READ_CLIENT_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 59)
+
+#define RDMA_MSG_RPC_ST_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 60)
+
+#define RDMA_MSG_PEER_READ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 61)
+
+#define RDMA_MSG_POST_MISSING (GLFS_RPC_TRANS_RDMA_BASE + 62)
+
+#define RDMA_MSG_PEER_REQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 63)
+
+#define RDMA_MSG_PEER_REP_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 64)
+
+#define RDMA_MSG_EVENT_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 65)
+
+#define RDMA_MSG_IBV_GET_CQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 66)
+
+#define RDMA_MSG_IBV_REQ_NOTIFY_CQ_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 67)
+
+#define RDMA_MSG_RECV_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 68)
+
+#define RDMA_MSG_IBV_POLL_CQ_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 69)
+
+#define RDMA_MSG_RDMA_HANDLE_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 70)
+
+#define RDMA_MSG_CM_EVENT_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 71)
+
+#define RDMA_MSG_CLIENT_BIND_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 72)
+
+#define RDMA_MSG_RDMA_RESOLVE_ADDR_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 73)
+
+#define RDMA_MSG_NW_ADDR_UNKNOWN (GLFS_RPC_TRANS_RDMA_BASE + 74)
+
+#define RDMA_MSG_RDMA_BIND_ADDR_FAILED (GLFS_RPC_TRANS_RDMA_BASE + 75)
+
+#define RDMA_MSG_SEND_CLIENT_ERROR (GLFS_RPC_TRANS_RDMA_BASE + 76)
+
+#define RDMA_MSG_UNRECG_MTU_VALUE (GLFS_RPC_TRANS_RDMA_BASE + 77)
+
+
+
+/*------------*/
+
+#define glfs_msg_end_rdma GLFS_RPC_TRANS_RDMA_MSGID_END, "Invalid: End of messages"
+
+#endif /* !_RPC_TRANS_RDMA_MESSAGES_H_ */
+