jbd2: refactor JBD2_COMMIT_BLOCK process in do_one_pass()

To make JBD2_COMMIT_BLOCK process more clean, no functional change.

Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Link: https://patch.msgid.link/20240930005942.626942-4-yebin@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
pull/1083/head
Ye Bin 2024-09-30 08:59:39 +08:00 committed by Theodore Ts'o
parent 4c199241b6
commit a805ae3ab9
1 changed files with 29 additions and 26 deletions

View File

@ -728,6 +728,11 @@ static int do_one_pass(journal_t *journal,
continue;
case JBD2_COMMIT_BLOCK:
if (pass != PASS_SCAN) {
next_commit_ID++;
continue;
}
/* How to differentiate between interrupted commit
* and journal corruption ?
*
@ -790,8 +795,7 @@ static int do_one_pass(journal_t *journal,
* much to do other than move on to the next sequence
* number.
*/
if (pass == PASS_SCAN &&
jbd2_has_feature_checksum(journal)) {
if (jbd2_has_feature_checksum(journal)) {
struct commit_header *cbh =
(struct commit_header *)bh->b_data;
unsigned found_chksum =
@ -815,17 +819,19 @@ static int do_one_pass(journal_t *journal,
goto chksum_error;
crc32_sum = ~0;
goto chksum_ok;
}
if (pass == PASS_SCAN &&
!jbd2_commit_block_csum_verify(journal,
bh->b_data)) {
if (jbd2_commit_block_csum_verify_partial(
journal,
if (jbd2_commit_block_csum_verify(journal, bh->b_data))
goto chksum_ok;
if (jbd2_commit_block_csum_verify_partial(journal,
bh->b_data)) {
pr_notice("JBD2: Find incomplete commit block in transaction %u block %lu\n",
next_commit_ID, next_log_block);
goto chksum_ok;
}
chksum_error:
if (commit_time < last_trans_commit_time)
goto ignore_crc_mismatch;
@ -833,16 +839,13 @@ static int do_one_pass(journal_t *journal,
info->head_block = head_block;
if (!jbd2_has_feature_async_commit(journal)) {
journal->j_failed_commit =
next_commit_ID;
journal->j_failed_commit = next_commit_ID;
break;
}
}
if (pass == PASS_SCAN) {
chksum_ok:
last_trans_commit_time = commit_time;
head_block = next_log_block;
}
next_commit_ID++;
continue;