]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
NVMe: Don't use fake status on cancelled command
authorKeith Busch <keith.busch@intel.com>
Thu, 6 Aug 2015 17:41:53 +0000 (10:41 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Fri, 7 Aug 2015 18:21:07 +0000 (11:21 -0700)
Synchronized commands do different things for timed out commands
vs. controller returned errors.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
(cherry picked from commit 17188bb403e9098a815dd850aedb6c150d2a3a6b)

Conflicts:

drivers/block/nvme-core.c

Orabug: 21569452

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
drivers/block/nvme-core.c

index ade7cb9b77706cc0e191ff67cac9f36dfd70889d..6f24dcbaa979eed9bff05481cbd0d57cab619b50 100644 (file)
@@ -613,7 +613,14 @@ static void req_completion(struct nvme_queue *nvmeq, void *ctx,
                        spin_unlock_irqrestore(req->q->queue_lock, flags);
                        return;
                }
-               req->errors = nvme_error_status(status);
+               if (req->cmd_type == REQ_TYPE_SPECIAL) {
+                       if (cmd_rq->ctx == CMD_CTX_CANCELLED)
+                               req->errors = -EINTR;
+                       else
+                               req->errors = status;
+               } else {
+                       req->errors = nvme_error_status(status);
+               }
        } else
                req->errors = 0;