lib/accel: rename iovec elements with src prefix
In prep for adding both src and dst iovec support for compression. Signed-off-by: paul luse <paul.e.luse@intel.com> Change-Id: I704b8d2bd459de03deb7f8ee45d76261910a3727 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13746 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
100c53718d
commit
28886ac352
@ -49,8 +49,8 @@ struct display_info {
|
||||
|
||||
struct ap_task {
|
||||
void *src;
|
||||
struct iovec *iovs;
|
||||
uint32_t iov_cnt;
|
||||
struct iovec *src_iovs;
|
||||
uint32_t src_iovcnt;
|
||||
void *dst;
|
||||
void *dst2;
|
||||
uint32_t crc_dst;
|
||||
@ -252,10 +252,10 @@ _get_task_data_bufs(struct ap_task *task)
|
||||
|
||||
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
||||
assert(g_crc32c_chained_count > 0);
|
||||
task->iov_cnt = g_crc32c_chained_count;
|
||||
task->iovs = calloc(task->iov_cnt, sizeof(struct iovec));
|
||||
if (!task->iovs) {
|
||||
fprintf(stderr, "cannot allocated task->iovs fot task=%p\n", task);
|
||||
task->src_iovcnt = g_crc32c_chained_count;
|
||||
task->src_iovs = calloc(task->src_iovcnt, sizeof(struct iovec));
|
||||
if (!task->src_iovs) {
|
||||
fprintf(stderr, "cannot allocated task->src_iovs fot task=%p\n", task);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -263,13 +263,13 @@ _get_task_data_bufs(struct ap_task *task)
|
||||
dst_buff_len = g_xfer_size_bytes * g_crc32c_chained_count;
|
||||
}
|
||||
|
||||
for (i = 0; i < task->iov_cnt; i++) {
|
||||
task->iovs[i].iov_base = spdk_dma_zmalloc(g_xfer_size_bytes, 0, NULL);
|
||||
if (task->iovs[i].iov_base == NULL) {
|
||||
for (i = 0; i < task->src_iovcnt; i++) {
|
||||
task->src_iovs[i].iov_base = spdk_dma_zmalloc(g_xfer_size_bytes, 0, NULL);
|
||||
if (task->src_iovs[i].iov_base == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
memset(task->iovs[i].iov_base, DATA_PATTERN, g_xfer_size_bytes);
|
||||
task->iovs[i].iov_len = g_xfer_size_bytes;
|
||||
memset(task->src_iovs[i].iov_base, DATA_PATTERN, g_xfer_size_bytes);
|
||||
task->src_iovs[i].iov_len = g_xfer_size_bytes;
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -353,11 +353,11 @@ _submit_single(struct worker_thread *worker, struct ap_task *task)
|
||||
break;
|
||||
case ACCEL_OPC_CRC32C:
|
||||
rc = spdk_accel_submit_crc32cv(worker->ch, &task->crc_dst,
|
||||
task->iovs, task->iov_cnt, g_crc32c_seed,
|
||||
task->src_iovs, task->src_iovcnt, g_crc32c_seed,
|
||||
accel_done, task);
|
||||
break;
|
||||
case ACCEL_OPC_COPY_CRC32C:
|
||||
rc = spdk_accel_submit_copy_crc32cv(worker->ch, task->dst, task->iovs, task->iov_cnt,
|
||||
rc = spdk_accel_submit_copy_crc32cv(worker->ch, task->dst, task->src_iovs, task->src_iovcnt,
|
||||
&task->crc_dst, g_crc32c_seed, flags, accel_done, task);
|
||||
break;
|
||||
case ACCEL_OPC_COMPARE:
|
||||
@ -394,13 +394,13 @@ _free_task_buffers(struct ap_task *task)
|
||||
uint32_t i;
|
||||
|
||||
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
||||
if (task->iovs) {
|
||||
for (i = 0; i < task->iov_cnt; i++) {
|
||||
if (task->iovs[i].iov_base) {
|
||||
spdk_dma_free(task->iovs[i].iov_base);
|
||||
if (task->src_iovs) {
|
||||
for (i = 0; i < task->src_iovcnt; i++) {
|
||||
if (task->src_iovs[i].iov_base) {
|
||||
spdk_dma_free(task->src_iovs[i].iov_base);
|
||||
}
|
||||
}
|
||||
free(task->iovs);
|
||||
free(task->src_iovs);
|
||||
}
|
||||
} else {
|
||||
spdk_dma_free(task->src);
|
||||
@ -413,18 +413,18 @@ _free_task_buffers(struct ap_task *task)
|
||||
}
|
||||
|
||||
static int
|
||||
_vector_memcmp(void *_dst, struct iovec *src_iovs, uint32_t iovcnt)
|
||||
_vector_memcmp(void *_dst, struct iovec *src_src_iovs, uint32_t iovcnt)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t ttl_len = 0;
|
||||
uint8_t *dst = (uint8_t *)_dst;
|
||||
|
||||
for (i = 0; i < iovcnt; i++) {
|
||||
if (memcmp(dst, src_iovs[i].iov_base, src_iovs[i].iov_len)) {
|
||||
if (memcmp(dst, src_src_iovs[i].iov_base, src_src_iovs[i].iov_len)) {
|
||||
return -1;
|
||||
}
|
||||
dst += src_iovs[i].iov_len;
|
||||
ttl_len += src_iovs[i].iov_len;
|
||||
dst += src_src_iovs[i].iov_len;
|
||||
ttl_len += src_src_iovs[i].iov_len;
|
||||
}
|
||||
|
||||
if (ttl_len != iovcnt * g_xfer_size_bytes) {
|
||||
@ -449,18 +449,18 @@ accel_done(void *arg1, int status)
|
||||
if (g_verify && status == 0) {
|
||||
switch (worker->workload) {
|
||||
case ACCEL_OPC_COPY_CRC32C:
|
||||
sw_crc32c = spdk_crc32c_iov_update(task->iovs, task->iov_cnt, ~g_crc32c_seed);
|
||||
sw_crc32c = spdk_crc32c_iov_update(task->src_iovs, task->src_iovcnt, ~g_crc32c_seed);
|
||||
if (task->crc_dst != sw_crc32c) {
|
||||
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
||||
worker->xfer_failed++;
|
||||
}
|
||||
if (_vector_memcmp(task->dst, task->iovs, task->iov_cnt)) {
|
||||
if (_vector_memcmp(task->dst, task->src_iovs, task->src_iovcnt)) {
|
||||
SPDK_NOTICELOG("Data miscompare\n");
|
||||
worker->xfer_failed++;
|
||||
}
|
||||
break;
|
||||
case ACCEL_OPC_CRC32C:
|
||||
sw_crc32c = spdk_crc32c_iov_update(task->iovs, task->iov_cnt, ~g_crc32c_seed);
|
||||
sw_crc32c = spdk_crc32c_iov_update(task->src_iovs, task->src_iovcnt, ~g_crc32c_seed);
|
||||
if (task->crc_dst != sw_crc32c) {
|
||||
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
||||
worker->xfer_failed++;
|
||||
|
@ -24,7 +24,7 @@ struct spdk_accel_task {
|
||||
struct {
|
||||
struct iovec *iovs; /* iovs passed by the caller */
|
||||
uint32_t iovcnt; /* iovcnt passed by the caller */
|
||||
} v;
|
||||
} s;
|
||||
void *src;
|
||||
};
|
||||
union {
|
||||
|
@ -267,7 +267,7 @@ spdk_accel_submit_crc32c(struct spdk_io_channel *ch, uint32_t *crc_dst,
|
||||
|
||||
accel_task->crc_dst = crc_dst;
|
||||
accel_task->src = src;
|
||||
accel_task->v.iovcnt = 0;
|
||||
accel_task->s.iovcnt = 0;
|
||||
accel_task->seed = seed;
|
||||
accel_task->nbytes = nbytes;
|
||||
accel_task->op_code = ACCEL_OPC_CRC32C;
|
||||
@ -303,8 +303,8 @@ spdk_accel_submit_crc32cv(struct spdk_io_channel *ch, uint32_t *crc_dst,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
accel_task->v.iovs = iov;
|
||||
accel_task->v.iovcnt = iov_cnt;
|
||||
accel_task->s.iovs = iov;
|
||||
accel_task->s.iovcnt = iov_cnt;
|
||||
accel_task->crc_dst = crc_dst;
|
||||
accel_task->seed = seed;
|
||||
accel_task->op_code = ACCEL_OPC_CRC32C;
|
||||
@ -331,7 +331,7 @@ spdk_accel_submit_copy_crc32c(struct spdk_io_channel *ch, void *dst,
|
||||
accel_task->dst = dst;
|
||||
accel_task->src = src;
|
||||
accel_task->crc_dst = crc_dst;
|
||||
accel_task->v.iovcnt = 0;
|
||||
accel_task->s.iovcnt = 0;
|
||||
accel_task->seed = seed;
|
||||
accel_task->nbytes = nbytes;
|
||||
accel_task->flags = flags;
|
||||
@ -375,8 +375,8 @@ spdk_accel_submit_copy_crc32cv(struct spdk_io_channel *ch, void *dst,
|
||||
nbytes += src_iovs[i].iov_len;
|
||||
}
|
||||
|
||||
accel_task->v.iovs = src_iovs;
|
||||
accel_task->v.iovcnt = iov_cnt;
|
||||
accel_task->s.iovs = src_iovs;
|
||||
accel_task->s.iovcnt = iov_cnt;
|
||||
accel_task->dst = (void *)dst;
|
||||
accel_task->crc_dst = crc_dst;
|
||||
accel_task->seed = seed;
|
||||
|
@ -247,21 +247,21 @@ sw_accel_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *accel_
|
||||
rc = _sw_accel_compare(accel_task->src, accel_task->src2, accel_task->nbytes);
|
||||
break;
|
||||
case ACCEL_OPC_CRC32C:
|
||||
if (accel_task->v.iovcnt == 0) {
|
||||
if (accel_task->s.iovcnt == 0) {
|
||||
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
||||
} else {
|
||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->v.iovs, accel_task->v.iovcnt, accel_task->seed);
|
||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->seed);
|
||||
}
|
||||
break;
|
||||
case ACCEL_OPC_COPY_CRC32C:
|
||||
rc = _check_flags(accel_task->flags);
|
||||
if (rc == 0) {
|
||||
if (accel_task->v.iovcnt == 0) {
|
||||
if (accel_task->s.iovcnt == 0) {
|
||||
_sw_accel_copy(accel_task->dst, accel_task->src, accel_task->nbytes, accel_task->flags);
|
||||
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
||||
} else {
|
||||
_sw_accel_copyv(accel_task->dst, accel_task->v.iovs, accel_task->v.iovcnt, accel_task->flags);
|
||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->v.iovs, accel_task->v.iovcnt, accel_task->seed);
|
||||
_sw_accel_copyv(accel_task->dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->flags);
|
||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->seed);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -171,27 +171,27 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task)
|
||||
idxd_task);
|
||||
break;
|
||||
case ACCEL_OPC_CRC32C:
|
||||
if (task->v.iovcnt == 0) {
|
||||
if (task->s.iovcnt == 0) {
|
||||
siov.iov_base = task->src;
|
||||
siov.iov_len = task->nbytes;
|
||||
iov = &siov;
|
||||
iovcnt = 1;
|
||||
} else {
|
||||
iov = task->v.iovs;
|
||||
iovcnt = task->v.iovcnt;
|
||||
iov = task->s.iovs;
|
||||
iovcnt = task->s.iovcnt;
|
||||
}
|
||||
rc = spdk_idxd_submit_crc32c(chan->chan, iov, iovcnt, task->seed, task->crc_dst,
|
||||
flags, dsa_done, idxd_task);
|
||||
break;
|
||||
case ACCEL_OPC_COPY_CRC32C:
|
||||
if (task->v.iovcnt == 0) {
|
||||
if (task->s.iovcnt == 0) {
|
||||
siov.iov_base = task->src;
|
||||
siov.iov_len = task->nbytes;
|
||||
iov = &siov;
|
||||
iovcnt = 1;
|
||||
} else {
|
||||
iov = task->v.iovs;
|
||||
iovcnt = task->v.iovcnt;
|
||||
iov = task->s.iovs;
|
||||
iovcnt = task->s.iovcnt;
|
||||
}
|
||||
diov.iov_base = task->dst;
|
||||
diov.iov_len = task->nbytes;
|
||||
|
@ -360,7 +360,7 @@ test_spdk_accel_submit_crc32c(void)
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||
CU_ASSERT(task.src == src);
|
||||
CU_ASSERT(task.v.iovcnt == 0);
|
||||
CU_ASSERT(task.s.iovcnt == 0);
|
||||
CU_ASSERT(task.seed == seed);
|
||||
CU_ASSERT(task.op_code == ACCEL_OPC_CRC32C);
|
||||
CU_ASSERT(task.nbytes == nbytes);
|
||||
@ -396,8 +396,8 @@ test_spdk_accel_submit_crc32cv(void)
|
||||
/* accel submission OK. */
|
||||
rc = spdk_accel_submit_crc32cv(g_ch, &crc_dst, iov, iov_cnt, seed, NULL, cb_arg);
|
||||
CU_ASSERT(rc == 0);
|
||||
CU_ASSERT(task.v.iovs == iov);
|
||||
CU_ASSERT(task.v.iovcnt == iov_cnt);
|
||||
CU_ASSERT(task.s.iovs == iov);
|
||||
CU_ASSERT(task.s.iovcnt == iov_cnt);
|
||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||
CU_ASSERT(task.seed == seed);
|
||||
CU_ASSERT(task.op_code == ACCEL_OPC_CRC32C);
|
||||
@ -442,7 +442,7 @@ test_spdk_accel_submit_copy_crc32c(void)
|
||||
CU_ASSERT(task.dst == dst);
|
||||
CU_ASSERT(task.src == src);
|
||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||
CU_ASSERT(task.v.iovcnt == 0);
|
||||
CU_ASSERT(task.s.iovcnt == 0);
|
||||
CU_ASSERT(task.seed == seed);
|
||||
CU_ASSERT(task.nbytes == nbytes);
|
||||
CU_ASSERT(task.flags == 0);
|
||||
|
Loading…
Reference in New Issue
Block a user