]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/nvme/target/admin-cmd.c
nvmet: fix data units read and written counters in SMART log
[mirror_ubuntu-bionic-kernel.git] / drivers / nvme / target / admin-cmd.c
index 90dcdc40ac71a46fc75f1efd47243e18137e0367..b9b8c817f44da58301d1f6c247054217cf97aacd 100644 (file)
@@ -46,9 +46,11 @@ static u16 nvmet_get_smart_log_nsid(struct nvmet_req *req,
        }
 
        host_reads = part_stat_read(ns->bdev->bd_part, ios[READ]);
-       data_units_read = part_stat_read(ns->bdev->bd_part, sectors[READ]);
+       data_units_read = DIV_ROUND_UP(part_stat_read(ns->bdev->bd_part,
+               sectors[READ]), 1000);
        host_writes = part_stat_read(ns->bdev->bd_part, ios[WRITE]);
-       data_units_written = part_stat_read(ns->bdev->bd_part, sectors[WRITE]);
+       data_units_written = DIV_ROUND_UP(part_stat_read(ns->bdev->bd_part,
+               sectors[WRITE]), 1000);
 
        put_unaligned_le64(host_reads, &slog->host_reads[0]);
        put_unaligned_le64(data_units_read, &slog->data_units_read[0]);
@@ -72,11 +74,11 @@ static u16 nvmet_get_smart_log_all(struct nvmet_req *req,
        rcu_read_lock();
        list_for_each_entry_rcu(ns, &ctrl->subsys->namespaces, dev_link) {
                host_reads += part_stat_read(ns->bdev->bd_part, ios[READ]);
-               data_units_read +=
-                       part_stat_read(ns->bdev->bd_part, sectors[READ]);
+               data_units_read += DIV_ROUND_UP(
+                       part_stat_read(ns->bdev->bd_part, sectors[READ]), 1000);
                host_writes += part_stat_read(ns->bdev->bd_part, ios[WRITE]);
-               data_units_written +=
-                       part_stat_read(ns->bdev->bd_part, sectors[WRITE]);
+               data_units_written += DIV_ROUND_UP(
+                       part_stat_read(ns->bdev->bd_part, sectors[WRITE]), 1000);
 
        }
        rcu_read_unlock();