From 78a24106d40588a3598c332595b54c73c01717ef Mon Sep 17 00:00:00 2001 From: Ziye Yang Date: Mon, 11 Mar 2019 21:37:41 +0800 Subject: [PATCH] nvme/tcp: add the function nvme_tcp_readv_data Change-Id: I0a1ad0a4dc265ced10b0ce761d38a679fa06bacf Signed-off-by: Ziye Yang Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447579 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto --- include/spdk_internal/nvme_tcp.h | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/include/spdk_internal/nvme_tcp.h b/include/spdk_internal/nvme_tcp.h index a4da2883e..cfddf1ac9 100644 --- a/include/spdk_internal/nvme_tcp.h +++ b/include/spdk_internal/nvme_tcp.h @@ -283,17 +283,16 @@ end: } static int -nvme_tcp_read_data(struct spdk_sock *sock, int bytes, - void *buf) +nvme_tcp_readv_data(struct spdk_sock *sock, struct iovec *iov, int iovcnt) { int ret; assert(sock != NULL); - if (bytes == 0) { + if (iov == NULL || iovcnt == 0) { return 0; } - ret = spdk_sock_recv(sock, buf, bytes); + ret = spdk_sock_readv(sock, iov, iovcnt); if (ret > 0) { return ret; @@ -306,15 +305,28 @@ nvme_tcp_read_data(struct spdk_sock *sock, int bytes, /* For connect reset issue, do not output error log */ if (errno == ECONNRESET) { - SPDK_DEBUGLOG(SPDK_LOG_NVME, "spdk_sock_recv() failed, errno %d: %s\n", + SPDK_DEBUGLOG(SPDK_LOG_NVME, "spdk_sock_readv() failed, errno %d: %s\n", errno, spdk_strerror(errno)); } else { - SPDK_ERRLOG("spdk_sock_recv() failed, errno %d: %s\n", + SPDK_ERRLOG("spdk_sock_readv() failed, errno %d: %s\n", errno, spdk_strerror(errno)); } } + /* connection closed */ return NVME_TCP_CONNECTION_FATAL; } +static int +nvme_tcp_read_data(struct spdk_sock *sock, int bytes, + void *buf) +{ + struct iovec iov; + + iov.iov_base = buf; + iov.iov_len = bytes; + + return nvme_tcp_readv_data(sock, &iov, 1); +} + #endif /* SPDK_INTERNAL_NVME_TCP_H */