diff options
Diffstat (limited to 'rpc/rpc-transport/rdma/src/rdma.c')
| -rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 105 | 
1 files changed, 45 insertions, 60 deletions
diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index 81e6e3cf632..177730f65a0 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -84,8 +84,8 @@ ib_check_active_port (struct ibv_context *ctx, uint8_t port)          const char *state_str = NULL;          if (!ctx) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, -                        "Error in supplied context"); +                gf_log_callingfn (RDMA_LOG_NAME, GF_LOG_ERROR, +                                  "Error in supplied context");                  return -1;          } @@ -117,8 +117,8 @@ ib_get_active_port (struct ibv_context *ib_ctx)          uint8_t ib_port = 0;          if (!ib_ctx) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, -                        "Error in supplied context"); +                gf_log_callingfn (RDMA_LOG_NAME, GF_LOG_ERROR, +                                  "Error in supplied context");                  return -1;          }          if (ibv_query_device (ib_ctx, &ib_device_attr)) { @@ -176,7 +176,6 @@ rdma_new_post (rdma_device_t *device, int32_t len, rdma_post_type_t type)          post = (rdma_post_t *) GF_CALLOC (1, sizeof (*post),                                            gf_common_mt_rdma_post_t);          if (post == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  goto out;          } @@ -186,7 +185,7 @@ rdma_new_post (rdma_device_t *device, int32_t len, rdma_post_type_t type)          post->buf = valloc (len);          if (!post->buf) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory"); +                gf_log_nomem (RDMA_LOG_NAME, GF_LOG_ERROR, len);                  goto out;          } @@ -195,7 +194,7 @@ rdma_new_post (rdma_device_t *device, int32_t len, rdma_post_type_t type)                                 post->buf_size,                                 IBV_ACCESS_LOCAL_WRITE);          if (!post->mr) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR,                          "memory registration failed");                  goto out;          } @@ -325,8 +324,7 @@ __rdma_disconnect (rpc_transport_t *this)          if (priv->connected || priv->tcp_connected) {                  fcntl (priv->sock, F_SETFL, O_NONBLOCK);                  if (shutdown (priv->sock, SHUT_RDWR) != 0) { -                        gf_log (RDMA_LOG_NAME, -                                GF_LOG_DEBUG, +                        gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG,                                  "shutdown () - error: %s",                                  strerror (errno));                          ret = -errno; @@ -404,6 +402,8 @@ __rdma_send_error (rdma_peer_t *peer, rdma_ioq_t *entry, rdma_post_t *post,          len = __rdma_encode_error (peer, reply_info, entry->rpchdr,                                     (uint32_t *)post->buf, err);          if (len == -1) { +                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, +                        "encode error returned -1");                  goto out;          } @@ -413,7 +413,7 @@ __rdma_send_error (rdma_peer_t *peer, rdma_ioq_t *entry, rdma_post_t *post,          if (!ret) {                  ret = len;          } else { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "rdma_post_send (to %s) failed with ret = %d (%s)",                          peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -441,10 +441,11 @@ __rdma_create_read_chunks_from_vector (rdma_peer_t *peer,          rdma_read_chunk_t *readch = NULL;          int32_t            ret    = -1; -        if ((peer == NULL) || (readch_ptr == NULL) || (*readch_ptr == NULL) -            || (request_ctx == NULL) || (vector == NULL)) { -                goto out; -        } +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, peer, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, readch_ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, *readch_ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, request_ctx, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, vector, out);          priv = peer->trans->private;          device = priv->device; @@ -458,7 +459,7 @@ __rdma_create_read_chunks_from_vector (rdma_peer_t *peer,                                   vector[i].iov_len,                                   IBV_ACCESS_REMOTE_READ);                  if (!mr) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR,                                  "memory registration failed");                          goto out;                  } @@ -493,10 +494,11 @@ __rdma_create_read_chunks (rdma_peer_t *peer, rdma_ioq_t *entry,          rdma_private_t    *priv     = NULL;          int                pos      = 0; -        if ((peer == NULL) || (entry == NULL) || (ptr == NULL) -            || (*ptr == NULL) || (request_ctx == NULL)) { -                goto out; -        } +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, peer, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, entry, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, *ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, request_ctx, out);          priv = peer->trans->private;          device = priv->device; @@ -579,10 +581,11 @@ __rdma_create_write_chunks_from_vector (rdma_peer_t *peer,          rdma_write_chunk_t *writech = NULL;          int32_t             ret     = -1; -        if ((peer == NULL) || (writech_ptr == NULL) || (*writech_ptr == NULL) -            || (request_ctx == NULL) || (vector == NULL)) { -                goto out; -        } +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, peer, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, writech_ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, *writech_ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, request_ctx, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, vector, out);          writech = *writech_ptr; @@ -595,7 +598,7 @@ __rdma_create_write_chunks_from_vector (rdma_peer_t *peer,                                   IBV_ACCESS_REMOTE_WRITE                                   | IBV_ACCESS_LOCAL_WRITE);                  if (!mr) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR,                                  "memory registration failed");                          goto out;                  } @@ -626,15 +629,16 @@ __rdma_create_write_chunks (rdma_peer_t *peer, rdma_ioq_t *entry,          int32_t             ret      = -1;          rdma_write_array_t *warray   = NULL; -        if ((peer == NULL) || (entry == NULL) || (ptr == NULL) -            || (*ptr == NULL) || (request_ctx == NULL)) { -                goto out; -        } +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, peer, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, *ptr, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, request_ctx, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, entry, out);          if ((chunk_type == rdma_replych)              && ((entry->msg.request.rsphdr_count != 1) ||                  (entry->msg.request.rsphdr_vec[0].iov_base == NULL))) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          (entry->msg.request.rsphdr_count == 1)                          ? "chunktype specified as reply chunk but the vector "                          "specifying the buffer to be used for holding reply" @@ -942,14 +946,14 @@ __rdma_ioq_churn_request (rdma_peer_t *peer, rdma_ioq_t *entry,          uint32_t                prog_payload_length = 0, len = 0;          struct rpc_req         *rpc_req             = NULL; -        if ((peer == NULL) || (entry == NULL) || (post == NULL)) { -                goto out; -        } +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, peer, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, entry, out); +        GF_VALIDATE_OR_GOTO (RDMA_LOG_NAME, post, out);          if ((entry->msg.request.rsphdr_count != 0)              && (entry->msg.request.rsp_payload_count != 0)) {                  ret = -1; -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "both write-chunklist and reply-chunk cannot be "                          "present");                  goto out; @@ -1001,7 +1005,7 @@ __rdma_ioq_churn_request (rdma_peer_t *peer, rdma_ioq_t *entry,          if (chunk_count > RDMA_MAX_SEGMENTS) {                  ret = -1; -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "chunk count(%d) exceeding maximum allowed RDMA "                          "segment count(%d)", chunk_count, RDMA_MAX_SEGMENTS);                  goto out; @@ -1011,7 +1015,6 @@ __rdma_ioq_churn_request (rdma_peer_t *peer, rdma_ioq_t *entry,                  request_ctx = mem_get (priv->device->request_ctx_pool);                  if (request_ctx == NULL) {                          ret = -1; -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          goto out;                  } @@ -1093,7 +1096,7 @@ __rdma_ioq_churn_request (rdma_peer_t *peer, rdma_ioq_t *entry,          if (!ret) {                  ret = len;          } else { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "rdma_post_send (to %s) failed with ret = %d (%s)",                          peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -1202,7 +1205,7 @@ __rdma_send_reply_inline (rdma_peer_t *peer, rdma_ioq_t *entry,          if (!ret) {                  ret = send_size;          } else { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "rdma_post_send (to %s) failed with ret = %d (%s)",                          peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -1337,7 +1340,6 @@ __rdma_write (rdma_peer_t *peer, rdma_post_t *post, struct iovec *vec,          sg_list = GF_CALLOC (num_sge, sizeof (struct ibv_sge), gf_common_mt_sge);          if (sg_list == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  ret = -1;                  goto out;          } @@ -1368,7 +1370,7 @@ __rdma_write (rdma_peer_t *peer, rdma_post_t *post, struct iovec *vec,          ret = ibv_post_send(peer->qp, &wr, &bad_wr);          if (ret) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, "rdma write to " +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING, "rdma write to "                          "client (%s) failed with ret = %d (%s)",                          peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -1486,7 +1488,7 @@ __rdma_send_reply_type_nomsg (rdma_peer_t *peer, rdma_ioq_t *entry,          ret = rdma_post_send (peer->qp, post, (buf - post->buf));          if (ret) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "rdma_post_send to client (%s) failed with "                          "ret = %d (%s)", peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -1520,7 +1522,7 @@ __rdma_send_reply_type_msg (rdma_peer_t *peer, rdma_ioq_t *entry,                  + GLUSTERFS_RDMA_MAX_HEADER_SIZE;          if (send_size > GLUSTERFS_RDMA_INLINE_THRESHOLD) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "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 " @@ -1572,7 +1574,7 @@ __rdma_send_reply_type_msg (rdma_peer_t *peer, rdma_ioq_t *entry,          ret = rdma_post_send (peer->qp, post, (ptr - post->buf));          if (ret) { -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "rdma send to client (%s) failed with ret = %d (%s)",                          peer->trans->peerinfo.identifier, ret,                          (ret > 0) ? strerror (ret) : ""); @@ -1615,7 +1617,6 @@ rdma_reply_info_alloc (rdma_peer_t *peer)          reply_info = mem_get (priv->device->reply_info_pool);          if (reply_info == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  goto out;          } @@ -1659,7 +1660,7 @@ __rdma_ioq_churn_reply (rdma_peer_t *peer, rdma_ioq_t *entry, rdma_post_t *post)                  break;          default: -                gf_log (RDMA_LOG_NAME, GF_LOG_DEBUG, +                gf_log (RDMA_LOG_NAME, GF_LOG_WARNING,                          "invalid chunktype (%d) specified for sending reply",                          type);                  break; @@ -1800,7 +1801,6 @@ rdma_ioq_new (rpc_transport_t *this, rpc_transport_data_t *data)          /* TODO: use mem-pool */          entry = mem_get (priv->device->ioq_pool);          if (entry == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  goto out;          }          memset (entry, 0, sizeof (*entry)); @@ -2145,7 +2145,6 @@ rdma_register_peer (rdma_device_t *device,                  ent = (struct _qpent *) GF_CALLOC (1, sizeof (*ent),                                                     gf_common_mt_qpent);                  if (ent == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          goto unlock;                  } @@ -2626,7 +2625,6 @@ rdma_get_write_chunklist (char **ptr, rdma_write_array_t **write_ary)          to = GF_CALLOC (1, size, gf_common_mt_char);          if (to == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  ret = -1;                  goto out;          } @@ -2709,14 +2707,12 @@ rdma_decode_error_msg (rdma_peer_t *peer, rdma_post_t *post,          iobuf = iobuf_get (peer->trans->ctx->iobuf_pool);          if (iobuf == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  ret = -1;                  goto out;          }          post->ctx.iobref = iobref = iobref_new ();          if (iobref == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  ret = -1;                  goto out;          } @@ -2817,7 +2813,6 @@ rdma_decode_msg (rdma_peer_t *peer, rdma_post_t *post,          if (header->rm_type != RDMA_NOMSG) {                  post->ctx.hdr_iobuf = iobuf_get (peer->trans->ctx->iobuf_pool);                  if (post->ctx.hdr_iobuf == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          ret = -1;                          goto out;                  } @@ -2969,7 +2964,6 @@ rdma_do_reads (rdma_peer_t *peer, rdma_post_t *post, rdma_read_chunk_t *readch)          iobuf = iobuf_get (peer->trans->ctx->iobuf_pool);          if (iobuf == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  goto out;          } @@ -2977,7 +2971,6 @@ rdma_do_reads (rdma_peer_t *peer, rdma_post_t *post, rdma_read_chunk_t *readch)                  post->ctx.iobref = iobref_new ();                  if (post->ctx.iobref == NULL) {                          iobuf_unref (iobuf); -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          goto out;                  }          } @@ -3045,7 +3038,6 @@ rdma_pollin_notify (rdma_peer_t *peer, rdma_post_t *post)          if (post->ctx.iobref == NULL) {                  post->ctx.iobref = iobref_new ();                  if (post->ctx.iobref == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          goto out;                  } @@ -3064,7 +3056,6 @@ rdma_pollin_notify (rdma_peer_t *peer, rdma_post_t *post)                                               post->ctx.iobref,                                               post->ctx.reply_info);          if (pollin == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  goto out;          } @@ -3699,7 +3690,6 @@ rdma_get_device (rpc_transport_t *this,                  trav = GF_CALLOC (1, sizeof (*trav),                                    gf_common_mt_rdma_device_t);                  if (trav == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          return NULL;                  } @@ -3723,21 +3713,18 @@ rdma_get_device (rpc_transport_t *this,                  trav->request_ctx_pool = mem_pool_new (rdma_request_context_t,                                                         RDMA_POOL_SIZE);                  if (trav->request_ctx_pool == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          return NULL;                  }                  trav->ioq_pool = mem_pool_new (rdma_ioq_t, RDMA_POOL_SIZE);                  if (trav->ioq_pool == NULL) {                          mem_pool_destroy (trav->request_ctx_pool); -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          return NULL;                  }                  trav->reply_info_pool = mem_pool_new (rdma_reply_info_t,                                                        RDMA_POOL_SIZE);                  if (trav->reply_info_pool == NULL) { -                        gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                          mem_pool_destroy (trav->request_ctx_pool);                          mem_pool_destroy (trav->ioq_pool);                          return NULL; @@ -4646,7 +4633,6 @@ rdma_server_event_handler (int fd, int idx, void *data,          this = GF_CALLOC (1, sizeof (rpc_transport_t),                            gf_common_mt_rpc_transport_t);          if (this == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  return -1;          } @@ -4655,7 +4641,6 @@ rdma_server_event_handler (int fd, int idx, void *data,          priv = GF_CALLOC (1, sizeof (rdma_private_t),                            gf_common_mt_rdma_private_t);          if (priv == NULL) { -                gf_log (RDMA_LOG_NAME, GF_LOG_ERROR, "out of memory");                  GF_FREE (priv);                  return -1;          }  | 
