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: Geert Uytterhoeven <geert@linux-m68k.org> Reviewed-and-Tested-by: Miao 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: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
0713d90c75
commit
6719afdcf8
|
@ -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) {
|
||||||
|
used_bg = cluster->block_group;
|
||||||
|
if (!used_bg)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (used_bg == block_group)
|
||||||
|
return used_bg;
|
||||||
|
|
||||||
|
btrfs_get_block_group(used_bg);
|
||||||
|
|
||||||
|
if (!delalloc)
|
||||||
|
return used_bg;
|
||||||
|
|
||||||
|
if (down_read_trylock(&used_bg->data_rwsem))
|
||||||
|
return used_bg;
|
||||||
|
|
||||||
|
spin_unlock(&cluster->refill_lock);
|
||||||
|
|
||||||
|
down_read(&used_bg->data_rwsem);
|
||||||
|
|
||||||
|
spin_lock(&cluster->refill_lock);
|
||||||
if (used_bg == cluster->block_group)
|
if (used_bg == cluster->block_group)
|
||||||
return used_bg;
|
return used_bg;
|
||||||
|
|
||||||
up_read(&used_bg->data_rwsem);
|
up_read(&used_bg->data_rwsem);
|
||||||
btrfs_put_block_group(used_bg);
|
btrfs_put_block_group(used_bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
used_bg = cluster->block_group;
|
|
||||||
if (!used_bg)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (used_bg == block_group)
|
|
||||||
return used_bg;
|
|
||||||
|
|
||||||
btrfs_get_block_group(used_bg);
|
|
||||||
|
|
||||||
if (!delalloc)
|
|
||||||
return used_bg;
|
|
||||||
|
|
||||||
if (down_read_trylock(&used_bg->data_rwsem))
|
|
||||||
return used_bg;
|
|
||||||
|
|
||||||
spin_unlock(&cluster->refill_lock);
|
|
||||||
down_read(&used_bg->data_rwsem);
|
|
||||||
locked = true;
|
|
||||||
goto again;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
|
Loading…
Reference in New Issue