diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c
index bdad9538b62f4501e336941ef5360fa85a7f7d23..7709de703c0aa09e7bba99d49066c460f7e00b78 100644
--- a/storage/maria/ma_blockrec.c
+++ b/storage/maria/ma_blockrec.c
@@ -1537,6 +1537,7 @@ static my_bool write_full_pages(MARIA_HA *info,
     length-= copy_length;
 
     DBUG_ASSERT(share->pagecache->block_size == block_size);
+    /** @todo RECOVERY BUG the page does not get a rec_lsn with this! */
     if (pagecache_write(share->pagecache,
                         &info->dfile, page, 0,
                         buff, share->page_type,
diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c
index 637a5d0d9a105adb9b1d24835586592361bad924..97c9b56d9e8e61280dd2e4a87177960c65ee4bae 100644
--- a/storage/maria/ma_recovery.c
+++ b/storage/maria/ma_recovery.c
@@ -298,6 +298,15 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
     fprintf(stderr, " (%.1f seconds); ", phase_took);
   }
 
+  /**
+     REDO phase does not fill blocks' rec_lsn, so a checkpoint now would be
+     wrong: if a future recovery used it, the REDO phase would always
+     start from the checkpoint and never from before, wrongly skipping REDOs
+     (tested).
+
+     @todo fix this.
+  */
+#if 0
   if (take_checkpoints && checkpoint_useful)
   {
     /*
@@ -308,6 +317,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
     if (ma_checkpoint_execute(CHECKPOINT_INDIRECT, FALSE))
       goto err;
   }
+#endif
 
   if (should_run_undo_phase)
   {