diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-12-13 09:02:46 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:03:58 -0400 |
commit | 70b043f0c7d7c78d8a0a01e65067c7c8fe338485 (patch) | |
tree | b30e96ca08c6d071f0cb9b775eee0e3a6ca45d09 /fs/btrfs/extent-tree.c | |
parent | 3954401fa6013bb2f2c8758b903e9bffcf25b64b (diff) | |
download | talos-op-linux-70b043f0c7d7c78d8a0a01e65067c7c8fe338485.tar.gz talos-op-linux-70b043f0c7d7c78d8a0a01e65067c7c8fe338485.zip |
Btrfs: Extra NULL block group checks in find_free_extent
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 187be4012474..7c953b2ecf15 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -1319,6 +1319,12 @@ static int find_free_extent(struct btrfs_trans_handle *trans, struct btrfs_root total_needed += empty_size; path = btrfs_alloc_path(); check_failed: + if (!block_group) { + block_group = btrfs_lookup_block_group(info, search_start); + if (!block_group) + block_group = btrfs_lookup_block_group(info, + orig_search_start); + } search_start = find_search_start(root, &block_group, search_start, total_needed, data, full_scan); search_start = stripe_align(root, search_start); |