OSDN Git Service

lightnvm: re-convert ppa format on I/O failure
authorJavier González <jg@lightnvm.io>
Mon, 26 Jun 2017 09:57:10 +0000 (11:57 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 26 Jun 2017 22:24:53 +0000 (16:24 -0600)
In case of a failure when submitting a request, convert the ppa_list
addresses to the target format so that it can interpret ppas for
recovery

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/lightnvm/core.c

index 6a4aa60..b8f82f5 100644 (file)
@@ -640,6 +640,7 @@ EXPORT_SYMBOL(nvm_max_phys_sects);
 int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
 {
        struct nvm_dev *dev = tgt_dev->parent;
+       int ret;
 
        if (!dev->ops->submit_io)
                return -ENODEV;
@@ -647,7 +648,12 @@ int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
        nvm_rq_tgt_to_dev(tgt_dev, rqd);
 
        rqd->dev = tgt_dev;
-       return dev->ops->submit_io(dev, rqd);
+
+       /* In case of error, fail with right address format */
+       ret = dev->ops->submit_io(dev, rqd);
+       if (ret)
+               nvm_rq_dev_to_tgt(tgt_dev, rqd);
+       return ret;
 }
 EXPORT_SYMBOL(nvm_submit_io);