From 25bbce4975752d9da27e26fa453c0d450d9b26df Mon Sep 17 00:00:00 2001 From: Chantara Tith Date: Mon, 8 Aug 2016 14:03:58 +0700 Subject: [PATCH] A small dirty hack to keep track of all the PVs that to be added to any VG. --- src/core/lvmdevice.cpp | 2 ++ src/core/lvmdevice.h | 1 + src/ops/createvolumegroupoperation.cpp | 9 ++++++++- src/ops/createvolumegroupoperation.h | 5 +++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/core/lvmdevice.cpp b/src/core/lvmdevice.cpp index f572e19..a2d968a 100644 --- a/src/core/lvmdevice.cpp +++ b/src/core/lvmdevice.cpp @@ -56,6 +56,8 @@ LvmDevice::LvmDevice(const QString& name, const QString& iconname) initPartitions(); } +QStringList LvmDevice::s_DirtyPVs; + LvmDevice::~LvmDevice() { delete m_PVPathList; diff --git a/src/core/lvmdevice.h b/src/core/lvmdevice.h index 19d4b62..b3ab188 100644 --- a/src/core/lvmdevice.h +++ b/src/core/lvmdevice.h @@ -53,6 +53,7 @@ public: Partition* scanPartition(const QString& lvPath, PartitionTable* pTable) const; QStringList deviceNodeList() const override; QStringList lvPathList() const; + static QStringList s_DirtyPVs; public: static QList scanSystemLVM(); diff --git a/src/ops/createvolumegroupoperation.cpp b/src/ops/createvolumegroupoperation.cpp index 26f1209..80764c5 100644 --- a/src/ops/createvolumegroupoperation.cpp +++ b/src/ops/createvolumegroupoperation.cpp @@ -32,7 +32,8 @@ */ CreateVolumeGroupOperation::CreateVolumeGroupOperation(const QString& vgname, const QStringList& pvlist, const qint32 pesize) : Operation(), - m_CreateVolumeGroupJob(new CreateVolumeGroupJob(vgname, pvlist, pesize)) + m_CreateVolumeGroupJob(new CreateVolumeGroupJob(vgname, pvlist, pesize)), + m_PVList(pvlist) { addJob(createVolumeGroupJob()); } @@ -50,10 +51,16 @@ bool CreateVolumeGroupOperation::targets(const Partition& part) const void CreateVolumeGroupOperation::preview() { + LvmDevice::s_DirtyPVs << PVList(); } void CreateVolumeGroupOperation::undo() { + foreach(QString pvpath, PVList()) { + if (LvmDevice::s_DirtyPVs.contains(pvpath)) { + LvmDevice::s_DirtyPVs.removeAll(pvpath); + } + } } bool CreateVolumeGroupOperation::canCreate() diff --git a/src/ops/createvolumegroupoperation.h b/src/ops/createvolumegroupoperation.h index 73f1a1e..97f4331 100644 --- a/src/ops/createvolumegroupoperation.h +++ b/src/ops/createvolumegroupoperation.h @@ -61,8 +61,13 @@ protected: return m_CreateVolumeGroupJob; } + QStringList PVList() { + return m_PVList; + } + private: CreateVolumeGroupJob* m_CreateVolumeGroupJob; + QStringList m_PVList; }; #endif