|
@@ -771,10 +771,23 @@ again:
|
|
|
goto out_free;
|
|
|
|
|
|
if (ret > 0 && metadata && key.type == BTRFS_METADATA_ITEM_KEY) {
|
|
|
- key.type = BTRFS_EXTENT_ITEM_KEY;
|
|
|
- key.offset = root->leafsize;
|
|
|
- btrfs_release_path(path);
|
|
|
- goto again;
|
|
|
+ metadata = 0;
|
|
|
+ if (path->slots[0]) {
|
|
|
+ path->slots[0]--;
|
|
|
+ btrfs_item_key_to_cpu(path->nodes[0], &key,
|
|
|
+ path->slots[0]);
|
|
|
+ if (key.objectid == bytenr &&
|
|
|
+ key.type == BTRFS_EXTENT_ITEM_KEY &&
|
|
|
+ key.offset == root->leafsize)
|
|
|
+ ret = 0;
|
|
|
+ }
|
|
|
+ if (ret) {
|
|
|
+ key.objectid = bytenr;
|
|
|
+ key.type = BTRFS_EXTENT_ITEM_KEY;
|
|
|
+ key.offset = root->leafsize;
|
|
|
+ btrfs_release_path(path);
|
|
|
+ goto again;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (ret == 0) {
|