nvmet: Change return code of discard command if not supported

"Linux Kernel Mailing List" <[email protected]> Sat, 17 Feb 2018 19:17:15 +0000 (UTC)
Newsgroups gmane.linux.kernel.commits.head
Message-ID <[email protected]>
Web:        https://git.kernel.org/torvalds/c/7756f72ccd4359c6df61fc431cd3b5b0a8639837
Commit:     7756f72ccd4359c6df61fc431cd3b5b0a8639837
Parent:     4244140d7b8f406b7edfd01c050dea783aa1efc5
Refname:    refs/heads/master
Author:     Israel Rukshin <[email protected]>
AuthorDate: Tue Jan 30 10:07:01 2018 +0000
Committer:  Sagi Grimberg <[email protected]>
CommitDate: Wed Feb 14 15:38:59 2018 +0200

    nvmet: Change return code of discard command if not supported
    
    Execute discard command on block device that doesn't support it
    should return success.
    Returning internal error while using multi-path fails the path.
    
    Reviewed-by: Max Gurtovoy <[email protected]>
    Signed-off-by: Israel Rukshin <[email protected]>
    Signed-off-by: Sagi Grimberg <[email protected]>
---
 drivers/nvme/target/io-cmd.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/nvme/target/io-cmd.c b/drivers/nvme/target/io-cmd.c
index 0a4372a016f2..28bbdff4a88b 100644
--- a/drivers/nvme/target/io-cmd.c
+++ b/drivers/nvme/target/io-cmd.c
@@ -105,10 +105,13 @@ static void nvmet_execute_flush(struct nvmet_req *req)
 static u16 nvmet_discard_range(struct nvmet_ns *ns,
 		struct nvme_dsm_range *range, struct bio **bio)
 {
-	if (__blkdev_issue_discard(ns->bdev,
+	int ret;
+
+	ret = __blkdev_issue_discard(ns->bdev,
 			le64_to_cpu(range->slba) << (ns->blksize_shift - 9),
 			le32_to_cpu(range->nlb) << (ns->blksize_shift - 9),
-			GFP_KERNEL, 0, bio))
+			GFP_KERNEL, 0, bio);
+	if (ret && ret != -EOPNOTSUPP)
 		return NVME_SC_INTERNAL | NVME_SC_DNR;
 	return 0;
 }
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html