nvmet: remove extra variable in id-desclist
[linux-2.6-microblaze.git] / drivers / nvme / target / admin-cmd.c
index 8d90235..1cc61ca 100644 (file)
@@ -74,11 +74,11 @@ static void nvmet_execute_get_log_page_error(struct nvmet_req *req)
 static u16 nvmet_get_smart_log_nsid(struct nvmet_req *req,
                struct nvme_smart_log *slog)
 {
-       struct nvmet_ns *ns;
        u64 host_reads, host_writes, data_units_read, data_units_written;
 
-       ns = nvmet_find_namespace(req->sq->ctrl, req->cmd->get_log_page.nsid);
-       if (!ns) {
+       req->ns = nvmet_find_namespace(req->sq->ctrl,
+                                      req->cmd->get_log_page.nsid);
+       if (!req->ns) {
                pr_err("Could not find namespace id : %d\n",
                                le32_to_cpu(req->cmd->get_log_page.nsid));
                req->error_loc = offsetof(struct nvme_rw_command, nsid);
@@ -86,22 +86,20 @@ static u16 nvmet_get_smart_log_nsid(struct nvmet_req *req,
        }
 
        /* we don't have the right data for file backed ns */
-       if (!ns->bdev)
-               goto out;
+       if (!req->ns->bdev)
+               return NVME_SC_SUCCESS;
 
-       host_reads = part_stat_read(ns->bdev, ios[READ]);
+       host_reads = part_stat_read(req->ns->bdev, ios[READ]);
        data_units_read =
-               DIV_ROUND_UP(part_stat_read(ns->bdev, sectors[READ]), 1000);
-       host_writes = part_stat_read(ns->bdev, ios[WRITE]);
+               DIV_ROUND_UP(part_stat_read(req->ns->bdev, sectors[READ]), 1000);
+       host_writes = part_stat_read(req->ns->bdev, ios[WRITE]);
        data_units_written =
-               DIV_ROUND_UP(part_stat_read(ns->bdev, sectors[WRITE]), 1000);
+               DIV_ROUND_UP(part_stat_read(req->ns->bdev, sectors[WRITE]), 1000);
 
        put_unaligned_le64(host_reads, &slog->host_reads[0]);
        put_unaligned_le64(data_units_read, &slog->data_units_read[0]);
        put_unaligned_le64(host_writes, &slog->host_writes[0]);
        put_unaligned_le64(data_units_written, &slog->data_units_written[0]);
-out:
-       nvmet_put_namespace(ns);
 
        return NVME_SC_SUCCESS;
 }
@@ -487,8 +485,10 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
 
        /* return an all zeroed buffer if we can't find an active namespace */
        ns = nvmet_find_namespace(ctrl, req->cmd->identify.nsid);
-       if (!ns)
+       if (!ns) {
+               status = NVME_SC_INVALID_NS;
                goto done;
+       }
 
        nvmet_ns_revalidate(ns);
 
@@ -541,7 +541,9 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
                id->nsattr |= (1 << 0);
        nvmet_put_namespace(ns);
 done:
-       status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id));
+       if (!status)
+               status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id));
+
        kfree(id);
 out:
        nvmet_req_complete(req, status);
@@ -603,37 +605,35 @@ static u16 nvmet_copy_ns_identifier(struct nvmet_req *req, u8 type, u8 len,
 
 static void nvmet_execute_identify_desclist(struct nvmet_req *req)
 {
-       struct nvmet_ns *ns;
        u16 status = 0;
        off_t off = 0;
 
-       ns = nvmet_find_namespace(req->sq->ctrl, req->cmd->identify.nsid);
-       if (!ns) {
+       req->ns = nvmet_find_namespace(req->sq->ctrl, req->cmd->identify.nsid);
+       if (!req->ns) {
                req->error_loc = offsetof(struct nvme_identify, nsid);
                status = NVME_SC_INVALID_NS | NVME_SC_DNR;
                goto out;
        }
 
-       if (memchr_inv(&ns->uuid, 0, sizeof(ns->uuid))) {
+       if (memchr_inv(&req->ns->uuid, 0, sizeof(req->ns->uuid))) {
                status = nvmet_copy_ns_identifier(req, NVME_NIDT_UUID,
                                                  NVME_NIDT_UUID_LEN,
-                                                 &ns->uuid, &off);
+                                                 &req->ns->uuid, &off);
                if (status)
-                       goto out_put_ns;
+                       goto out;
        }
-       if (memchr_inv(ns->nguid, 0, sizeof(ns->nguid))) {
+       if (memchr_inv(req->ns->nguid, 0, sizeof(req->ns->nguid))) {
                status = nvmet_copy_ns_identifier(req, NVME_NIDT_NGUID,
                                                  NVME_NIDT_NGUID_LEN,
-                                                 &ns->nguid, &off);
+                                                 &req->ns->nguid, &off);
                if (status)
-                       goto out_put_ns;
+                       goto out;
        }
 
        if (sg_zero_buffer(req->sg, req->sg_cnt, NVME_IDENTIFY_DATA_SIZE - off,
                        off) != NVME_IDENTIFY_DATA_SIZE - off)
                status = NVME_SC_INTERNAL | NVME_SC_DNR;
-out_put_ns:
-       nvmet_put_namespace(ns);
+
 out:
        nvmet_req_complete(req, status);
 }