diff --git a/lib/accel/accel_engine.c b/lib/accel/accel_engine.c index 058e29ce1..c2e0e34af 100644 --- a/lib/accel/accel_engine.c +++ b/lib/accel/accel_engine.c @@ -298,7 +298,7 @@ spdk_accel_submit_fill(struct spdk_io_channel *ch, void *dst, uint8_t fill, uint } accel_task->dst = dst; - accel_task->fill_pattern = fill; + memset(&accel_task->fill_pattern, fill, sizeof(uint64_t)); accel_task->nbytes = nbytes; accel_task->flags = flags; accel_task->op_code = ACCEL_OPCODE_MEMFILL; diff --git a/module/accel/idxd/accel_engine_idxd.c b/module/accel/idxd/accel_engine_idxd.c index f6bf8e0af..330318501 100644 --- a/module/accel/idxd/accel_engine_idxd.c +++ b/module/accel/idxd/accel_engine_idxd.c @@ -144,7 +144,6 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task) { struct idxd_io_channel *chan = spdk_io_channel_get_ctx(ch); int rc = 0; - uint8_t fill_pattern = (uint8_t)task->fill_pattern; struct iovec *iov; uint32_t iovcnt; struct iovec siov = {}; @@ -179,7 +178,6 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task) rc = spdk_idxd_submit_compare(chan->chan, &siov, 1, &diov, 1, flags, idxd_done, task); break; case ACCEL_OPCODE_MEMFILL: - memset(&task->fill_pattern, fill_pattern, sizeof(uint64_t)); diov.iov_base = task->dst; diov.iov_len = task->nbytes; if (task->flags & ACCEL_FLAG_PERSISTENT) { diff --git a/test/unit/lib/accel/accel.c/accel_engine_ut.c b/test/unit/lib/accel/accel.c/accel_engine_ut.c index 06eef7ccd..c98d89645 100644 --- a/test/unit/lib/accel/accel.c/accel_engine_ut.c +++ b/test/unit/lib/accel/accel.c/accel_engine_ut.c @@ -461,6 +461,7 @@ test_spdk_accel_submit_fill(void) void *dst; void *src; uint8_t fill = 0xf; + uint64_t fill64; uint64_t nbytes = TEST_SUBMIT_SIZE; void *cb_arg = NULL; int rc; @@ -473,6 +474,7 @@ test_spdk_accel_submit_fill(void) src = calloc(1, TEST_SUBMIT_SIZE); SPDK_CU_ASSERT_FATAL(src != NULL); memset(src, fill, TEST_SUBMIT_SIZE); + memset(&fill64, fill, sizeof(uint64_t)); /* Fail with no tasks on _get_task() */ rc = spdk_accel_submit_fill(g_ch, dst, fill, nbytes, flags, dummy_submit_cb_fn, cb_arg); @@ -492,7 +494,7 @@ test_spdk_accel_submit_fill(void) rc = spdk_accel_submit_fill(g_ch, dst, fill, nbytes, flags, dummy_submit_cb_fn, cb_arg); CU_ASSERT(rc == 0); CU_ASSERT(task.dst == dst); - CU_ASSERT(task.fill_pattern == fill); + CU_ASSERT(task.fill_pattern == fill64); CU_ASSERT(task.op_code == ACCEL_OPCODE_MEMFILL); CU_ASSERT(task.nbytes == nbytes); CU_ASSERT(task.flags == 0); @@ -512,7 +514,7 @@ test_spdk_accel_submit_fill(void) rc = spdk_accel_submit_fill(g_ch, dst, fill, nbytes, flags, dummy_submit_cb_fn, cb_arg); CU_ASSERT(rc == 0); CU_ASSERT(task.dst == dst); - CU_ASSERT(task.fill_pattern == fill); + CU_ASSERT(task.fill_pattern == fill64); CU_ASSERT(task.op_code == ACCEL_OPCODE_MEMFILL); CU_ASSERT(task.nbytes == nbytes); CU_ASSERT(task.flags == 0);