Re: [PATCH] Btrfs: check items for correctness as we search V3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 17, 2011 at 9:18 PM, Josef Bacik <josef@xxxxxxxxxx> wrote:
> Currently if we have corrupted items things will blow up in spectacular ways.
> So as we read in blocks and they are leaves, check the entire leaf to make sure
> all of the items are correct and point to valid parts in the leaf for the item
> data the are responsible for. ÂIf the item is corrupt we will kick back EIO and
> not read any of the copies since they are likely to not be correct either. ÂThis
> will catch generic corruptions, it will be up to the individual callers of
> btrfs_search_slot to make sure their items are right. ÂThanks,
>
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index 495b1ac..9f31e11 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -323,6 +323,7 @@ static int btree_read_extent_buffer_pages(struct btrfs_root *root,
> Â Â Â Âint num_copies = 0;
> Â Â Â Âint mirror_num = 0;
>
> + Â Â Â clear_bit(EXTENT_BUFFER_CORRUPT, &eb->bflags);
> Â Â Â Âio_tree = &BTRFS_I(root->fs_info->btree_inode)->io_tree;
> Â Â Â Âwhile (1) {
> Â Â Â Â Â Â Â Âret = read_extent_buffer_pages(io_tree, eb, start, 1,
> @@ -331,6 +332,14 @@ static int btree_read_extent_buffer_pages(struct btrfs_root *root,
> Â Â Â Â Â Â Â Â Â Â!verify_parent_transid(io_tree, eb, parent_transid))
> Â Â Â Â Â Â Â Â Â Â Â Âreturn ret;
>
> + Â Â Â Â Â Â Â /*
> + Â Â Â Â Â Â Â Â* This buffer's crc is fine, but its contents are corrupted, so
> + Â Â Â Â Â Â Â Â* there is no reason to read the other copies, they won't be
> + Â Â Â Â Â Â Â Â* any less wrong.
> + Â Â Â Â Â Â Â Â*/

This sounds like an overstatement to me. You may be dealing with an
error pattern CRC faled to catch, so giving up reading a mirror at
this point seems premature.

Regards,
Andrey
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux