diff --git a/src/modules/partition/jobs/CheckFileSystemJob.cpp b/src/modules/partition/jobs/CheckFileSystemJob.cpp
index 686621db1cfb90773410d60085d02abb357a20c8..3d694f69a6534179f057d80c73cd90b8a4408af1 100644
--- a/src/modules/partition/jobs/CheckFileSystemJob.cpp
+++ b/src/modules/partition/jobs/CheckFileSystemJob.cpp
@@ -1,6 +1,7 @@
 /* === This file is part of Calamares - <http://github.com/calamares> ===
  *
  *   Copyright 2014, Aurélien Gâteau <agateau@kde.org>
+ *   Copyright 2016, Teo Mrnjavac <teo@kde.org>
  *
  *   Calamares is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -25,6 +26,8 @@
 #include <kpmcore/fs/filesystem.h>
 #include <kpmcore/util/report.h>
 
+#include <QThread>
+
 CheckFileSystemJob::CheckFileSystemJob( Partition* partition )
     : PartitionJob( partition )
 {}
@@ -55,19 +58,26 @@ CheckFileSystemJob::exec()
 
     Report report( nullptr );
     bool ok = fs.check( report, partition()->partitionPath() );
-    if ( !ok )
+    int retries = 0;
+    const int MAX_RETRIES = 10;
+    while ( !ok )
     {
-        cDebug() << "Filesystem check failed for" << partition()->partitionPath()
-                 << ", retrying...";
+        cDebug() << "Partition" << partition()->partitionPath()
+                 << "might not be ready yet, retrying (" << ++retries
+                 << "/" << MAX_RETRIES << ") ...";
+        QThread::sleep( 2 /*seconds*/ );
         ok = fs.check( report, partition()->partitionPath() );
 
-        if ( !ok )
-            return Calamares::JobResult::error(
-                       tr( "The file system check on partition %1 failed." )
-                       .arg( partition()->partitionPath() ),
-                       report.toText()
-                   );
+        if ( retries == MAX_RETRIES )
+            break;
     }
 
+    if ( !ok )
+        return Calamares::JobResult::error(
+                   tr( "The file system check on partition %1 failed." )
+                   .arg( partition()->partitionPath() ),
+                   report.toText()
+               );
+
     return Calamares::JobResult::ok();
 }