diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-12-06 06:42:35 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-12-06 06:43:49 +0100 |
commit | d6c1c49de577fa292af2449817364b7d89b574d8 (patch) | |
tree | e97cf88a318f50eb23c18d790e8b0bcf7bb47169 /fs/btrfs/volumes.c | |
parent | 9dde9dc0a81c7aeb863b35121d09011f09b4897c (diff) | |
parent | ddf6e0e50723b62ac76ed18eb53e9417c6eefba7 (diff) | |
download | op-kernel-dev-d6c1c49de577fa292af2449817364b7d89b574d8.zip op-kernel-dev-d6c1c49de577fa292af2449817364b7d89b574d8.tar.gz |
Merge branch 'perf/urgent' into perf/core
Merge reason: Add these cherry-picked commits so that future changes
on perf/core don't conflict.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/btrfs/volumes.c')
-rw-r--r-- | fs/btrfs/volumes.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index f8e29431..c37433d 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -999,7 +999,7 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans, key.objectid = device->devid; key.offset = start; key.type = BTRFS_DEV_EXTENT_KEY; - +again: ret = btrfs_search_slot(trans, root, &key, path, -1, 1); if (ret > 0) { ret = btrfs_previous_item(root, path, key.objectid, @@ -1012,6 +1012,9 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans, struct btrfs_dev_extent); BUG_ON(found_key.offset > start || found_key.offset + btrfs_dev_extent_length(leaf, extent) < start); + key = found_key; + btrfs_release_path(path); + goto again; } else if (ret == 0) { leaf = path->nodes[0]; extent = btrfs_item_ptr(leaf, path->slots[0], |