From: Filipe Manana Date: Wed, 9 Apr 2014 14:37:06 +0000 (+0100) Subject: Btrfs: check if items are ordered when a leaf is marked dirty X-Git-Tag: v3.16-rc1~5^2~58 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1f21ef0a34c37de0daf66fce7141b23b88630f29;p=uclinux-h8%2Flinux.git Btrfs: check if items are ordered when a leaf is marked dirty To ease finding bugs during development related to modifying btree leaves in such a way that it makes its items not sorted by key anymore. Since this is an expensive check, it's only enabled if CONFIG_BTRFS_FS_CHECK_INTEGRITY is set, which isn't meant to be enabled for regular users. Signed-off-by: Filipe David Borba Manana Reviewed-by: David Sterba Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index f4e708239c09..e54f0cd5cdf6 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -3738,6 +3738,12 @@ void btrfs_mark_buffer_dirty(struct extent_buffer *buf) __percpu_counter_add(&root->fs_info->dirty_metadata_bytes, buf->len, root->fs_info->dirty_metadata_batch); +#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY + if (btrfs_header_level(buf) == 0 && check_leaf(root, buf)) { + btrfs_print_leaf(root, buf); + ASSERT(0); + } +#endif } static void __btrfs_btree_balance_dirty(struct btrfs_root *root,