Make sure system is informed about the change of file system label.
This commit is contained in:
parent
a6100aaa37
commit
07458efb91
|
@ -57,7 +57,6 @@ public:
|
||||||
RAID_Device, /* software RAID device */
|
RAID_Device, /* software RAID device */
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
|
||||||
explicit Device(std::shared_ptr<DevicePrivate> d_ptr, const QString& name, const QString& deviceNode, const qint64 logicalSectorSize, const qint64 totalLogicalSectors, const QString& iconName = QString(), Device::Type type = Device::Type::Disk_Device);
|
explicit Device(std::shared_ptr<DevicePrivate> d_ptr, const QString& name, const QString& deviceNode, const qint64 logicalSectorSize, const qint64 totalLogicalSectors, const QString& iconName = QString(), Device::Type type = Device::Type::Disk_Device);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
|
|
||||||
#include "jobs/setfilesystemlabeljob.h"
|
#include "jobs/setfilesystemlabeljob.h"
|
||||||
|
|
||||||
|
#include "backend/corebackend.h"
|
||||||
|
#include "backend/corebackendmanager.h"
|
||||||
|
#include "backend/corebackenddevice.h"
|
||||||
|
#include "backend/corebackendpartitiontable.h"
|
||||||
|
|
||||||
|
#include "core/device_p.h"
|
||||||
|
#include "core/operationstack.h"
|
||||||
#include "core/partition.h"
|
#include "core/partition.h"
|
||||||
|
|
||||||
#include "fs/filesystem.h"
|
#include "fs/filesystem.h"
|
||||||
|
@ -26,6 +33,8 @@
|
||||||
|
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
/** Creates a new SetFileSystemLabelJob
|
/** Creates a new SetFileSystemLabelJob
|
||||||
@param p the Partition the FileSystem whose label is to be set is on
|
@param p the Partition the FileSystem whose label is to be set is on
|
||||||
@param newlabel the new label
|
@param newlabel the new label
|
||||||
|
@ -61,7 +70,15 @@ bool SetFileSystemLabelJob::run(Report& parent)
|
||||||
partition().fileSystem().setLabel(label());
|
partition().fileSystem().setLabel(label());
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: need to commit to device
|
// A hack to reread partition table (commit() should be called even on non DiskDevices)
|
||||||
|
Device dev(std::make_shared<DevicePrivate>(), QString(), QString(), 0, 0, QString(), Device::Type::Unknown_Device);
|
||||||
|
std::unique_ptr<CoreBackendDevice> backendDevice = CoreBackendManager::self()->backend()->openDevice(dev);
|
||||||
|
if (backendDevice) {
|
||||||
|
std::unique_ptr<CoreBackendPartitionTable> backendPartitionTable = backendDevice->openPartitionTable();
|
||||||
|
|
||||||
|
if (backendPartitionTable)
|
||||||
|
backendPartitionTable->commit();
|
||||||
|
}
|
||||||
|
|
||||||
jobFinished(*report, rval);
|
jobFinished(*report, rval);
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,6 @@
|
||||||
#include "util/report.h"
|
#include "util/report.h"
|
||||||
#include "util/externalcommand.h"
|
#include "util/externalcommand.h"
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
@ -54,9 +52,9 @@ bool SfdiskPartitionTable::open()
|
||||||
|
|
||||||
bool SfdiskPartitionTable::commit(quint32 timeout)
|
bool SfdiskPartitionTable::commit(quint32 timeout)
|
||||||
{
|
{
|
||||||
if ( !(ExternalCommand(QStringLiteral("udevadm"), { QStringLiteral("settle"), QStringLiteral("--timeout=") + QString::number(timeout) }).run() &&
|
ExternalCommand(QStringLiteral("udevadm"), { QStringLiteral("settle"), QStringLiteral("--timeout=") + QString::number(timeout) }).run();
|
||||||
ExternalCommand(QStringLiteral("blockdev"), { QStringLiteral("--rereadpt"), m_device->deviceNode() }).run()))
|
ExternalCommand(QStringLiteral("blockdev"), { QStringLiteral("--rereadpt"), m_device->deviceNode() }).run();
|
||||||
sleep(1);
|
ExternalCommand(QStringLiteral("udevadm"), { QStringLiteral("trigger") }).run();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue