diff --git a/src/modules/partition/jobs/FormatPartitionJob.cpp b/src/modules/partition/jobs/FormatPartitionJob.cpp index a1a939f59..0ea9192db 100644 --- a/src/modules/partition/jobs/FormatPartitionJob.cpp +++ b/src/modules/partition/jobs/FormatPartitionJob.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau - * Copyright 2015, Teo Mrnjavac + * Copyright 2015-2016, Teo Mrnjavac * * Calamares is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,6 +35,7 @@ // Qt #include +#include FormatPartitionJob::FormatPartitionJob( Device* device, Partition* partition ) : PartitionJob( partition ) @@ -101,10 +102,27 @@ FormatPartitionJob::exec() } FileSystem& fs = m_partition->fileSystem(); - if ( !fs.create( report, partitionPath ) ) + + bool ok = fs.create( report, partitionPath ); + int retries = 0; + const int MAX_RETRIES = 10; + while ( !ok ) + { + cDebug() << "Partition" << m_partition->partitionPath() + << "might not be ready yet, retrying (" << ++retries + << "/" << MAX_RETRIES << ") ..."; + QThread::sleep( 2 /*seconds*/ ); + ok = fs.create( report, partitionPath ); + + if ( retries == MAX_RETRIES ) + break; + } + + if ( !ok ) { return Calamares::JobResult::error( - tr( "The installer failed to create file system on partition %1." ).arg( partitionPath ), + tr( "The installer failed to create file system on partition %1." ) + .arg( partitionPath ), report.toText() ); }