OSDN Git Service

nvmet: add ns tear down label for pt-cmd handling
authorChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Thu, 6 Aug 2020 20:02:23 +0000 (13:02 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 21 Aug 2020 23:14:27 +0000 (17:14 -0600)
In the current implementation before submitting the passthru cmd we
may come across error e.g. getting ns from passthru controller,
allocating a request from passthru controller, etc. For all the failure
cases it only uses single goto label fail_out.

In the target code, we follow the pattern to have a separate label for
each error out the case when setting up multiple things before the actual
action.

This patch follows the same pattern and renames generic fail_out label
to out_put_ns and updates the error out cases in the
nvmet_passthru_execute_cmd() where it is needed.

Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/target/passthru.c

index f69c3ac..750d7b0 100644 (file)
@@ -230,7 +230,7 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
                if (unlikely(!ns)) {
                        pr_err("failed to get passthru ns nsid:%u\n", nsid);
                        status = NVME_SC_INVALID_NS | NVME_SC_DNR;
-                       goto fail_out;
+                       goto out;
                }
 
                q = ns->queue;
@@ -240,14 +240,14 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
        if (IS_ERR(rq)) {
                rq = NULL;
                status = NVME_SC_INTERNAL;
-               goto fail_out;
+               goto out_put_ns;
        }
 
        if (req->sg_cnt) {
                ret = nvmet_passthru_map_sg(req, rq);
                if (unlikely(ret)) {
                        status = NVME_SC_INTERNAL;
-                       goto fail_out;
+                       goto out_put_ns;
                }
        }
 
@@ -274,9 +274,10 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
 
        return;
 
-fail_out:
+out_put_ns:
        if (ns)
                nvme_put_ns(ns);
+out:
        nvmet_req_complete(req, status);
        blk_put_request(rq);
 }