Skip to content

Commit

Permalink
Btrfs: make get_caching_control unconditionally return the ctl
Browse files Browse the repository at this point in the history
This was written when we didn't do a caching control for the fast free space
cache loading.  However we started doing that a long time ago, and there is
still a small window of time that we could be caching the block group the fast
way, so if there is a caching_ctl at all on the block group just return it, the
callers all wait properly for what they want.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
  • Loading branch information
Josef Bacik authored and Chris Mason committed Dec 3, 2014
1 parent 8dbcd10 commit cb83b7b
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions fs/btrfs/extent-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,12 +315,6 @@ get_caching_control(struct btrfs_block_group_cache *cache)
struct btrfs_caching_control *ctl;

spin_lock(&cache->lock);
if (cache->cached != BTRFS_CACHE_STARTED) {
spin_unlock(&cache->lock);
return NULL;
}

/* We're loading it the fast way, so we don't have a caching_ctl. */
if (!cache->caching_ctl) {
spin_unlock(&cache->lock);
return NULL;
Expand Down Expand Up @@ -594,13 +588,15 @@ static int cache_block_group(struct btrfs_block_group_cache *cache,
spin_unlock(&cache->lock);

if (fs_info->mount_opt & BTRFS_MOUNT_SPACE_CACHE) {
mutex_lock(&caching_ctl->mutex);
ret = load_free_space_cache(fs_info, cache);

spin_lock(&cache->lock);
if (ret == 1) {
cache->caching_ctl = NULL;
cache->cached = BTRFS_CACHE_FINISHED;
cache->last_byte_to_unpin = (u64)-1;
caching_ctl->progress = (u64)-1;
} else {
if (load_cache_only) {
cache->caching_ctl = NULL;
Expand All @@ -611,6 +607,8 @@ static int cache_block_group(struct btrfs_block_group_cache *cache,
}
}
spin_unlock(&cache->lock);
mutex_unlock(&caching_ctl->mutex);

wake_up(&caching_ctl->wait);
if (ret == 1) {
put_caching_control(caching_ctl);
Expand Down

0 comments on commit cb83b7b

Please sign in to comment.