|
@@ -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;
|
|
|
}
|