From aa3fdd01bdf3accdd7d7c11b6452825fbb39d613 Mon Sep 17 00:00:00 2001 From: paul luse Date: Thu, 7 Mar 2019 12:37:10 -0500 Subject: [PATCH] bdev/compress: insert vol unload into base bdev hotremove path Change-Id: I0c23746fb210a8c209e98276fe0830185ee81407 Signed-off-by: paul luse Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447372 Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- lib/bdev/compress/vbdev_compress.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/bdev/compress/vbdev_compress.c b/lib/bdev/compress/vbdev_compress.c index 4d0ce115b..07b6bc55e 100644 --- a/lib/bdev/compress/vbdev_compress.c +++ b/lib/bdev/compress/vbdev_compress.c @@ -766,6 +766,20 @@ _comp_reduce_unmap(struct spdk_reduce_backing_dev *dev, } } + +/* Called by reduceLib after performing unload vol actions following base bdev hotremove */ +static void +bdev_hotremove_vol_unload_cb(void *cb_arg, int reduce_errno) +{ + struct vbdev_compress *comp_bdev = (struct vbdev_compress *)cb_arg; + + if (reduce_errno) { + SPDK_ERRLOG("error %d\n", reduce_errno); + } + + spdk_bdev_unregister(&comp_bdev->comp_bdev, NULL, NULL); +} + /* Called when the underlying base bdev goes away. */ static void vbdev_compress_base_bdev_hotremove_cb(void *ctx) @@ -775,7 +789,8 @@ vbdev_compress_base_bdev_hotremove_cb(void *ctx) TAILQ_FOREACH_SAFE(comp_bdev, &g_vbdev_comp, link, tmp) { if (bdev_find == comp_bdev->base_bdev) { - spdk_bdev_unregister(&comp_bdev->comp_bdev, NULL, NULL); + /* Tell reducelib that we're done with this volume. */ + spdk_reduce_vol_unload(comp_bdev->vol, bdev_hotremove_vol_unload_cb, comp_bdev); } } }