From 2de85bc491b844bec66a82b3ea0368b3862a8a27 Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss@suse.de>
Date: Fri, 31 Aug 2018 15:15:43 +0200
Subject: [PATCH 2/2] target_core_rbd: break up free_device callback
Patch-mainline: Not yet, SES clustered LIO/RBD
References: bsc#1105524
This matches upstream behaviour introduced with 926347061ef1:
("target: break up free_device callback")
Signed-off-by: David Disseldorp <ddiss@suse.de>
Acked-by: Luis Henriques <lhenriques@suse.com>
---
drivers/target/target_core_rbd.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/target/target_core_rbd.c b/drivers/target/target_core_rbd.c
index b986a94ff586..0f54c316bbf3 100644
--- a/drivers/target/target_core_rbd.c
+++ b/drivers/target/target_core_rbd.c
@@ -137,12 +137,15 @@ static void tcm_rbd_dev_call_rcu(struct rcu_head *p)
static void tcm_rbd_free_device(struct se_device *dev)
{
+ call_rcu(&dev->rcu_head, tcm_rbd_dev_call_rcu);
+}
+
+static void tcm_rbd_destroy_device(struct se_device *dev)
+{
struct tcm_rbd_dev *tcm_rbd_dev = TCM_RBD_DEV(dev);
if (tcm_rbd_dev->bd != NULL)
blkdev_put(tcm_rbd_dev->bd, FMODE_WRITE|FMODE_READ|FMODE_EXCL);
-
- call_rcu(&dev->rcu_head, tcm_rbd_dev_call_rcu);
}
static sector_t tcm_rbd_get_blocks(struct se_device *dev)
@@ -3068,6 +3071,7 @@ static const struct target_backend_ops tcm_rbd_ops = {
.alloc_device = tcm_rbd_alloc_device,
.configure_device = tcm_rbd_configure_device,
.free_device = tcm_rbd_free_device,
+ .destroy_device = tcm_rbd_destroy_device,
.parse_cdb = tcm_rbd_parse_cdb,
.set_configfs_dev_params = tcm_rbd_set_configfs_dev_params,
.show_configfs_dev_params = tcm_rbd_show_configfs_dev_params,
--
2.13.7