nvme: make nvme_error_status private
authorChristoph Hellwig <hch@lst.de>
Thu, 20 Apr 2017 14:02:58 +0000 (16:02 +0200)
committerJens Axboe <axboe@fb.com>
Thu, 20 Apr 2017 18:16:10 +0000 (12:16 -0600)
Currently it's used by the lighnvm passthrough ioctl, but we'd like to make
it private in preparation of block layer specific error code.  Lighnvm already
returns the real NVMe status anyway, so I think we can just limit it to
returning -EIO for any status set.

This will need a careful audit from the lightnvm folks, though.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/core.c
drivers/nvme/host/lightnvm.c
drivers/nvme/host/nvme.h

index c6f256d74b6b68df50d3da1f1685a7b6eefc5614..805f250315ecda0af2a62a425a5e85f578540d41 100644 (file)
@@ -66,7 +66,7 @@ static DEFINE_SPINLOCK(dev_list_lock);
 
 static struct class *nvme_class;
 
-int nvme_error_status(struct request *req)
+static int nvme_error_status(struct request *req)
 {
        switch (nvme_req(req)->status & 0x7ff) {
        case NVME_SC_SUCCESS:
@@ -77,7 +77,6 @@ int nvme_error_status(struct request *req)
                return -EIO;
        }
 }
-EXPORT_SYMBOL_GPL(nvme_error_status);
 
 static inline bool nvme_req_needs_retry(struct request *req)
 {
index cb599b3fc12ccceb5b8bc5b5a41ffc4fc9594ff8..de61a4a03d7820482ba4077f5ea840359ce8d56c 100644 (file)
@@ -595,7 +595,7 @@ static int nvme_nvm_submit_user_cmd(struct request_queue *q,
        __le64 *metadata = NULL;
        dma_addr_t metadata_dma;
        DECLARE_COMPLETION_ONSTACK(wait);
-       int ret;
+       int ret = 0;
 
        rq = nvme_alloc_request(q, (struct nvme_command *)vcmd, 0,
                        NVME_QID_ANY);
@@ -667,8 +667,8 @@ submit:
 
        if (nvme_req(rq)->flags & NVME_REQ_CANCELLED)
                ret = -EINTR;
-       else
-               ret = nvme_error_status(rq);
+       else if (nvme_req(rq)->status & 0x7ff)
+               ret = -EIO;
        if (result)
                *result = nvme_req(rq)->status & 0x7ff;
        if (status)
index d7330f75632da333e1e3ed89aeff4e5a4aeaced9..550037f5efea5bd1757b654f977c24bac7e3044a 100644 (file)
@@ -254,7 +254,6 @@ static inline void nvme_end_request(struct request *req, __le16 status,
        blk_mq_complete_request(req, 0);
 }
 
-int nvme_error_status(struct request *req);
 void nvme_complete_rq(struct request *req);
 void nvme_cancel_request(struct request *req, void *data, bool reserved);
 bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,