aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-12-21 16:36:24 -0500
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:03:58 -0400
commite52ec0eb62e76ea584c8438ef92933e9b815db80 (patch)
tree255f8156b76ea343309dd4360e17a5fc7b9772c9
parentedbd8d4efe4ddaf29a175ae504e2c9a05a96ebee (diff)
Btrfs: Fix NULL block groups on reading the inode
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/extent-tree.c4
-rw-r--r--fs/btrfs/inode.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index de0fb0743cf..a421069e998 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -1630,11 +1630,11 @@ int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
struct btrfs_path *path;
btrfs_set_stack_extent_refs(&extent_item, 1);
-
+#if 0
new_hint = max(hint_byte, 16ULL * 1024 * 1024 * 1024);
if (new_hint < btrfs_super_total_bytes(&info->super_copy))
hint_byte = new_hint;
-
+#endif
WARN_ON(num_bytes < root->sectorsize);
ret = find_free_extent(trans, root, num_bytes, empty_size,
search_start, search_end, hint_byte, ins,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index f6a20112d9e..3c7bf3bddca 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -402,6 +402,10 @@ void btrfs_read_locked_inode(struct inode *inode)
BTRFS_I(inode)->block_group = btrfs_lookup_block_group(root->fs_info,
alloc_group_block);
+ if (!BTRFS_I(inode)->block_group) {
+ BTRFS_I(inode)->block_group = btrfs_find_block_group(root,
+ NULL, 0, 0, 0);
+ }
btrfs_free_path(path);
inode_item = NULL;