From 786bf82935e6d1e0a1ab1447d4ed0e06380d821a Mon Sep 17 00:00:00 2001 From: Chantara Tith Date: Fri, 8 Jul 2016 16:19:33 +0700 Subject: [PATCH] Move lvm2_pv functions to static. --- src/fs/lvm2_pv.cpp | 52 +++++++++++++++++++++++++++++++++++++++++----- src/fs/lvm2_pv.h | 13 +++++++----- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/src/fs/lvm2_pv.cpp b/src/fs/lvm2_pv.cpp index 1e095b0..20a8f92 100644 --- a/src/fs/lvm2_pv.cpp +++ b/src/fs/lvm2_pv.cpp @@ -173,30 +173,72 @@ bool lvm2_pv::canUnmount(const QString& deviceNode) const return true; } -qint64 lvm2_pv::getTotalPE(const QString& deviceNode) const +qint64 lvm2_pv::getTotalPE(const QString& deviceNode) { QString val = getpvField(QStringLiteral("pv_pe_count"), deviceNode); return val.isEmpty() ? -1 : val.toLongLong(); } -qint64 lvm2_pv::getFreePE(const QString& deviceNode) const +qint64 lvm2_pv::getTotalPE(const QStringList& deviceNodeList) +{ + qint64 sum = 0; + foreach (QString deviceNode, deviceNodeList) { + qint64 totalPE = getTotalPE(deviceNode); + if (totalPE < 0) { + sum = -1; + break; + } + sum += totalPE; + } + return sum; +} + +qint64 lvm2_pv::getFreePE(const QString& deviceNode) { return getTotalPE(deviceNode) - getAllocatedPE(deviceNode); } -qint64 lvm2_pv::getAllocatedPE(const QString& deviceNode) const +qint64 lvm2_pv::getFreePE(const QStringList& deviceNodeList) +{ + qint64 sum = 0; + foreach (QString deviceNode, deviceNodeList) { + qint64 freePE = getFreePE(deviceNode); + if (freePE < 0) { + sum = -1; + break; + } + sum += freePE; + } + return sum; +} + +qint64 lvm2_pv::getAllocatedPE(const QString& deviceNode) { QString val = getpvField(QStringLiteral("pv_pe_alloc_count"), deviceNode); return val.isEmpty() ? -1 : val.toLongLong(); } -qint64 lvm2_pv::getPVSize(const QString& deviceNode) const +qint64 lvm2_pv::getAllocatedPE(const QStringList& deviceNodeList) +{ + qint64 sum = 0; + foreach (QString deviceNode, deviceNodeList) { + qint64 allocatedPE = getAllocatedPE(deviceNode); + if (allocatedPE < 0) { + sum = -1; + break; + } + sum += allocatedPE; + } + return sum; +} + +qint64 lvm2_pv::getPVSize(const QString& deviceNode) { QString val = getpvField(QStringLiteral("pv_size"), deviceNode); return val.isEmpty() ? -1 : val.toLongLong(); } -qint64 lvm2_pv::getPESize(const QString& deviceNode) const +qint64 lvm2_pv::getPESize(const QString& deviceNode) { QString val = getpvField(QStringLiteral("vg_extent_size"), deviceNode); return val.isEmpty() ? -1 : val.toLongLong(); diff --git a/src/fs/lvm2_pv.h b/src/fs/lvm2_pv.h index 7e557a5..070daa2 100644 --- a/src/fs/lvm2_pv.h +++ b/src/fs/lvm2_pv.h @@ -100,11 +100,14 @@ public: SupportTool supportToolName() const override; bool supportToolFound() const override; - qint64 getTotalPE(const QString& deviceNode) const; - qint64 getFreePE(const QString& deviceNode) const; - qint64 getAllocatedPE(const QString& deviceNode) const; - qint64 getPESize(const QString& deviceNode) const; // return PE size in bytes - qint64 getPVSize(const QString& deviceNode) const; // return PV size in bytes + static qint64 getTotalPE(const QString& deviceNode); + static qint64 getTotalPE(const QStringList& deviceNodeList); + static qint64 getFreePE(const QString& deviceNode); + static qint64 getFreePE(const QStringList& deviceNodeList); + static qint64 getAllocatedPE(const QString& deviceNode); + static qint64 getAllocatedPE(const QStringList& deviceNodeList); + static qint64 getPESize(const QString& deviceNode); // return PE size in bytes + static qint64 getPVSize(const QString& deviceNode); // return PV size in bytes static bool isUsed(const QString& pvNode);