From b54855f87fae81370368507099619f482c0d42b5 Mon Sep 17 00:00:00 2001 From: Cunyin Chang Date: Sat, 2 Dec 2017 08:34:20 +0800 Subject: [PATCH] bdev/rbd: unregitster the bdev when app exit. Change-Id: I086fab8211c6ac71ab2eb3f5ac16f507484f79f9 Signed-off-by: Cunyin Chang Reviewed-on: https://review.gerrithub.io/390088 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Jim Harris --- lib/bdev/rbd/bdev_rbd.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/bdev/rbd/bdev_rbd.c b/lib/bdev/rbd/bdev_rbd.c index 502d044ab..f647183f7 100644 --- a/lib/bdev/rbd/bdev_rbd.c +++ b/lib/bdev/rbd/bdev_rbd.c @@ -229,6 +229,10 @@ bdev_rbd_flush(struct bdev_rbd *disk, struct spdk_io_channel *ch, static int bdev_rbd_destruct(void *ctx) { + struct bdev_rbd *rbd = ctx; + + TAILQ_REMOVE(&g_rbds, rbd, tailq); + bdev_rbd_free(rbd); return 0; } @@ -468,12 +472,10 @@ static const struct spdk_bdev_fn_table rbd_fn_table = { static void bdev_rbd_library_fini(void) { - struct bdev_rbd *rbd; + struct bdev_rbd *rbd, *btmp; - while (!TAILQ_EMPTY(&g_rbds)) { - rbd = TAILQ_FIRST(&g_rbds); - TAILQ_REMOVE(&g_rbds, rbd, tailq); - bdev_rbd_free(rbd); + TAILQ_FOREACH_SAFE(rbd, &g_rbds, tailq, btmp) { + spdk_bdev_unregister(&rbd->disk, NULL, NULL); } }