From a412564b00e00bc031dcc6ce1edbab82f9d17975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Fri, 22 Apr 2016 13:30:19 +0100 Subject: [PATCH 1/9] Simplify NTFS writeUUID code. Rely on external ntfslabel command. --- src/fs/ntfs.cpp | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/fs/ntfs.cpp b/src/fs/ntfs.cpp index 80f512a..9ee775d 100644 --- a/src/fs/ntfs.cpp +++ b/src/fs/ntfs.cpp @@ -176,27 +176,9 @@ bool ntfs::resize(Report& report, const QString& deviceNode, qint64 length) cons bool ntfs::updateUUID(Report& report, const QString& deviceNode) const { Q_UNUSED(report); - QUuid uuid = QUuid::createUuid(); - char* s = reinterpret_cast(&uuid.data4[0]); + ExternalCommand cmd(QStringLiteral("ntfslabel"), { QStringLiteral("--new-serial"), deviceNode }); - QFile device(deviceNode); - if (!device.open(QFile::ReadWrite | QFile::Unbuffered)) { - Log() << xi18nc("@info/plain", "Could not open partition %1 for writing when trying to update the NTFS serial number.", deviceNode); - return false; - } - - if (!device.seek(0x48)) { - Log() << xi18nc("@info/plain", "Could not seek to position 0x48 on partition %1 when trying to update the NTFS serial number.", deviceNode); - return false; - } - - if (device.write(s, 8) != 8) { - Log() << xi18nc("@info/plain", "Could not write new NTFS serial number to partition %1.", deviceNode); - return false; - } - - Log() << xi18nc("@info/plain", "Updated NTFS serial number for partition %1 successfully.", deviceNode); - return true; + return cmd.run(-1) && cmd.exitCode() == 0; } bool ntfs::updateBootSector(Report& report, const QString& deviceNode) const From f7ff5f2d3016a7b04c07d7694d7073ee326f6c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Fri, 22 Apr 2016 13:47:58 +0100 Subject: [PATCH 2/9] Fix a bug that prevented resizing nilfs2 partitions. --- src/fs/nilfs2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fs/nilfs2.cpp b/src/fs/nilfs2.cpp index 38da68f..2a7a05f 100644 --- a/src/fs/nilfs2.cpp +++ b/src/fs/nilfs2.cpp @@ -59,7 +59,7 @@ void nilfs2::init() m_SetLabel = findExternal(QStringLiteral("nilfs-tune")) ? cmdSupportFileSystem : cmdSupportNone; m_UpdateUUID = findExternal(QStringLiteral("nilfs-tune")) ? cmdSupportFileSystem : cmdSupportNone; - m_Grow = (m_Check != cmdSupportNone && findExternal(QStringLiteral("nilfs-resize"))) ? cmdSupportFileSystem : cmdSupportNone; + m_Grow = findExternal(QStringLiteral("nilfs-resize")) ? cmdSupportFileSystem : cmdSupportNone; m_GetUsed = findExternal(QStringLiteral("nilfs-tune")) ? cmdSupportFileSystem : cmdSupportNone; m_Shrink = (m_Grow != cmdSupportNone && m_GetUsed != cmdSupportNone) ? cmdSupportFileSystem : cmdSupportNone; From f787af70fccd3f634303a53d2fa27021f2e1c525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Tue, 26 Apr 2016 13:54:16 +0100 Subject: [PATCH 3/9] btrfs-debug-tree is not used anymore. --- src/fs/btrfs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fs/btrfs.cpp b/src/fs/btrfs.cpp index 16890b7..1866b03 100644 --- a/src/fs/btrfs.cpp +++ b/src/fs/btrfs.cpp @@ -53,7 +53,7 @@ void btrfs::init() m_Create = findExternal(QStringLiteral("mkfs.btrfs")) ? cmdSupportFileSystem : cmdSupportNone; m_Check = findExternal(QStringLiteral("btrfsck"), QStringList(), 1) ? cmdSupportFileSystem : cmdSupportNone; m_Grow = (m_Check != cmdSupportNone && findExternal(QStringLiteral("btrfs"))) ? cmdSupportFileSystem : cmdSupportNone; - m_GetUsed = findExternal(QStringLiteral("btrfs-debug-tree")) ? cmdSupportFileSystem : cmdSupportNone; + m_GetUsed = findExternal(QStringLiteral("btrfs")) ? cmdSupportFileSystem : cmdSupportNone; m_Shrink = (m_Grow != cmdSupportNone && m_GetUsed != cmdSupportNone) ? cmdSupportFileSystem : cmdSupportNone; m_SetLabel = findExternal(QStringLiteral("btrfs")) ? cmdSupportFileSystem : cmdSupportNone; From 16757048c518c171e2a0daa80f6004d014243b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Tue, 26 Apr 2016 14:46:02 +0100 Subject: [PATCH 4/9] Fix whitespace. --- src/gui/partwidgetbase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/partwidgetbase.cpp b/src/gui/partwidgetbase.cpp index 05f5814..544b047 100644 --- a/src/gui/partwidgetbase.cpp +++ b/src/gui/partwidgetbase.cpp @@ -32,7 +32,7 @@ T sum(const QList& list) { T rval = 0; foreach(const T & val, list) - rval += val; + rval += val; return rval; } From 9920828f81b347e7f58f9b94b6815b7beeff33e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Wed, 27 Apr 2016 00:32:27 +0100 Subject: [PATCH 5/9] Reduce minimal btrfs partition capacity. --- src/fs/btrfs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fs/btrfs.cpp b/src/fs/btrfs.cpp index 1866b03..32b41ed 100644 --- a/src/fs/btrfs.cpp +++ b/src/fs/btrfs.cpp @@ -91,7 +91,7 @@ FileSystem::SupportTool btrfs::supportToolName() const qint64 btrfs::minCapacity() const { - return 256 * Capacity::unitFactor(Capacity::Byte, Capacity::MiB); + return 40 * Capacity::unitFactor(Capacity::Byte, Capacity::MiB); } qint64 btrfs::maxCapacity() const From 3ec80be2a1e73090ddcfa88b7cd4f3fa9fd6728e Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 27 Apr 2016 15:34:52 +0200 Subject: [PATCH 6/9] Better to use deleteLater with QObjects. --- src/core/operationstack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/operationstack.cpp b/src/core/operationstack.cpp index b1a6d9d..d95e847 100644 --- a/src/core/operationstack.cpp +++ b/src/core/operationstack.cpp @@ -456,7 +456,7 @@ void OperationStack::clearOperations() Operation* o = operations().takeLast(); if (o->status() == Operation::StatusPending) o->undo(); - delete o; + o->deleteLater(); } emit operationsChanged(); From dc9e9651ac59f58516a153c429532cc8c55142fd Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 27 Apr 2016 16:41:34 +0200 Subject: [PATCH 7/9] Use a QPointer for Partition in DeleteOperation to avoid double-delete. --- src/ops/deleteoperation.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ops/deleteoperation.h b/src/ops/deleteoperation.h index 73972dd..6330f99 100644 --- a/src/ops/deleteoperation.h +++ b/src/ops/deleteoperation.h @@ -24,6 +24,7 @@ #include "../ops/operation.h" +#include #include class Device; @@ -101,7 +102,7 @@ protected: private: Device& m_TargetDevice; - Partition* m_DeletedPartition; + QPointer< Partition > m_DeletedPartition; ShredAction m_ShredAction; Job* m_DeleteFileSystemJob; DeletePartitionJob* m_DeletePartitionJob; From 83787cbdfcc78cd51c2461084c6e6534f4f77337 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 27 Apr 2016 16:52:37 +0200 Subject: [PATCH 8/9] Make the parent in Partition a QPointer. This also reverts commit dc9e9651ac59f58516a153c429532cc8c55142fd. --- src/core/partition.cpp | 3 ++- src/core/partition.h | 3 ++- src/ops/deleteoperation.h | 3 +-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/partition.cpp b/src/core/partition.cpp index 5feaf85..36b4a94 100644 --- a/src/core/partition.cpp +++ b/src/core/partition.cpp @@ -79,7 +79,8 @@ Partition::~Partition() // list of children). As a workaround, always remove a partition from its parent here in the dtor. // This presumably fixes 232092, but backporting is too risky until we're sure this doesn't cause // side-effects. - parent()->remove(this); + if (m_Parent) + parent()->remove(this); clearChildren(); deleteFileSystem(); } diff --git a/src/core/partition.h b/src/core/partition.h index 0464f37..bbda5a3 100644 --- a/src/core/partition.h +++ b/src/core/partition.h @@ -27,6 +27,7 @@ #include #include +#include class Device; class OperationStack; @@ -270,7 +271,7 @@ private: qint32 m_Number; Partitions m_Children; - PartitionNode* m_Parent; + QPointer< PartitionNode > m_Parent; FileSystem* m_FileSystem; PartitionRole m_Roles; qint64 m_FirstSector; diff --git a/src/ops/deleteoperation.h b/src/ops/deleteoperation.h index 6330f99..73972dd 100644 --- a/src/ops/deleteoperation.h +++ b/src/ops/deleteoperation.h @@ -24,7 +24,6 @@ #include "../ops/operation.h" -#include #include class Device; @@ -102,7 +101,7 @@ protected: private: Device& m_TargetDevice; - QPointer< Partition > m_DeletedPartition; + Partition* m_DeletedPartition; ShredAction m_ShredAction; Job* m_DeleteFileSystemJob; DeletePartitionJob* m_DeletePartitionJob; From e5641bf7f534acd719050a5835f1ca9690b27185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Wed, 27 Apr 2016 16:09:14 +0100 Subject: [PATCH 9/9] Minimal capacity of F2FS filesystems is 30MiB. --- src/fs/f2fs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fs/f2fs.cpp b/src/fs/f2fs.cpp index 634e75d..c56e045 100644 --- a/src/fs/f2fs.cpp +++ b/src/fs/f2fs.cpp @@ -94,7 +94,7 @@ FileSystem::SupportTool f2fs::supportToolName() const qint64 f2fs::minCapacity() const { - return 128 * Capacity::unitFactor(Capacity::Byte, Capacity::MiB); // FIXME + return 30 * Capacity::unitFactor(Capacity::Byte, Capacity::MiB); } qint64 f2fs::maxCapacity() const