test/reduce: support iovecs in compress/decompress UT
To avoid changing the actual compress/decompress routines, just use a scratch buffer to support incoming iovecs. Signed-off-by: paul luse <paul.e.luse@intel.com> Change-Id: I55851866dd1b2d9c0eb44fac35d050d7abd00e4e Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465355 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
f8433aad23
commit
2b3365072b
@ -47,6 +47,7 @@ static char *g_persistent_pm_buf;
|
|||||||
static size_t g_persistent_pm_buf_len;
|
static size_t g_persistent_pm_buf_len;
|
||||||
static char *g_backing_dev_buf;
|
static char *g_backing_dev_buf;
|
||||||
static char g_path[REDUCE_PATH_MAX];
|
static char g_path[REDUCE_PATH_MAX];
|
||||||
|
static char *g_decomp_buf;
|
||||||
|
|
||||||
#define TEST_MD_PATH "/tmp"
|
#define TEST_MD_PATH "/tmp"
|
||||||
|
|
||||||
@ -476,15 +477,22 @@ backing_dev_compress(struct spdk_reduce_backing_dev *backing_dev,
|
|||||||
struct spdk_reduce_vol_cb_args *args)
|
struct spdk_reduce_vol_cb_args *args)
|
||||||
{
|
{
|
||||||
uint32_t compressed_len;
|
uint32_t compressed_len;
|
||||||
int rc;
|
uint64_t total_length = 0;
|
||||||
|
char *buf = g_decomp_buf;
|
||||||
|
int rc, i;
|
||||||
|
|
||||||
CU_ASSERT(src_iovcnt == 1);
|
|
||||||
CU_ASSERT(dst_iovcnt == 1);
|
CU_ASSERT(dst_iovcnt == 1);
|
||||||
CU_ASSERT(src_iov[0].iov_len == dst_iov[0].iov_len);
|
|
||||||
|
for (i = 0; i < src_iovcnt; i++) {
|
||||||
|
memcpy(buf, src_iov[i].iov_base, src_iov[i].iov_len);
|
||||||
|
buf += src_iov[i].iov_len;
|
||||||
|
total_length += src_iov[i].iov_len;
|
||||||
|
}
|
||||||
|
|
||||||
compressed_len = dst_iov[0].iov_len;
|
compressed_len = dst_iov[0].iov_len;
|
||||||
rc = ut_compress(dst_iov[0].iov_base, &compressed_len,
|
rc = ut_compress(dst_iov[0].iov_base, &compressed_len,
|
||||||
src_iov[0].iov_base, src_iov[0].iov_len);
|
g_decomp_buf, total_length);
|
||||||
|
|
||||||
args->cb_fn(args->cb_arg, rc ? rc : (int)compressed_len);
|
args->cb_fn(args->cb_arg, rc ? rc : (int)compressed_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,15 +502,24 @@ backing_dev_decompress(struct spdk_reduce_backing_dev *backing_dev,
|
|||||||
struct iovec *dst_iov, int dst_iovcnt,
|
struct iovec *dst_iov, int dst_iovcnt,
|
||||||
struct spdk_reduce_vol_cb_args *args)
|
struct spdk_reduce_vol_cb_args *args)
|
||||||
{
|
{
|
||||||
uint32_t decompressed_len;
|
uint32_t decompressed_len = 0;
|
||||||
int rc;
|
char *buf = g_decomp_buf;
|
||||||
|
int rc, i;
|
||||||
|
|
||||||
CU_ASSERT(src_iovcnt == 1);
|
CU_ASSERT(src_iovcnt == 1);
|
||||||
CU_ASSERT(dst_iovcnt == 1);
|
|
||||||
|
|
||||||
decompressed_len = dst_iov[0].iov_len;
|
for (i = 0; i < dst_iovcnt; i++) {
|
||||||
rc = ut_decompress(dst_iov[0].iov_base, &decompressed_len,
|
decompressed_len += dst_iov[i].iov_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = ut_decompress(g_decomp_buf, &decompressed_len,
|
||||||
src_iov[0].iov_base, src_iov[0].iov_len);
|
src_iov[0].iov_base, src_iov[0].iov_len);
|
||||||
|
|
||||||
|
for (i = 0; i < dst_iovcnt; i++) {
|
||||||
|
memcpy(dst_iov[i].iov_base, buf, dst_iov[i].iov_len);
|
||||||
|
buf += dst_iov[i].iov_len;
|
||||||
|
}
|
||||||
|
|
||||||
args->cb_fn(args->cb_arg, rc ? rc : (int)decompressed_len);
|
args->cb_fn(args->cb_arg, rc ? rc : (int)decompressed_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,6 +530,7 @@ backing_dev_destroy(struct spdk_reduce_backing_dev *backing_dev)
|
|||||||
* scenarios.
|
* scenarios.
|
||||||
*/
|
*/
|
||||||
free(g_backing_dev_buf);
|
free(g_backing_dev_buf);
|
||||||
|
free(g_decomp_buf);
|
||||||
g_backing_dev_buf = NULL;
|
g_backing_dev_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -531,6 +549,9 @@ backing_dev_init(struct spdk_reduce_backing_dev *backing_dev, struct spdk_reduce
|
|||||||
backing_dev->compress = backing_dev_compress;
|
backing_dev->compress = backing_dev_compress;
|
||||||
backing_dev->decompress = backing_dev_decompress;
|
backing_dev->decompress = backing_dev_decompress;
|
||||||
|
|
||||||
|
g_decomp_buf = calloc(1, params->chunk_size);
|
||||||
|
SPDK_CU_ASSERT_FATAL(g_decomp_buf != NULL);
|
||||||
|
|
||||||
g_backing_dev_buf = calloc(1, size);
|
g_backing_dev_buf = calloc(1, size);
|
||||||
SPDK_CU_ASSERT_FATAL(g_backing_dev_buf != NULL);
|
SPDK_CU_ASSERT_FATAL(g_backing_dev_buf != NULL);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user