bdev/malloc: use appends for write requests
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ief6c873a5f65274a25b67bc3f2811d8f3e4a33b3 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17200 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
2133c01f21
commit
16cfc9a656
@ -282,8 +282,7 @@ bdev_malloc_writev(struct malloc_disk *mdisk, struct spdk_io_channel *ch,
|
|||||||
struct malloc_task *task, struct spdk_bdev_io *bdev_io)
|
struct malloc_task *task, struct spdk_bdev_io *bdev_io)
|
||||||
{
|
{
|
||||||
uint64_t len, offset, md_offset;
|
uint64_t len, offset, md_offset;
|
||||||
int i, res = 0;
|
int res = 0;
|
||||||
void *dst;
|
|
||||||
size_t md_len;
|
size_t md_len;
|
||||||
|
|
||||||
len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
|
len = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
|
||||||
@ -295,27 +294,26 @@ bdev_malloc_writev(struct malloc_disk *mdisk, struct spdk_io_channel *ch,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task->status = SPDK_BDEV_IO_STATUS_SUCCESS;
|
||||||
|
task->num_outstanding = 0;
|
||||||
|
task->iov.iov_base = mdisk->malloc_buf + offset;
|
||||||
|
task->iov.iov_len = len;
|
||||||
|
|
||||||
SPDK_DEBUGLOG(bdev_malloc, "wrote %zu bytes to offset %#" PRIx64 ", iovcnt=%d\n",
|
SPDK_DEBUGLOG(bdev_malloc, "wrote %zu bytes to offset %#" PRIx64 ", iovcnt=%d\n",
|
||||||
len, offset, bdev_io->u.bdev.iovcnt);
|
len, offset, bdev_io->u.bdev.iovcnt);
|
||||||
|
|
||||||
dst = mdisk->malloc_buf + offset;
|
task->num_outstanding++;
|
||||||
|
res = spdk_accel_append_copy(&bdev_io->u.bdev.accel_sequence, ch, &task->iov, 1, NULL, NULL,
|
||||||
task->status = SPDK_BDEV_IO_STATUS_SUCCESS;
|
bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt,
|
||||||
task->num_outstanding = 0;
|
bdev_io->u.bdev.memory_domain,
|
||||||
|
bdev_io->u.bdev.memory_domain_ctx, 0, NULL, NULL);
|
||||||
for (i = 0; i < bdev_io->u.bdev.iovcnt; i++) {
|
if (spdk_unlikely(res != 0)) {
|
||||||
task->num_outstanding++;
|
malloc_sequence_fail(task, res);
|
||||||
res = spdk_accel_submit_copy(ch, dst, bdev_io->u.bdev.iovs[i].iov_base,
|
return;
|
||||||
bdev_io->u.bdev.iovs[i].iov_len, 0, malloc_done, task);
|
|
||||||
|
|
||||||
if (res != 0) {
|
|
||||||
malloc_done(task, res);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dst += bdev_io->u.bdev.iovs[i].iov_len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spdk_accel_sequence_finish(bdev_io->u.bdev.accel_sequence, malloc_sequence_done, task);
|
||||||
|
|
||||||
if (bdev_io->u.bdev.md_buf == NULL) {
|
if (bdev_io->u.bdev.md_buf == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ update_stats
|
|||||||
# Write a single 64K request and check the stats
|
# Write a single 64K request and check the stats
|
||||||
dd if=/dev/urandom of="$input" bs=1K count=64
|
dd if=/dev/urandom of="$input" bs=1K count=64
|
||||||
spdk_dd --if "$input" --ob Nvme0n1 --bs $((64 * 1024)) --count 1
|
spdk_dd --if "$input" --ob Nvme0n1 --bs $((64 * 1024)) --count 1
|
||||||
(($(get_stat sequence_executed) == stats[sequence_executed] + 1))
|
(($(get_stat sequence_executed) == stats[sequence_executed] + 2))
|
||||||
(($(get_stat executed encrypt) == stats[encrypt_executed] + 2))
|
(($(get_stat executed encrypt) == stats[encrypt_executed] + 2))
|
||||||
(($(get_stat executed decrypt) == stats[decrypt_executed]))
|
(($(get_stat executed decrypt) == stats[decrypt_executed]))
|
||||||
# There's still one copy performed by the malloc bdev
|
# There's still one copy performed by the malloc bdev
|
||||||
@ -98,7 +98,7 @@ update_stats
|
|||||||
|
|
||||||
# Now do the same using 4K requests
|
# Now do the same using 4K requests
|
||||||
spdk_dd --if "$input" --ob Nvme0n1 --bs 4096 --count 16
|
spdk_dd --if "$input" --ob Nvme0n1 --bs 4096 --count 16
|
||||||
(($(get_stat sequence_executed) == stats[sequence_executed] + 16))
|
(($(get_stat sequence_executed) == stats[sequence_executed] + 32))
|
||||||
(($(get_stat executed encrypt) == stats[encrypt_executed] + 32))
|
(($(get_stat executed encrypt) == stats[encrypt_executed] + 32))
|
||||||
(($(get_stat executed decrypt) == stats[decrypt_executed]))
|
(($(get_stat executed decrypt) == stats[decrypt_executed]))
|
||||||
(($(get_stat executed copy) == stats[copy_executed] + 16))
|
(($(get_stat executed copy) == stats[copy_executed] + 16))
|
||||||
|
Loading…
Reference in New Issue
Block a user