|
@@ -4199,9 +4199,9 @@ static u64 btrfs_space_info_used(struct btrfs_space_info *s_info,
|
|
|
|
|
|
int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes)
|
|
|
{
|
|
|
- struct btrfs_space_info *data_sinfo;
|
|
|
struct btrfs_root *root = inode->root;
|
|
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
|
|
+ struct btrfs_space_info *data_sinfo = fs_info->data_sinfo;
|
|
|
u64 used;
|
|
|
int ret = 0;
|
|
|
int need_commit = 2;
|
|
@@ -4215,10 +4215,6 @@ int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes)
|
|
|
ASSERT(current->journal_info);
|
|
|
}
|
|
|
|
|
|
- data_sinfo = fs_info->data_sinfo;
|
|
|
- if (!data_sinfo)
|
|
|
- goto alloc;
|
|
|
-
|
|
|
again:
|
|
|
/* make sure we have enough space to handle the data first */
|
|
|
spin_lock(&data_sinfo->lock);
|
|
@@ -4236,7 +4232,7 @@ again:
|
|
|
|
|
|
data_sinfo->force_alloc = CHUNK_ALLOC_FORCE;
|
|
|
spin_unlock(&data_sinfo->lock);
|
|
|
-alloc:
|
|
|
+
|
|
|
alloc_target = btrfs_data_alloc_profile(fs_info);
|
|
|
/*
|
|
|
* It is ugly that we don't call nolock join
|
|
@@ -4264,9 +4260,6 @@ alloc:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (!data_sinfo)
|
|
|
- data_sinfo = fs_info->data_sinfo;
|
|
|
-
|
|
|
goto again;
|
|
|
}
|
|
|
|