summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/tree-checker.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@lithui.me.apana.org.au>2017-12-22 04:00:50 -0500
committerHerbert Xu <herbert@lithui.me.apana.org.au>2017-12-22 04:00:50 -0500
commit45fa9a324d0f5be9140ba2e0db9b8fb8a0b9b7e8 (patch)
treea5e7c8428030ec0462b58133d6548ddff3802018 /fs/btrfs/tree-checker.c
parentfc8517bf627c9b834f80274a1bc9ecd39b27231b (diff)
parent2973633e9f09311e849f975d969737af81a521ff (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Merge the crypto tree to pick up inside-secure fixes.
Diffstat (limited to 'fs/btrfs/tree-checker.c')
-rw-r--r--fs/btrfs/tree-checker.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c
index 114fc5f0ecc5..ce4ed6ec8f39 100644
--- a/fs/btrfs/tree-checker.c
+++ b/fs/btrfs/tree-checker.c
@@ -242,7 +242,8 @@ static int check_leaf_item(struct btrfs_root *root,
242 return ret; 242 return ret;
243} 243}
244 244
245int btrfs_check_leaf(struct btrfs_root *root, struct extent_buffer *leaf) 245static int check_leaf(struct btrfs_root *root, struct extent_buffer *leaf,
246 bool check_item_data)
246{ 247{
247 struct btrfs_fs_info *fs_info = root->fs_info; 248 struct btrfs_fs_info *fs_info = root->fs_info;
248 /* No valid key type is 0, so all key should be larger than this key */ 249 /* No valid key type is 0, so all key should be larger than this key */
@@ -361,10 +362,15 @@ int btrfs_check_leaf(struct btrfs_root *root, struct extent_buffer *leaf)
361 return -EUCLEAN; 362 return -EUCLEAN;
362 } 363 }
363 364
364 /* Check if the item size and content meet other criteria */ 365 if (check_item_data) {
365 ret = check_leaf_item(root, leaf, &key, slot); 366 /*
366 if (ret < 0) 367 * Check if the item size and content meet other
367 return ret; 368 * criteria
369 */
370 ret = check_leaf_item(root, leaf, &key, slot);
371 if (ret < 0)
372 return ret;
373 }
368 374
369 prev_key.objectid = key.objectid; 375 prev_key.objectid = key.objectid;
370 prev_key.type = key.type; 376 prev_key.type = key.type;
@@ -374,6 +380,17 @@ int btrfs_check_leaf(struct btrfs_root *root, struct extent_buffer *leaf)
374 return 0; 380 return 0;
375} 381}
376 382
383int btrfs_check_leaf_full(struct btrfs_root *root, struct extent_buffer *leaf)
384{
385 return check_leaf(root, leaf, true);
386}
387
388int btrfs_check_leaf_relaxed(struct btrfs_root *root,
389 struct extent_buffer *leaf)
390{
391 return check_leaf(root, leaf, false);
392}
393
377int btrfs_check_node(struct btrfs_root *root, struct extent_buffer *node) 394int btrfs_check_node(struct btrfs_root *root, struct extent_buffer *node)
378{ 395{
379 unsigned long nr = btrfs_header_nritems(node); 396 unsigned long nr = btrfs_header_nritems(node);