From f115383d8ca3af9029215d5eabda018beeed56a8 Mon Sep 17 00:00:00 2001 From: Chantara Tith Date: Mon, 8 Aug 2016 06:40:34 +0700 Subject: [PATCH] Resizing Volume Group preview. --- src/ops/resizevolumegroupoperation.cpp | 13 ++++++++++++- src/ops/resizevolumegroupoperation.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/ops/resizevolumegroupoperation.cpp b/src/ops/resizevolumegroupoperation.cpp index 2e9eae6..b38ee3c 100644 --- a/src/ops/resizevolumegroupoperation.cpp +++ b/src/ops/resizevolumegroupoperation.cpp @@ -41,7 +41,9 @@ ResizeVolumeGroupOperation::ResizeVolumeGroupOperation(LvmDevice& dev, const QSt m_ShrinkVolumeGroupJob(nullptr), m_MovePhysicalVolumeJob(nullptr) { - const QStringList clist = LvmDevice::getPVs(dev.name()); + const QStringList clist = currentList(); + m_TargetSize = FS::lvm2_pv::getPVSize(targetList()); + m_CurrentSize = FS::lvm2_pv::getPVSize(currentList()); QStringList toRemoveList = clist; foreach (QString path, partlist) { @@ -111,8 +113,17 @@ bool ResizeVolumeGroupOperation::targets(const Partition& part) const void ResizeVolumeGroupOperation::preview() { + //asumming that targetSize is larger than the allocated space. + device().setTotalLogical(targetSize() / device().logicalSize()); + device().partitionTable()->setFirstUsableSector(PartitionTable::defaultFirstUsable(device(), PartitionTable::vmd)); + device().partitionTable()->setLastUsableSector(PartitionTable::defaultLastUsable(device(), PartitionTable::vmd)); + device().partitionTable()->updateUnallocated(device()); } void ResizeVolumeGroupOperation::undo() { + device().setTotalLogical(currentSize() / device().logicalSize()); + device().partitionTable()->setFirstUsableSector(PartitionTable::defaultFirstUsable(device(), PartitionTable::vmd)); + device().partitionTable()->setLastUsableSector(PartitionTable::defaultLastUsable(device(), PartitionTable::vmd)); + device().partitionTable()->updateUnallocated(device()); } diff --git a/src/ops/resizevolumegroupoperation.h b/src/ops/resizevolumegroupoperation.h index 45a5d7d..6b84382 100644 --- a/src/ops/resizevolumegroupoperation.h +++ b/src/ops/resizevolumegroupoperation.h @@ -72,6 +72,14 @@ protected: return m_CurrentList; } + qint64 targetSize() const { + return m_TargetSize; + } + + qint64 currentSize() const { + return m_CurrentSize; + } + ResizeVolumeGroupJob* growVolumeGroupJob() { return m_GrowVolumeGroupJob; } @@ -89,6 +97,8 @@ private: const QStringList m_TargetList; const QStringList m_CurrentList; + qint64 m_TargetSize; + qint64 m_CurrentSize; ResizeVolumeGroupJob *m_GrowVolumeGroupJob; ResizeVolumeGroupJob *m_ShrinkVolumeGroupJob;