From f20fbfe65b48797e639d1d6b90fdb82eedfc675e Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 18 Apr 2023 11:51:50 +0200 Subject: [PATCH] bdev: move pulling md_buf to a function Signed-off-by: Konrad Sztyber Change-Id: I935983a14bedc386ffe31abacc8fa200cd79f750 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17675 Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker --- lib/bdev/bdev.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 17ef3439d..19222b699 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -1051,18 +1051,10 @@ _bdev_io_pull_buffer_cpl(void *ctx, int rc) } static void -_bdev_io_pull_bounce_md_buf(struct spdk_bdev_io *bdev_io, void *md_buf, size_t len) +bdev_io_pull_md_buf(struct spdk_bdev_io *bdev_io) { int rc = 0; - /* save original md_buf */ - bdev_io->internal.orig_md_iov.iov_base = bdev_io->u.bdev.md_buf; - bdev_io->internal.orig_md_iov.iov_len = len; - bdev_io->internal.bounce_md_iov.iov_base = md_buf; - bdev_io->internal.bounce_md_iov.iov_len = len; - /* set bounce md_buf */ - bdev_io->u.bdev.md_buf = md_buf; - if (bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE) { if (bdev_io_use_memory_domain(bdev_io)) { rc = spdk_memory_domain_pull_data(bdev_io->internal.memory_domain, @@ -1078,7 +1070,9 @@ _bdev_io_pull_bounce_md_buf(struct spdk_bdev_io *bdev_io, void *md_buf, size_t l SPDK_ERRLOG("Failed to pull data from memory domain %s, rc %d\n", spdk_memory_domain_get_dma_device_id(bdev_io->internal.memory_domain), rc); } else { - memcpy(md_buf, bdev_io->internal.orig_md_iov.iov_base, bdev_io->internal.orig_md_iov.iov_len); + memcpy(bdev_io->internal.bounce_md_iov.iov_base, + bdev_io->internal.orig_md_iov.iov_base, + bdev_io->internal.orig_md_iov.iov_len); } } @@ -1086,6 +1080,20 @@ _bdev_io_pull_bounce_md_buf(struct spdk_bdev_io *bdev_io, void *md_buf, size_t l bdev_io->internal.data_transfer_cpl(bdev_io, rc); } +static void +_bdev_io_pull_bounce_md_buf(struct spdk_bdev_io *bdev_io, void *md_buf, size_t len) +{ + /* save original md_buf */ + bdev_io->internal.orig_md_iov.iov_base = bdev_io->u.bdev.md_buf; + bdev_io->internal.orig_md_iov.iov_len = len; + bdev_io->internal.bounce_md_iov.iov_base = md_buf; + bdev_io->internal.bounce_md_iov.iov_len = len; + /* set bounce md_buf */ + bdev_io->u.bdev.md_buf = md_buf; + + bdev_io_pull_md_buf(bdev_io); +} + static void _bdev_io_set_md_buf(struct spdk_bdev_io *bdev_io) {