diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-11 10:28:19 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-01-11 10:28:19 -0500 |
commit | 734d1ece37fbf3d2ddfc71bc6c69e0fe35f02542 (patch) | |
tree | c4805dd7e746b1feb9e09e9849f3245d0b2c0c6b /fs/btrfs/check-integrity.c | |
parent | 216c82c6aba63eeb49d7654b448e0d47bea255bb (diff) | |
parent | 9931faca02c604c22335f5a935a501bb2ace6e20 (diff) |
Merge tag 'v3.8-rc3' into v4l_for_linus
Linux 3.8-rc3
* tag 'v3.8-rc3': (11110 commits)
Linux 3.8-rc3
mm: reinstante dropped pmd_trans_splitting() check
cred: Remove tgcred pointer from struct cred
drm/ttm: fix fence locking in ttm_buffer_object_transfer
ARM: clps711x: Fix bad merge of clockevents setup
ARM: highbank: save and restore L2 cache and GIC on suspend
ARM: highbank: add a power request clear
ARM: highbank: fix secondary boot and hotplug
ARM: highbank: fix typos with hignbank in power request functions
ARM: dts: fix highbank cpu mpidr values
ARM: dts: add device_type prop to cpu nodes on Calxeda platforms
drm/prime: drop reference on imported dma-buf come from gem
xen/netfront: improve truesize tracking
ARM: mx5: Fix MX53 flexcan2 clock
ARM: OMAP2+: am33xx-hwmod: Fix wrongly terminated am33xx_usbss_mpu_irqs array
sctp: fix Kconfig bug in default cookie hmac selection
EDAC: Cleanup device deregistering path
EDAC: Fix EDAC Kconfig menu
EDAC: Fix kernel panic on module unloading
ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec)
...
Diffstat (limited to 'fs/btrfs/check-integrity.c')
-rw-r--r-- | fs/btrfs/check-integrity.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/fs/btrfs/check-integrity.c b/fs/btrfs/check-integrity.c index 5a3e45db642a..11d47bfb62b4 100644 --- a/fs/btrfs/check-integrity.c +++ b/fs/btrfs/check-integrity.c | |||
@@ -137,7 +137,7 @@ struct btrfsic_block { | |||
137 | unsigned int never_written:1; /* block was added because it was | 137 | unsigned int never_written:1; /* block was added because it was |
138 | * referenced, not because it was | 138 | * referenced, not because it was |
139 | * written */ | 139 | * written */ |
140 | unsigned int mirror_num:2; /* large enough to hold | 140 | unsigned int mirror_num; /* large enough to hold |
141 | * BTRFS_SUPER_MIRROR_MAX */ | 141 | * BTRFS_SUPER_MIRROR_MAX */ |
142 | struct btrfsic_dev_state *dev_state; | 142 | struct btrfsic_dev_state *dev_state; |
143 | u64 dev_bytenr; /* key, physical byte num on disk */ | 143 | u64 dev_bytenr; /* key, physical byte num on disk */ |
@@ -723,7 +723,7 @@ static int btrfsic_process_superblock(struct btrfsic_state *state, | |||
723 | } | 723 | } |
724 | 724 | ||
725 | num_copies = | 725 | num_copies = |
726 | btrfs_num_copies(&state->root->fs_info->mapping_tree, | 726 | btrfs_num_copies(state->root->fs_info, |
727 | next_bytenr, state->metablock_size); | 727 | next_bytenr, state->metablock_size); |
728 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) | 728 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) |
729 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", | 729 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", |
@@ -903,7 +903,7 @@ static int btrfsic_process_superblock_dev_mirror( | |||
903 | } | 903 | } |
904 | 904 | ||
905 | num_copies = | 905 | num_copies = |
906 | btrfs_num_copies(&state->root->fs_info->mapping_tree, | 906 | btrfs_num_copies(state->root->fs_info, |
907 | next_bytenr, state->metablock_size); | 907 | next_bytenr, state->metablock_size); |
908 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) | 908 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) |
909 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", | 909 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", |
@@ -1287,7 +1287,7 @@ static int btrfsic_create_link_to_next_block( | |||
1287 | *next_blockp = NULL; | 1287 | *next_blockp = NULL; |
1288 | if (0 == *num_copiesp) { | 1288 | if (0 == *num_copiesp) { |
1289 | *num_copiesp = | 1289 | *num_copiesp = |
1290 | btrfs_num_copies(&state->root->fs_info->mapping_tree, | 1290 | btrfs_num_copies(state->root->fs_info, |
1291 | next_bytenr, state->metablock_size); | 1291 | next_bytenr, state->metablock_size); |
1292 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) | 1292 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) |
1293 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", | 1293 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", |
@@ -1489,7 +1489,7 @@ static int btrfsic_handle_extent_data( | |||
1489 | chunk_len = num_bytes; | 1489 | chunk_len = num_bytes; |
1490 | 1490 | ||
1491 | num_copies = | 1491 | num_copies = |
1492 | btrfs_num_copies(&state->root->fs_info->mapping_tree, | 1492 | btrfs_num_copies(state->root->fs_info, |
1493 | next_bytenr, state->datablock_size); | 1493 | next_bytenr, state->datablock_size); |
1494 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) | 1494 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) |
1495 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", | 1495 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", |
@@ -1582,9 +1582,21 @@ static int btrfsic_map_block(struct btrfsic_state *state, u64 bytenr, u32 len, | |||
1582 | struct btrfs_device *device; | 1582 | struct btrfs_device *device; |
1583 | 1583 | ||
1584 | length = len; | 1584 | length = len; |
1585 | ret = btrfs_map_block(&state->root->fs_info->mapping_tree, READ, | 1585 | ret = btrfs_map_block(state->root->fs_info, READ, |
1586 | bytenr, &length, &multi, mirror_num); | 1586 | bytenr, &length, &multi, mirror_num); |
1587 | 1587 | ||
1588 | if (ret) { | ||
1589 | block_ctx_out->start = 0; | ||
1590 | block_ctx_out->dev_bytenr = 0; | ||
1591 | block_ctx_out->len = 0; | ||
1592 | block_ctx_out->dev = NULL; | ||
1593 | block_ctx_out->datav = NULL; | ||
1594 | block_ctx_out->pagev = NULL; | ||
1595 | block_ctx_out->mem_to_free = NULL; | ||
1596 | |||
1597 | return ret; | ||
1598 | } | ||
1599 | |||
1588 | device = multi->stripes[0].dev; | 1600 | device = multi->stripes[0].dev; |
1589 | block_ctx_out->dev = btrfsic_dev_state_lookup(device->bdev); | 1601 | block_ctx_out->dev = btrfsic_dev_state_lookup(device->bdev); |
1590 | block_ctx_out->dev_bytenr = multi->stripes[0].physical; | 1602 | block_ctx_out->dev_bytenr = multi->stripes[0].physical; |
@@ -1594,8 +1606,7 @@ static int btrfsic_map_block(struct btrfsic_state *state, u64 bytenr, u32 len, | |||
1594 | block_ctx_out->pagev = NULL; | 1606 | block_ctx_out->pagev = NULL; |
1595 | block_ctx_out->mem_to_free = NULL; | 1607 | block_ctx_out->mem_to_free = NULL; |
1596 | 1608 | ||
1597 | if (0 == ret) | 1609 | kfree(multi); |
1598 | kfree(multi); | ||
1599 | if (NULL == block_ctx_out->dev) { | 1610 | if (NULL == block_ctx_out->dev) { |
1600 | ret = -ENXIO; | 1611 | ret = -ENXIO; |
1601 | printk(KERN_INFO "btrfsic: error, cannot lookup dev (#1)!\n"); | 1612 | printk(KERN_INFO "btrfsic: error, cannot lookup dev (#1)!\n"); |
@@ -2463,7 +2474,7 @@ static int btrfsic_process_written_superblock( | |||
2463 | } | 2474 | } |
2464 | 2475 | ||
2465 | num_copies = | 2476 | num_copies = |
2466 | btrfs_num_copies(&state->root->fs_info->mapping_tree, | 2477 | btrfs_num_copies(state->root->fs_info, |
2467 | next_bytenr, BTRFS_SUPER_INFO_SIZE); | 2478 | next_bytenr, BTRFS_SUPER_INFO_SIZE); |
2468 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) | 2479 | if (state->print_mask & BTRFSIC_PRINT_MASK_NUM_COPIES) |
2469 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", | 2480 | printk(KERN_INFO "num_copies(log_bytenr=%llu) = %d\n", |
@@ -2960,7 +2971,7 @@ static void btrfsic_cmp_log_and_dev_bytenr(struct btrfsic_state *state, | |||
2960 | struct btrfsic_block_data_ctx block_ctx; | 2971 | struct btrfsic_block_data_ctx block_ctx; |
2961 | int match = 0; | 2972 | int match = 0; |
2962 | 2973 | ||
2963 | num_copies = btrfs_num_copies(&state->root->fs_info->mapping_tree, | 2974 | num_copies = btrfs_num_copies(state->root->fs_info, |
2964 | bytenr, state->metablock_size); | 2975 | bytenr, state->metablock_size); |
2965 | 2976 | ||
2966 | for (mirror_num = 1; mirror_num <= num_copies; mirror_num++) { | 2977 | for (mirror_num = 1; mirror_num <= num_copies; mirror_num++) { |