|
@@ -426,6 +426,7 @@ static int do_one_pass(journal_t *journal,
|
|
|
int tag_bytes = journal_tag_bytes(journal);
|
|
|
__u32 crc32_sum = ~0; /* Transactional Checksums */
|
|
|
int descr_csum_size = 0;
|
|
|
+ int block_error = 0;
|
|
|
|
|
|
/*
|
|
|
* First thing is to establish what we expect to find in the log
|
|
@@ -598,7 +599,8 @@ static int do_one_pass(journal_t *journal,
|
|
|
"checksum recovering "
|
|
|
"block %llu in log\n",
|
|
|
blocknr);
|
|
|
- continue;
|
|
|
+ block_error = 1;
|
|
|
+ goto skip_write;
|
|
|
}
|
|
|
|
|
|
/* Find a buffer for the new
|
|
@@ -797,7 +799,8 @@ static int do_one_pass(journal_t *journal,
|
|
|
success = -EIO;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ if (block_error && success == 0)
|
|
|
+ success = -EIO;
|
|
|
return success;
|
|
|
|
|
|
failed:
|