LVM support #6
|
@ -173,16 +173,6 @@ bool lvm2_pv::canUnmount(const QString& deviceNode) const
|
|||
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
|
||||
{
|
||||
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)
|
||||
{
|
||||
ExternalCommand cmd(QStringLiteral("lvm"),
|
||||
{ QStringLiteral("pvs"),
|
||||
QStringLiteral("--foreign"),
|
||||
QStringLiteral("--readonly"),
|
||||
QStringLiteral("--noheadings"),
|
||||
QStringLiteral("--units"),
|
||||
QStringLiteral("B"),
|
||||
QStringLiteral("--nosuffix"),
|
||||
QStringLiteral("--options"),
|
||||
fieldname,
|
||||
deviceNode });
|
||||
QStringList args = { QStringLiteral("pvs"),
|
||||
QStringLiteral("--foreign"),
|
||||
QStringLiteral("--readonly"),
|
||||
QStringLiteral("--noheadings"),
|
||||
QStringLiteral("--units"),
|
||||
QStringLiteral("B"),
|
||||
QStringLiteral("--nosuffix"),
|
||||
QStringLiteral("--options"),
|
||||
fieldname };
|
||||
if (!deviceNode.isEmpty()) {
|
||||
args << deviceNode;
|
||||
}
|
||||
ExternalCommand cmd(QStringLiteral("lvm"), args);
|
||||
if (cmd.run(-1) && cmd.exitCode() == 0) {
|
||||
return cmd.output().trimmed();
|
||||
}
|
||||
|
@ -236,4 +228,42 @@ QString lvm2_pv::getVGName(const QString& 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 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 unmount(Report& report, const QString& deviceNode) override;
|
||||
|
@ -108,9 +106,13 @@ public:
|
|||
qint64 getPESize(const QString& deviceNode) const; // return PE 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:
|
||||
static CommandSupportType m_GetUsed;
|
||||
|
|
Loading…
Reference in New Issue