diff options
-rw-r--r-- | fs/jbd2/recovery.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c index 3b6bb19d60b1..00e9703d7dc6 100644 --- a/fs/jbd2/recovery.c +++ b/fs/jbd2/recovery.c | |||
@@ -426,6 +426,7 @@ static int do_one_pass(journal_t *journal, | |||
426 | int tag_bytes = journal_tag_bytes(journal); | 426 | int tag_bytes = journal_tag_bytes(journal); |
427 | __u32 crc32_sum = ~0; /* Transactional Checksums */ | 427 | __u32 crc32_sum = ~0; /* Transactional Checksums */ |
428 | int descr_csum_size = 0; | 428 | int descr_csum_size = 0; |
429 | int block_error = 0; | ||
429 | 430 | ||
430 | /* | 431 | /* |
431 | * First thing is to establish what we expect to find in the log | 432 | * 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, | |||
598 | "checksum recovering " | 599 | "checksum recovering " |
599 | "block %llu in log\n", | 600 | "block %llu in log\n", |
600 | blocknr); | 601 | blocknr); |
601 | continue; | 602 | block_error = 1; |
603 | goto skip_write; | ||
602 | } | 604 | } |
603 | 605 | ||
604 | /* Find a buffer for the new | 606 | /* Find a buffer for the new |
@@ -797,7 +799,8 @@ static int do_one_pass(journal_t *journal, | |||
797 | success = -EIO; | 799 | success = -EIO; |
798 | } | 800 | } |
799 | } | 801 | } |
800 | 802 | if (block_error && success == 0) | |
803 | success = -EIO; | ||
801 | return success; | 804 | return success; |
802 | 805 | ||
803 | failed: | 806 | failed: |