diff --git a/lib/bdev/compress/vbdev_compress.c b/lib/bdev/compress/vbdev_compress.c index e541df7fc..55fe27012 100644 --- a/lib/bdev/compress/vbdev_compress.c +++ b/lib/bdev/compress/vbdev_compress.c @@ -1214,6 +1214,7 @@ vbdev_compress_claim(struct vbdev_compress *comp_bdev) comp_bdev->comp_bdev.blocklen = comp_bdev->base_bdev->blocklen; comp_bdev->comp_bdev.blockcnt = comp_bdev->params.vol_size / comp_bdev->comp_bdev.blocklen; + assert(comp_bdev->comp_bdev.blockcnt > 0); /* This is the context that is passed to us when the bdev * layer calls in so we'll save our comp_bdev node here. @@ -1312,7 +1313,10 @@ vbdev_reduce_load_cb(void *cb_arg, struct spdk_reduce_vol *vol, int reduce_errno return; } + /* Update information following volume load. */ meta_ctx->vol = vol; + memcpy(&meta_ctx->params, spdk_reduce_vol_get_params(vol), + sizeof(struct spdk_reduce_vol_params)); vbdev_compress_claim(meta_ctx); spdk_bdev_module_examine_done(&compress_if); } diff --git a/test/unit/lib/bdev/compress.c/compress_ut.c b/test/unit/lib/bdev/compress.c/compress_ut.c index 7d50dbb2f..9a3eb5463 100644 --- a/test/unit/lib/bdev/compress.c/compress_ut.c +++ b/test/unit/lib/bdev/compress.c/compress_ut.c @@ -146,6 +146,8 @@ DEFINE_STUB_V(spdk_reduce_vol_unload, (struct spdk_reduce_vol *vol, spdk_reduce_vol_op_complete cb_fn, void *cb_arg)); DEFINE_STUB_V(spdk_reduce_vol_load, (struct spdk_reduce_backing_dev *backing_dev, spdk_reduce_vol_op_with_handle_complete cb_fn, void *cb_arg)); +DEFINE_STUB(spdk_reduce_vol_get_params, const struct spdk_reduce_vol_params *, + (struct spdk_reduce_vol *vol), NULL); /* DPDK stubs */ DEFINE_STUB(rte_socket_id, unsigned, (void), 0);