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