mirror of
https://github.com/cmclark00/retro-imager.git
synced 2025-05-18 07:55:21 +01:00
udisks2: FAT32 format auto-mount fix
- after writing new partition table, make sure auto-mount has not mounted any old FAT filesystems that were previously on disks at the same offset. - error out on format errors. (timeout was raised to prevent false positives on formatting time'ing out)
This commit is contained in:
parent
71c1ea21dd
commit
cde6d1eaa0
1 changed files with 9 additions and 6 deletions
|
@ -130,18 +130,21 @@ bool UDisks2Api::formatDrive(const QString &device, bool mountAfterwards)
|
|||
}
|
||||
qDebug() << "New partition:" << newpartition.value().path();
|
||||
QThread::sleep(1);
|
||||
if (!drive.isEmpty() && drive != "/")
|
||||
{
|
||||
/* Unmount one more time, as auto-mount may have tried to mount an old FAT filesystem again if it
|
||||
* lives at the same sector in the new partition table as before */
|
||||
_unmountDrive(drive);
|
||||
}
|
||||
qDebug() << "Formatting drive as FAT32";
|
||||
QDBusInterface newblockdevice("org.freedesktop.UDisks2", newpartition.value().path(),
|
||||
"org.freedesktop.UDisks2.Block", QDBusConnection::systemBus());
|
||||
newblockdevice.setTimeout(120 * 1000);
|
||||
newblockdevice.setTimeout(300 * 1000);
|
||||
QDBusReply<void> fatformatreply = newblockdevice.call("Format", "vfat", formatOptions);
|
||||
if (!fatformatreply.isValid())
|
||||
{
|
||||
qDebug() << "Error from udisks2 while performing FAT32 format:" << fatformatreply.error().message()
|
||||
<< "(going to try to mount anyway, as errors are sometimes false positive)";
|
||||
/* udisks2 sometimes report
|
||||
"Error synchronizing after formatting with type `vfat': Timed out waiting for object"
|
||||
when there is nothing actually wrong with the format */
|
||||
qDebug() << "Error from udisks2 while performing FAT32 format:" << fatformatreply.error().message();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mountAfterwards)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue