OSDN Git Service

partitionmanager: read capacity of btrfs devices via btrfs command
authorIvailo Monev <xakepa10@gmail.com>
Tue, 20 Jul 2021 16:43:19 +0000 (19:43 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Tue, 20 Jul 2021 16:43:19 +0000 (19:43 +0300)
upstream commits:
https://github.com/KDE/kpmcore/commit/20bb8eba7ec9c57da4e24415e54a3b84909744c1
https://github.com/KDE/kpmcore/commit/f787af70fccd3f634303a53d2fa27021f2e1c525

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
partitionmanager/src/fs/btrfs.cpp

index 5690278..1bda042 100644 (file)
@@ -54,7 +54,7 @@ namespace FS
                m_Create = findExternal("mkfs.btrfs") ? cmdSupportFileSystem : cmdSupportNone;
                m_Check = findExternal("btrfsck", QStringList(), 1) ? cmdSupportFileSystem : cmdSupportNone;
                m_Grow = (m_Check != cmdSupportNone && findExternal("btrfs")) ? cmdSupportFileSystem : cmdSupportNone;
-               m_GetUsed = findExternal("btrfs-debug-tree") ? cmdSupportFileSystem : cmdSupportNone;
+               m_GetUsed = findExternal("btrfs") ? cmdSupportFileSystem : cmdSupportNone;
                m_Shrink = (m_Grow != cmdSupportNone && m_GetUsed != cmdSupportNone) ? cmdSupportFileSystem : cmdSupportNone;
 
                m_SetLabel = findExternal("btrfs") ? cmdSupportFileSystem : cmdSupportNone;
@@ -107,11 +107,11 @@ namespace FS
 
        qint64 btrfs::readUsedCapacity(const QString& deviceNode) const
        {
-               ExternalCommand cmd("btrfs-debug-tree", QStringList() << deviceNode);
+               ExternalCommand cmd(QLatin1String("btrfs"), QStringList() << QLatin1String("filesystem") << QLatin1String("show") << QLatin1String("--raw") << deviceNode);
 
                if (cmd.run())
                {
-                       QRegExp rxBytesUsed(" bytes used (\\d+)");
+                       QRegExp rxBytesUsed(QLatin1String(" used (\\d+) path ") + deviceNode);
 
                        if (rxBytesUsed.indexIn(cmd.output()) != -1)
                                return rxBytesUsed.cap(1).toLongLong();