LVM support #6
|
@ -173,16 +173,6 @@ bool lvm2_pv::canUnmount(const QString& deviceNode) const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString lvm2_pv::mountTitle() const
|
|
||||||
{
|
|
||||||
return i18nc("@title:menu", "Add to VG");
|
|
||||||
}
|
|
||||||
|
|
||||||
QString lvm2_pv::unmountTitle() const
|
|
||||||
{
|
|
||||||
return i18nc("@title:menu", "Remove from VG");
|
|
||||||
}
|
|
||||||
|
|
||||||
qint64 lvm2_pv::getTotalPE(const QString& deviceNode) const
|
qint64 lvm2_pv::getTotalPE(const QString& deviceNode) const
|
||||||
{
|
{
|
||||||
QString val = getpvField(QStringLiteral("pv_pe_count"), deviceNode);
|
QString val = getpvField(QStringLiteral("pv_pe_count"), deviceNode);
|
||||||
|
@ -214,17 +204,19 @@ qint64 lvm2_pv::getPESize(const QString& deviceNode) const
|
||||||
|
|
||||||
QString lvm2_pv::getpvField(const QString& fieldname, const QString& deviceNode)
|
QString lvm2_pv::getpvField(const QString& fieldname, const QString& deviceNode)
|
||||||
{
|
{
|
||||||
ExternalCommand cmd(QStringLiteral("lvm"),
|
QStringList args = { QStringLiteral("pvs"),
|
||||||
{ QStringLiteral("pvs"),
|
QStringLiteral("--foreign"),
|
||||||
QStringLiteral("--foreign"),
|
QStringLiteral("--readonly"),
|
||||||
QStringLiteral("--readonly"),
|
QStringLiteral("--noheadings"),
|
||||||
QStringLiteral("--noheadings"),
|
QStringLiteral("--units"),
|
||||||
QStringLiteral("--units"),
|
QStringLiteral("B"),
|
||||||
QStringLiteral("B"),
|
QStringLiteral("--nosuffix"),
|
||||||
QStringLiteral("--nosuffix"),
|
QStringLiteral("--options"),
|
||||||
QStringLiteral("--options"),
|
fieldname };
|
||||||
fieldname,
|
if (!deviceNode.isEmpty()) {
|
||||||
deviceNode });
|
args << deviceNode;
|
||||||
|
}
|
||||||
|
ExternalCommand cmd(QStringLiteral("lvm"), args);
|
||||||
if (cmd.run(-1) && cmd.exitCode() == 0) {
|
if (cmd.run(-1) && cmd.exitCode() == 0) {
|
||||||
return cmd.output().trimmed();
|
return cmd.output().trimmed();
|
||||||
}
|
}
|
||||||
|
@ -236,4 +228,42 @@ QString lvm2_pv::getVGName(const QString& deviceNode)
|
||||||
return getpvField(QStringLiteral("vg_name"), deviceNode);
|
return getpvField(QStringLiteral("vg_name"), deviceNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList lvm2_pv::getFreePV()
|
||||||
|
{
|
||||||
|
QStringList rlist;
|
||||||
|
|
||||||
|
QString output = getpvField(QStringLiteral("pv_name"));
|
||||||
|
QStringList pvList = output.split(QStringLiteral("\n"), QString::SkipEmptyParts);
|
||||||
|
foreach (QString pvnode, pvList) {
|
||||||
|
if (!isUsed(pvnode.trimmed())) {
|
||||||
|
rlist.append(pvnode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList lvm2_pv::getUsedPV(const QString& vgname)
|
||||||
|
{
|
||||||
|
QStringList rlist;
|
||||||
|
|
||||||
|
QString output = getpvField(QStringLiteral("pv_name"), vgname);
|
||||||
|
QStringList pvList = output.split(QStringLiteral("\n"), QString::SkipEmptyParts);
|
||||||
|
foreach (QString pvnode, pvList) {
|
||||||
|
if (isUsed(pvnode.trimmed())) {
|
||||||
|
rlist.append(pvnode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool lvm2_pv::isUsed(const QString& deviceNode)
|
||||||
|
{
|
||||||
|
QString output = getpvField(QStringLiteral("pv_in_use"), deviceNode.trimmed());
|
||||||
|
if (output.trimmed() == QStringLiteral("used")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,8 +54,6 @@ public:
|
||||||
|
|
||||||
bool canMount(const QString & deviceNode, const QString & mountPoint) const override;
|
bool canMount(const QString & deviceNode, const QString & mountPoint) const override;
|
||||||
bool canUnmount(const QString& deviceNode) const override;
|
bool canUnmount(const QString& deviceNode) const override;
|
||||||
QString mountTitle() const override;
|
|
||||||
QString unmountTitle() const override;
|
|
||||||
|
|
||||||
bool mount(Report& report, const QString& deviceNode, const QString& mountPoint) override; // mountPoint == VG name
|
bool mount(Report& report, const QString& deviceNode, const QString& mountPoint) override; // mountPoint == VG name
|
||||||
bool unmount(Report& report, const QString& deviceNode) override;
|
bool unmount(Report& report, const QString& deviceNode) override;
|
||||||
|
@ -108,9 +106,13 @@ public:
|
||||||
qint64 getPESize(const QString& deviceNode) const; // return PE size in bytes
|
qint64 getPESize(const QString& deviceNode) const; // return PE size in bytes
|
||||||
qint64 getPVSize(const QString& deviceNode) const; // return PV size in bytes
|
qint64 getPVSize(const QString& deviceNode) const; // return PV size in bytes
|
||||||
|
|
||||||
static QString getVGName(const QString& deviceNode);
|
static bool isUsed(const QString& pvNode);
|
||||||
|
|
||||||
static QString getpvField(const QString& fieldname, const QString& deviceNode);
|
static QString getVGName(const QString& deviceNode);
|
||||||
|
static QString getpvField(const QString& fieldname, const QString& deviceNode = QString());
|
||||||
|
|
||||||
|
static QStringList getFreePV();
|
||||||
|
static QStringList getUsedPV(const QString& vgname = QString());
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static CommandSupportType m_GetUsed;
|
static CommandSupportType m_GetUsed;
|
||||||
|
|
Loading…
Reference in New Issue