diff --git a/src/core/operationrunner.cpp b/src/core/operationrunner.cpp index 1880bf6..9a75b56 100644 --- a/src/core/operationrunner.cpp +++ b/src/core/operationrunner.cpp @@ -1,6 +1,6 @@ /************************************************************************* * Copyright (C) 2008 by Volker Lanz * - * Copyright (C) 2016 by Andrius Štikonas * + * Copyright (C) 2016-2018 by Andrius Štikonas * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * @@ -19,6 +19,8 @@ #include "core/operationrunner.h" #include "core/operationstack.h" #include "ops/operation.h" + +#include "util/externalcommand.h" #include "util/report.h" #include @@ -46,6 +48,11 @@ void OperationRunner::run() bool status = true; + // Disable udev event queue. systemd sometimes likes to automount devices when refreshing partition table + // While this does not prevent automounting, it will at least delay it until partitioning operations are finished + ExternalCommand udevadmStopQueue(report(), QStringLiteral("udevadm"), { QStringLiteral("control"), QStringLiteral("--stop-exec-queue") }); + udevadmStopQueue.run(); + // Disable Plasma removable device automounting QStringList modules; QDBusConnection bus = QDBusConnection::connectToBus(QDBusConnection::SessionBus, QStringLiteral("sessionBus")); @@ -84,6 +91,9 @@ void OperationRunner::run() if (automounter) kdedInterface.call( QStringLiteral("loadModule"), automounterService ); + ExternalCommand udevadmStartQueue(report(), QStringLiteral("udevadm"), { QStringLiteral("control"), QStringLiteral("--start-exec-queue") }); + udevadmStartQueue.run(); + if (!status) emit error(); else if (isCancelling())