aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/scrub.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/scrub.c')
-rw-r--r--fs/btrfs/scrub.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index 3e2755eb0f08..12ed8a77f11c 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -1318,6 +1318,9 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
1318 struct btrfs_fs_info *fs_info = sctx->dev_root->fs_info; 1318 struct btrfs_fs_info *fs_info = sctx->dev_root->fs_info;
1319 u64 length = original_sblock->page_count * PAGE_SIZE; 1319 u64 length = original_sblock->page_count * PAGE_SIZE;
1320 u64 logical = original_sblock->pagev[0]->logical; 1320 u64 logical = original_sblock->pagev[0]->logical;
1321 u64 generation = original_sblock->pagev[0]->generation;
1322 u64 flags = original_sblock->pagev[0]->flags;
1323 u64 have_csum = original_sblock->pagev[0]->have_csum;
1321 struct scrub_recover *recover; 1324 struct scrub_recover *recover;
1322 struct btrfs_bio *bbio; 1325 struct btrfs_bio *bbio;
1323 u64 sublen; 1326 u64 sublen;
@@ -1372,6 +1375,7 @@ static int scrub_setup_recheck_block(struct scrub_block *original_sblock,
1372 1375
1373 sblock = sblocks_for_recheck + mirror_index; 1376 sblock = sblocks_for_recheck + mirror_index;
1374 sblock->sctx = sctx; 1377 sblock->sctx = sctx;
1378
1375 page = kzalloc(sizeof(*page), GFP_NOFS); 1379 page = kzalloc(sizeof(*page), GFP_NOFS);
1376 if (!page) { 1380 if (!page) {
1377leave_nomem: 1381leave_nomem:
@@ -1383,7 +1387,15 @@ leave_nomem:
1383 } 1387 }
1384 scrub_page_get(page); 1388 scrub_page_get(page);
1385 sblock->pagev[page_index] = page; 1389 sblock->pagev[page_index] = page;
1390 page->sblock = sblock;
1391 page->flags = flags;
1392 page->generation = generation;
1386 page->logical = logical; 1393 page->logical = logical;
1394 page->have_csum = have_csum;
1395 if (have_csum)
1396 memcpy(page->csum,
1397 original_sblock->pagev[0]->csum,
1398 sctx->csum_size);
1387 1399
1388 scrub_stripe_index_and_offset(logical, 1400 scrub_stripe_index_and_offset(logical,
1389 bbio->map_type, 1401 bbio->map_type,