Blob Blame History Raw
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