diff --git a/[refs] b/[refs] index 3e9133c2e9df..a5c9dc810134 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2552488345ea0933711010ee2c844792130a4252 +refs/heads/master: 1372f8e609d260c2352bf74e125614eef7aee8ef diff --git a/trunk/fs/btrfs/extent-tree.c b/trunk/fs/btrfs/extent-tree.c index 426a0222e12f..c390fd847a27 100644 --- a/trunk/fs/btrfs/extent-tree.c +++ b/trunk/fs/btrfs/extent-tree.c @@ -2434,7 +2434,15 @@ int btrfs_shrink_extent_tree(struct btrfs_root *root, u64 new_size) break; } leaf = path->nodes[0]; - nritems = btrfs_header_nritems(leaf); + btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]); + + /* + * btrfs_next_leaf doesn't cow buffers, we have to + * do the search again + */ + memcpy(&key, &found_key, sizeof(key)); + btrfs_release_path(root, path); + continue; } btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]);