aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5-cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid5-cache.c')
-rw-r--r--drivers/md/raid5-cache.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
index 1b1ab4a1d132..a227a9f3ee65 100644
--- a/drivers/md/raid5-cache.c
+++ b/drivers/md/raid5-cache.c
@@ -1087,7 +1087,7 @@ static int r5l_recovery_log(struct r5l_log *log)
1087 * 1's seq + 10 and let superblock points to meta2. The same recovery will 1087 * 1's seq + 10 and let superblock points to meta2. The same recovery will
1088 * not think meta 3 is a valid meta, because its seq doesn't match 1088 * not think meta 3 is a valid meta, because its seq doesn't match
1089 */ 1089 */
1090 if (ctx.seq > log->last_cp_seq + 1) { 1090 if (ctx.seq > log->last_cp_seq) {
1091 int ret; 1091 int ret;
1092 1092
1093 ret = r5l_log_write_empty_meta_block(log, ctx.pos, ctx.seq + 10); 1093 ret = r5l_log_write_empty_meta_block(log, ctx.pos, ctx.seq + 10);
@@ -1096,6 +1096,8 @@ static int r5l_recovery_log(struct r5l_log *log)
1096 log->seq = ctx.seq + 11; 1096 log->seq = ctx.seq + 11;
1097 log->log_start = r5l_ring_add(log, ctx.pos, BLOCK_SECTORS); 1097 log->log_start = r5l_ring_add(log, ctx.pos, BLOCK_SECTORS);
1098 r5l_write_super(log, ctx.pos); 1098 r5l_write_super(log, ctx.pos);
1099 log->last_checkpoint = ctx.pos;
1100 log->next_checkpoint = ctx.pos;
1099 } else { 1101 } else {
1100 log->log_start = ctx.pos; 1102 log->log_start = ctx.pos;
1101 log->seq = ctx.seq; 1103 log->seq = ctx.seq;
@@ -1154,6 +1156,7 @@ create:
1154 if (create_super) { 1156 if (create_super) {
1155 log->last_cp_seq = prandom_u32(); 1157 log->last_cp_seq = prandom_u32();
1156 cp = 0; 1158 cp = 0;
1159 r5l_log_write_empty_meta_block(log, cp, log->last_cp_seq);
1157 /* 1160 /*
1158 * Make sure super points to correct address. Log might have 1161 * Make sure super points to correct address. Log might have
1159 * data very soon. If super hasn't correct log tail address, 1162 * data very soon. If super hasn't correct log tail address,
@@ -1168,6 +1171,7 @@ create:
1168 if (log->max_free_space > RECLAIM_MAX_FREE_SPACE) 1171 if (log->max_free_space > RECLAIM_MAX_FREE_SPACE)
1169 log->max_free_space = RECLAIM_MAX_FREE_SPACE; 1172 log->max_free_space = RECLAIM_MAX_FREE_SPACE;
1170 log->last_checkpoint = cp; 1173 log->last_checkpoint = cp;
1174 log->next_checkpoint = cp;
1171 1175
1172 __free_page(page); 1176 __free_page(page);
1173 1177