Skip to content

Commit 9ed988f

Browse files
liu-song-6shligit
authored andcommitted
md/r5cache: refactoring journal recovery code
1. rename r5l_read_meta_block() as r5l_recovery_read_meta_block(); 2. pull the code that initialize r5l_meta_block from r5l_log_write_empty_meta_block() to a separate function r5l_recovery_create_empty_meta_block(), so that we can reuse this piece of code. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com>
1 parent 2c7da14 commit 9ed988f

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

drivers/md/raid5-cache.c

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,8 +1356,8 @@ struct r5l_recovery_ctx {
13561356
u64 seq; /* recovery position seq */
13571357
};
13581358

1359-
static int r5l_read_meta_block(struct r5l_log *log,
1360-
struct r5l_recovery_ctx *ctx)
1359+
static int r5l_recovery_read_meta_block(struct r5l_log *log,
1360+
struct r5l_recovery_ctx *ctx)
13611361
{
13621362
struct page *page = ctx->meta_page;
13631363
struct r5l_meta_block *mb;
@@ -1530,7 +1530,7 @@ static void r5l_recovery_flush_log(struct r5l_log *log,
15301530
struct r5l_recovery_ctx *ctx)
15311531
{
15321532
while (1) {
1533-
if (r5l_read_meta_block(log, ctx))
1533+
if (r5l_recovery_read_meta_block(log, ctx))
15341534
return;
15351535
if (r5l_recovery_flush_one_meta(log, ctx))
15361536
return;
@@ -1539,25 +1539,34 @@ static void r5l_recovery_flush_log(struct r5l_log *log,
15391539
}
15401540
}
15411541

1542-
static int r5l_log_write_empty_meta_block(struct r5l_log *log, sector_t pos,
1543-
u64 seq)
1542+
static void
1543+
r5l_recovery_create_empty_meta_block(struct r5l_log *log,
1544+
struct page *page,
1545+
sector_t pos, u64 seq)
15441546
{
1545-
struct page *page;
15461547
struct r5l_meta_block *mb;
15471548
u32 crc;
15481549

1549-
page = alloc_page(GFP_KERNEL | __GFP_ZERO);
1550-
if (!page)
1551-
return -ENOMEM;
15521550
mb = page_address(page);
1551+
clear_page(mb);
15531552
mb->magic = cpu_to_le32(R5LOG_MAGIC);
15541553
mb->version = R5LOG_VERSION;
15551554
mb->meta_size = cpu_to_le32(sizeof(struct r5l_meta_block));
15561555
mb->seq = cpu_to_le64(seq);
15571556
mb->position = cpu_to_le64(pos);
15581557
crc = crc32c_le(log->uuid_checksum, mb, PAGE_SIZE);
15591558
mb->checksum = cpu_to_le32(crc);
1559+
}
15601560

1561+
static int r5l_log_write_empty_meta_block(struct r5l_log *log, sector_t pos,
1562+
u64 seq)
1563+
{
1564+
struct page *page;
1565+
1566+
page = alloc_page(GFP_KERNEL);
1567+
if (!page)
1568+
return -ENOMEM;
1569+
r5l_recovery_create_empty_meta_block(log, page, pos, seq);
15611570
if (!sync_page_io(log->rdev, pos, PAGE_SIZE, page, REQ_OP_WRITE,
15621571
WRITE_FUA, false)) {
15631572
__free_page(page);

0 commit comments

Comments
 (0)