From e19f385f594e671cbfc85ce7e280a3878c59ad65 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Tue, 16 Nov 2021 21:12:09 +0200 Subject: [PATCH] partitionmanager: implement check for ZFS Signed-off-by: Ivailo Monev --- partitionmanager/src/fs/zfs.cpp | 11 ++++++++++- partitionmanager/src/fs/zfs.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/partitionmanager/src/fs/zfs.cpp b/partitionmanager/src/fs/zfs.cpp index b7b48e1c..096ee1cf 100644 --- a/partitionmanager/src/fs/zfs.cpp +++ b/partitionmanager/src/fs/zfs.cpp @@ -48,8 +48,10 @@ namespace FS void zfs::init() { m_SetLabel = findExternal("zpool", QStringList(), 2) ? cmdSupportFileSystem : cmdSupportNone; + m_Check = m_SetLabel; m_GetUsed = findExternal("zfs", QStringList(), 2) ? cmdSupportFileSystem : cmdSupportNone; + m_GetLabel = cmdSupportCore; m_Backup = cmdSupportCore; m_GetUUID = cmdSupportCore; @@ -62,7 +64,7 @@ namespace FS m_GetLabel != cmdSupportNone && m_SetLabel != cmdSupportNone && // m_Create != cmdSupportNone && -// m_Check != cmdSupportNone && + m_Check != cmdSupportNone && // m_UpdateUUID != cmdSupportNone && // m_Grow != cmdSupportNone && // m_Shrink != cmdSupportNone && @@ -109,6 +111,13 @@ namespace FS return result; } + bool zfs::check(Report& report, const QString& deviceNode) const + { + Q_UNUSED(deviceNode) + ExternalCommand cmd(report, "zpool", QStringList() << "scrub" << "-w" << this->label()); + return cmd.run(-1) && (cmd.exitCode() == 0); + } + bool zfs::remove(Report& report, const QString& deviceNode) const { Q_UNUSED(deviceNode) diff --git a/partitionmanager/src/fs/zfs.h b/partitionmanager/src/fs/zfs.h index 7b0a9ee0..c8abecdb 100644 --- a/partitionmanager/src/fs/zfs.h +++ b/partitionmanager/src/fs/zfs.h @@ -45,6 +45,7 @@ namespace FS static void init(); virtual qint64 readUsedCapacity(const QString& deviceNode) const; + virtual bool check(Report& report, const QString& deviceNode) const; virtual bool remove(Report& report, const QString& deviceNode) const; virtual bool writeLabel(Report& report, const QString& deviceNode, const QString& newLabel); -- 2.11.0