]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
nvmet: update smart log with num err log entries
authorChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Wed, 12 Dec 2018 23:11:48 +0000 (15:11 -0800)
committerChristoph Hellwig <hch@lst.de>
Thu, 13 Dec 2018 08:59:07 +0000 (09:59 +0100)
Now that we have error log page implementation update smart log command
handler to provide number of error log entries in the lifetime of the
controller field.

Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/admin-cmd.c

index 00956b4106a8c510e80205a63388ea9322a4acd6..11baeb14c38810c715060d6bb82be6aeaffe3f9e 100644 (file)
@@ -135,6 +135,7 @@ static void nvmet_execute_get_log_page_smart(struct nvmet_req *req)
 {
        struct nvme_smart_log *log;
        u16 status = NVME_SC_INTERNAL;
+       unsigned long flags;
 
        if (req->data_len != sizeof(*log))
                goto out;
@@ -150,6 +151,11 @@ static void nvmet_execute_get_log_page_smart(struct nvmet_req *req)
        if (status)
                goto out_free_log;
 
+       spin_lock_irqsave(&req->sq->ctrl->error_lock, flags);
+       put_unaligned_le64(req->sq->ctrl->err_counter,
+                       &log->num_err_log_entries);
+       spin_unlock_irqrestore(&req->sq->ctrl->error_lock, flags);
+
        status = nvmet_copy_to_sgl(req, 0, log, sizeof(*log));
 out_free_log:
        kfree(log);