Blob Blame History Raw
From 47751b8a36c06da5416ca8c210725929c603bcd7 Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss@suse.de>
Date: Thu, 2 Nov 2017 17:02:56 +0100
Subject: [PATCH 1/3] target/rbd: handle zero length UNMAP requests early
Patch-mainline: Not yet, SES clustered LIO/RBD
References: bsc#1064320

Zero length UNMAP requests currently cause the LIO RBD backend to fail
the (resid > 0) assert in rbd_img_request_fill(). Handle such requests
early, as is already done for other operations.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Acked-by: Luis Henriques <lhenriques@suse.com>

---
 drivers/target/target_core_rbd.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/target/target_core_rbd.c b/drivers/target/target_core_rbd.c
index 095911171139..2410ab9ac039 100644
--- a/drivers/target/target_core_rbd.c
+++ b/drivers/target/target_core_rbd.c
@@ -358,6 +358,12 @@ static sense_reason_t tcm_rbd_execute_unmap(struct se_cmd *cmd,
 	struct tcm_rbd_dev *tcm_rbd_dev = TCM_RBD_DEV(cmd->se_dev);
 	struct rbd_device *rbd_dev = tcm_rbd_dev->rbd_dev;
 
+	if (nolb == 0) {
+		pr_debug("ignoring zero length unmap at lba: %llu\n",
+			 (unsigned long long)lba);
+		return TCM_NO_SENSE;
+	}
+
 	return tcm_rbd_execute_cmd(cmd, rbd_dev, NULL, OBJ_OP_DISCARD,
 				   lba << SECTOR_SHIFT, nolb << SECTOR_SHIFT,
 				   true);
-- 
2.13.6