summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmds-check.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/cmds-check.c b/cmds-check.c
index de9f2709..f6200c08 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -10923,7 +10923,12 @@ static int check_dev_extent_item(struct btrfs_fs_info *fs_info,
l = path.nodes[0];
chunk = btrfs_item_ptr(l, path.slots[0], struct btrfs_chunk);
- if (btrfs_chunk_length(l, chunk) != length)
+ ret = btrfs_check_chunk_valid(chunk_root, l, chunk, path.slots[0],
+ chunk_key.offset);
+ if (ret < 0)
+ goto out;
+
+ if (btrfs_stripe_length(fs_info, l, chunk) != length)
goto out;
num_stripes = btrfs_chunk_num_stripes(l, chunk);
@@ -11163,6 +11168,7 @@ static int check_chunk_item(struct btrfs_fs_info *fs_info,
struct btrfs_dev_extent *ptr;
u64 length;
u64 chunk_end;
+ u64 stripe_len;
u64 type;
int num_stripes;
u64 offset;
@@ -11212,6 +11218,7 @@ static int check_chunk_item(struct btrfs_fs_info *fs_info,
}
num_stripes = btrfs_chunk_num_stripes(eb, chunk);
+ stripe_len = btrfs_stripe_length(fs_info, eb, chunk);
for (i = 0; i < num_stripes; i++) {
btrfs_release_path(&path);
btrfs_init_path(&path);
@@ -11231,7 +11238,7 @@ static int check_chunk_item(struct btrfs_fs_info *fs_info,
offset = btrfs_dev_extent_chunk_offset(leaf, ptr);
if (objectid != chunk_key.objectid ||
offset != chunk_key.offset ||
- btrfs_dev_extent_length(leaf, ptr) != length)
+ btrfs_dev_extent_length(leaf, ptr) != stripe_len)
goto not_match_dev;
continue;
not_match_dev: