Browse Source

Btrfs: Fix NULL block groups on reading the inode

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason 17 years ago
parent
commit
e52ec0eb62
2 changed files with 6 additions and 2 deletions
  1. 2 2
      fs/btrfs/extent-tree.c
  2. 4 0
      fs/btrfs/inode.c

+ 2 - 2
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,

+ 4 - 0
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;