Commit 6719afdc authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by David Sterba

Btrfs: Refactor btrfs_lock_cluster() to kill compiler warning

fs/btrfs/extent-tree.c: In function ‘btrfs_lock_cluster’:
fs/btrfs/extent-tree.c:6399: warning: ‘used_bg’ may be used uninitialized in this function

  - Replace "again: ... goto again;" by standard C "while (1) { ... }",
  - Move block not processed during the first iteration of the loop to the
    end of the loop, which allows to kill the "locked" variable,
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Reviewed-and-Tested-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
[ the compilation warning has been fixed by other patch, now we want to
  clean up the function ]
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 0713d90c
...@@ -7025,36 +7025,35 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group, ...@@ -7025,36 +7025,35 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group,
int delalloc) int delalloc)
{ {
struct btrfs_block_group_cache *used_bg = NULL; struct btrfs_block_group_cache *used_bg = NULL;
bool locked = false;
again:
spin_lock(&cluster->refill_lock); spin_lock(&cluster->refill_lock);
if (locked) { while (1) {
if (used_bg == cluster->block_group) used_bg = cluster->block_group;
if (!used_bg)
return NULL;
if (used_bg == block_group)
return used_bg; return used_bg;
up_read(&used_bg->data_rwsem); btrfs_get_block_group(used_bg);
btrfs_put_block_group(used_bg);
}
used_bg = cluster->block_group; if (!delalloc)
if (!used_bg) return used_bg;
return NULL;
if (used_bg == block_group) if (down_read_trylock(&used_bg->data_rwsem))
return used_bg; return used_bg;
btrfs_get_block_group(used_bg); spin_unlock(&cluster->refill_lock);
if (!delalloc) down_read(&used_bg->data_rwsem);
return used_bg;
if (down_read_trylock(&used_bg->data_rwsem)) spin_lock(&cluster->refill_lock);
return used_bg; if (used_bg == cluster->block_group)
return used_bg;
spin_unlock(&cluster->refill_lock); up_read(&used_bg->data_rwsem);
down_read(&used_bg->data_rwsem); btrfs_put_block_group(used_bg);
locked = true; }
goto again;
} }
static inline void static inline void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment