From acc88da2c549efae81e27519077a5a40981aaa51 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Wed, 22 Jan 2020 13:03:11 +0100 Subject: [PATCH] lib/ftl: use scatter/gather write commands This will allow the requests to be built from non-consecutive write buffer entries. Change-Id: Ifbb26c47ea1f3175e6529dba4b89350de92efe8e Signed-off-by: Konrad Sztyber Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/899 Tested-by: SPDK CI Jenkins Reviewed-by: Wojciech Malikowski Reviewed-by: Shuhei Matsumoto Reviewed-by: Maciej Szczepaniak Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris --- lib/ftl/ftl_core.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/ftl/ftl_core.c b/lib/ftl/ftl_core.c index ae723bc8d..b82684b6c 100644 --- a/lib/ftl/ftl_core.c +++ b/lib/ftl/ftl_core.c @@ -1592,15 +1592,14 @@ ftl_submit_child_write(struct ftl_wptr *wptr, struct ftl_io *io) wptr->num_outstanding++; if (ftl_is_append_supported(dev)) { - rc = spdk_bdev_zone_append(dev->base_bdev_desc, ioch->base_ioch, - ftl_io_iovec_addr(child), - ftl_addr_get_zone_slba(dev, addr), - dev->xfer_size, ftl_io_cmpl_cb, child); - } else { - rc = spdk_bdev_write_blocks(dev->base_bdev_desc, ioch->base_ioch, - ftl_io_iovec_addr(child), - addr.offset, + rc = spdk_bdev_zone_appendv(dev->base_bdev_desc, ioch->base_ioch, + child->iov, child->iov_cnt, + ftl_addr_get_zone_slba(dev, addr), dev->xfer_size, ftl_io_cmpl_cb, child); + } else { + rc = spdk_bdev_writev_blocks(dev->base_bdev_desc, ioch->base_ioch, + child->iov, child->iov_cnt, addr.offset, + dev->xfer_size, ftl_io_cmpl_cb, child); } if (rc) {