diff --git a/src/modules/partition/jobs/CheckFileSystemJob.cpp b/src/modules/partition/jobs/CheckFileSystemJob.cpp
index 7ceb0805a12762f6a66b31817121ee38d8d08898..686621db1cfb90773410d60085d02abb357a20c8 100644
--- a/src/modules/partition/jobs/CheckFileSystemJob.cpp
+++ b/src/modules/partition/jobs/CheckFileSystemJob.cpp
@@ -18,6 +18,8 @@
 
 #include "jobs/CheckFileSystemJob.h"
 
+#include <utils/Logger.h>
+
 // KPMcore
 #include <kpmcore/core/partition.h>
 #include <kpmcore/fs/filesystem.h>
@@ -54,11 +56,18 @@ CheckFileSystemJob::exec()
     Report report( nullptr );
     bool 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()
-               );
+    {
+        cDebug() << "Filesystem check failed for" << partition()->partitionPath()
+                 << ", retrying...";
+        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()
+                   );
+    }
 
     return Calamares::JobResult::ok();
 }