nvme/tcp: Minor cleanups for SGL operations
Using naming rules consistent with other related libraries is helpful to ensure the quality as verified by this patch series. This patch changes a few parts to use iov and iovcnt for SGL operations. Besides, name of an array points to the head of the array and is constant. So copying name of array to an another pointer is not necessary and can be removed. Change-Id: I2324f28126b3088098c1c767cf6c060f22c175c3 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455629 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Maciej Szwed <maciej.szwed@intel.com> Reviewed-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
127cfac020
commit
3ff1ff004e
@ -248,19 +248,19 @@ _nvme_tcp_sgl_append(struct _nvme_tcp_sgl *s, uint8_t *data, uint32_t data_len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nvme_tcp_build_iovecs(struct iovec *iovec, int num_iovs, struct nvme_tcp_pdu *pdu,
|
nvme_tcp_build_iovs(struct iovec *iov, int iovcnt, struct nvme_tcp_pdu *pdu,
|
||||||
bool hdgst_enable, bool ddgst_enable, uint32_t *_mapped_length)
|
bool hdgst_enable, bool ddgst_enable, uint32_t *_mapped_length)
|
||||||
{
|
{
|
||||||
int enable_digest;
|
int enable_digest;
|
||||||
uint32_t hlen, plen, i;
|
uint32_t hlen, plen, i;
|
||||||
struct _nvme_tcp_sgl *sgl;
|
struct _nvme_tcp_sgl *sgl;
|
||||||
|
|
||||||
if (num_iovs == 0) {
|
if (iovcnt == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sgl = &pdu->sgl;
|
sgl = &pdu->sgl;
|
||||||
_nvme_tcp_sgl_init(sgl, iovec, num_iovs, pdu->writev_offset);
|
_nvme_tcp_sgl_init(sgl, iov, iovcnt, pdu->writev_offset);
|
||||||
hlen = pdu->hdr.common.hlen;
|
hlen = pdu->hdr.common.hlen;
|
||||||
enable_digest = 1;
|
enable_digest = 1;
|
||||||
if (pdu->hdr.common.pdu_type == SPDK_NVME_TCP_PDU_TYPE_IC_REQ ||
|
if (pdu->hdr.common.pdu_type == SPDK_NVME_TCP_PDU_TYPE_IC_REQ ||
|
||||||
@ -317,22 +317,22 @@ end:
|
|||||||
assert(plen == pdu->hdr.common.plen);
|
assert(plen == pdu->hdr.common.plen);
|
||||||
}
|
}
|
||||||
|
|
||||||
return num_iovs - sgl->iovcnt;
|
return iovcnt - sgl->iovcnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nvme_tcp_build_payload_iovecs(struct iovec *iovec, int num_iovs, struct nvme_tcp_pdu *pdu,
|
nvme_tcp_build_payload_iovs(struct iovec *iov, int iovcnt, struct nvme_tcp_pdu *pdu,
|
||||||
bool ddgst_enable, uint32_t *_mapped_length)
|
bool ddgst_enable, uint32_t *_mapped_length)
|
||||||
{
|
{
|
||||||
struct _nvme_tcp_sgl *sgl;
|
struct _nvme_tcp_sgl *sgl;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
if (num_iovs == 0) {
|
if (iovcnt == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sgl = &pdu->sgl;
|
sgl = &pdu->sgl;
|
||||||
_nvme_tcp_sgl_init(sgl, iovec, num_iovs, pdu->readv_offset);
|
_nvme_tcp_sgl_init(sgl, iov, iovcnt, pdu->readv_offset);
|
||||||
|
|
||||||
for (i = 0; i < pdu->data_iovcnt; i++) {
|
for (i = 0; i < pdu->data_iovcnt; i++) {
|
||||||
if (!_nvme_tcp_sgl_append(sgl, pdu->data_iov[i].iov_base, pdu->data_iov[i].iov_len)) {
|
if (!_nvme_tcp_sgl_append(sgl, pdu->data_iov[i].iov_base, pdu->data_iov[i].iov_len)) {
|
||||||
@ -349,7 +349,7 @@ end:
|
|||||||
if (_mapped_length != NULL) {
|
if (_mapped_length != NULL) {
|
||||||
*_mapped_length = sgl->total_size;
|
*_mapped_length = sgl->total_size;
|
||||||
}
|
}
|
||||||
return num_iovs - sgl->iovcnt;
|
return iovcnt - sgl->iovcnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -426,15 +426,14 @@ nvme_tcp_readv_data(struct spdk_sock *sock, struct iovec *iov, int iovcnt)
|
|||||||
static int
|
static int
|
||||||
nvme_tcp_read_payload_data(struct spdk_sock *sock, struct nvme_tcp_pdu *pdu)
|
nvme_tcp_read_payload_data(struct spdk_sock *sock, struct nvme_tcp_pdu *pdu)
|
||||||
{
|
{
|
||||||
struct iovec iovec_array[NVME_TCP_MAX_SGL_DESCRIPTORS + 1];
|
struct iovec iov[NVME_TCP_MAX_SGL_DESCRIPTORS + 1];
|
||||||
struct iovec *iov = iovec_array;
|
int iovcnt;
|
||||||
int iovec_cnt;
|
|
||||||
|
|
||||||
iovec_cnt = nvme_tcp_build_payload_iovecs(iovec_array, NVME_TCP_MAX_SGL_DESCRIPTORS + 1, pdu,
|
iovcnt = nvme_tcp_build_payload_iovs(iov, NVME_TCP_MAX_SGL_DESCRIPTORS + 1, pdu,
|
||||||
pdu->ddgst_enable, NULL);
|
pdu->ddgst_enable, NULL);
|
||||||
assert(iovec_cnt >= 0);
|
assert(iovcnt >= 0);
|
||||||
|
|
||||||
return nvme_tcp_readv_data(sock, iov, iovec_cnt);
|
return nvme_tcp_readv_data(sock, iov, iovcnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -383,9 +383,8 @@ static int
|
|||||||
nvme_tcp_qpair_process_send_queue(struct nvme_tcp_qpair *tqpair)
|
nvme_tcp_qpair_process_send_queue(struct nvme_tcp_qpair *tqpair)
|
||||||
{
|
{
|
||||||
const int array_size = 32;
|
const int array_size = 32;
|
||||||
struct iovec iovec_array[array_size];
|
struct iovec iovs[array_size];
|
||||||
struct iovec *iov = iovec_array;
|
int iovcnt = 0;
|
||||||
int iovec_cnt = 0;
|
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
uint32_t mapped_length;
|
uint32_t mapped_length;
|
||||||
struct nvme_tcp_pdu *pdu;
|
struct nvme_tcp_pdu *pdu;
|
||||||
@ -402,14 +401,14 @@ nvme_tcp_qpair_process_send_queue(struct nvme_tcp_qpair *tqpair)
|
|||||||
* Build up a list of iovecs for the first few PDUs in the
|
* Build up a list of iovecs for the first few PDUs in the
|
||||||
* tqpair 's send_queue.
|
* tqpair 's send_queue.
|
||||||
*/
|
*/
|
||||||
while (pdu != NULL && ((array_size - iovec_cnt) >= 3)) {
|
while (pdu != NULL && ((array_size - iovcnt) >= 3)) {
|
||||||
iovec_cnt += nvme_tcp_build_iovecs(&iovec_array[iovec_cnt], array_size - iovec_cnt,
|
iovcnt += nvme_tcp_build_iovs(&iovs[iovcnt], array_size - iovcnt,
|
||||||
pdu, tqpair->host_hdgst_enable,
|
pdu, tqpair->host_hdgst_enable,
|
||||||
tqpair->host_ddgst_enable, &mapped_length);
|
tqpair->host_ddgst_enable, &mapped_length);
|
||||||
pdu = TAILQ_NEXT(pdu, tailq);
|
pdu = TAILQ_NEXT(pdu, tailq);
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes = spdk_sock_writev(tqpair->sock, iov, iovec_cnt);
|
bytes = spdk_sock_writev(tqpair->sock, iovs, iovcnt);
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_NVME, "bytes=%d are out\n", bytes);
|
SPDK_DEBUGLOG(SPDK_LOG_NVME, "bytes=%d are out\n", bytes);
|
||||||
if (bytes == -1) {
|
if (bytes == -1) {
|
||||||
if (errno == EWOULDBLOCK || errno == EAGAIN) {
|
if (errno == EWOULDBLOCK || errno == EAGAIN) {
|
||||||
|
@ -755,9 +755,8 @@ static int
|
|||||||
spdk_nvmf_tcp_qpair_flush_pdus_internal(struct spdk_nvmf_tcp_qpair *tqpair)
|
spdk_nvmf_tcp_qpair_flush_pdus_internal(struct spdk_nvmf_tcp_qpair *tqpair)
|
||||||
{
|
{
|
||||||
const int array_size = 32;
|
const int array_size = 32;
|
||||||
struct iovec iovec_array[array_size];
|
struct iovec iovs[array_size];
|
||||||
struct iovec *iov = iovec_array;
|
int iovcnt = 0;
|
||||||
int iovec_cnt = 0;
|
|
||||||
int bytes = 0;
|
int bytes = 0;
|
||||||
int total_length = 0;
|
int total_length = 0;
|
||||||
uint32_t mapped_length;
|
uint32_t mapped_length;
|
||||||
@ -776,20 +775,20 @@ spdk_nvmf_tcp_qpair_flush_pdus_internal(struct spdk_nvmf_tcp_qpair *tqpair)
|
|||||||
* Build up a list of iovecs for the first few PDUs in the
|
* Build up a list of iovecs for the first few PDUs in the
|
||||||
* tqpair 's send_queue.
|
* tqpair 's send_queue.
|
||||||
*/
|
*/
|
||||||
while (pdu != NULL && ((array_size - iovec_cnt) >= 3)) {
|
while (pdu != NULL && ((array_size - iovcnt) >= 3)) {
|
||||||
iovec_cnt += nvme_tcp_build_iovecs(&iovec_array[iovec_cnt],
|
iovcnt += nvme_tcp_build_iovs(&iovs[iovcnt],
|
||||||
array_size - iovec_cnt,
|
array_size - iovcnt,
|
||||||
pdu,
|
pdu,
|
||||||
tqpair->host_hdgst_enable,
|
tqpair->host_hdgst_enable,
|
||||||
tqpair->host_ddgst_enable,
|
tqpair->host_ddgst_enable,
|
||||||
&mapped_length);
|
&mapped_length);
|
||||||
total_length += mapped_length;
|
total_length += mapped_length;
|
||||||
pdu = TAILQ_NEXT(pdu, tailq);
|
pdu = TAILQ_NEXT(pdu, tailq);
|
||||||
}
|
}
|
||||||
|
|
||||||
spdk_trace_record(TRACE_TCP_FLUSH_WRITEBUF_START, 0, total_length, 0, iovec_cnt);
|
spdk_trace_record(TRACE_TCP_FLUSH_WRITEBUF_START, 0, total_length, 0, iovcnt);
|
||||||
|
|
||||||
bytes = spdk_sock_writev(tqpair->sock, iov, iovec_cnt);
|
bytes = spdk_sock_writev(tqpair->sock, iovs, iovcnt);
|
||||||
if (bytes == -1) {
|
if (bytes == -1) {
|
||||||
if (errno == EWOULDBLOCK || errno == EAGAIN) {
|
if (errno == EWOULDBLOCK || errno == EAGAIN) {
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user