From fd15975134effe9612468e4816975449d9c99be4 Mon Sep 17 00:00:00 2001 From: spiros Date: Thu, 30 May 2024 18:43:48 +0300 Subject: [PATCH] Support LBA disks --- mainwindow.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mainwindow.cpp b/mainwindow.cpp index 7b9d9b8..a2c125e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -203,6 +203,12 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal } else if (attrObj["name"] == "Host_Writes_32MiB") { double gibibytes = (attrObj["raw"].toObject()["value"].toInt() * 32 * 1024.0 * 1024.0) / 1e9; totalWrites = QString::number(static_cast(gibibytes)) + " GB"; + } else if (attrObj["name"] == "Total_LBAs_Written") { + unsigned int logicalBlockSize = localObj["serial_number"].toInt(); + unsigned long long lbaWritten = attrObj["raw"].toObject()["value"].toInt(); + unsigned long long oneGB = static_cast(std::pow(2, 30)); + unsigned long long totalGbWriten = (lbaWritten * logicalBlockSize) / oneGB; + totalWrites = QString::number(static_cast(totalGbWriten)) + " GB"; } } else if (attrObj["id"] == 242 && !isNvme) { if (attrObj["name"] == "Total_Reads_GB") { @@ -210,6 +216,20 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal } else if (attrObj["name"] == "Host_Reads_32MiB") { double gibibytes = (attrObj["raw"].toObject()["value"].toInt() * 32 * 1024.0 * 1024.0) / 1e9; totalReads = QString::number(static_cast(gibibytes)) + " GB"; + } else if (attrObj["name"] == "Total_LBAs_Read") { + unsigned int logicalBlockSize = localObj["serial_number"].toInt(); + unsigned long long lbaRead = attrObj["raw"].toObject()["value"].toInt(); + unsigned long long oneGB = static_cast(std::pow(2, 30)); + unsigned long long totalGbWriten = (lbaRead * logicalBlockSize) / oneGB; + totalReads = QString::number(static_cast(totalGbWriten)) + " GB"; + } + } else if (attrObj["id"] == 246 && !isNvme) { // MX500 + if (attrObj["name"] == "Total_LBAs_Written") { + unsigned int logicalBlockSize = localObj["serial_number"].toInt(); + unsigned long long lbaWritten = attrObj["raw"].toObject()["value"].toInt(); + unsigned long long oneGB = static_cast(std::pow(2, 30)); + unsigned long long totalGbWriten = (lbaWritten * logicalBlockSize) / oneGB; + totalWrites = QString::number(static_cast(totalGbWriten)) + " GB"; } } }