Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+20 −21
Original line number Diff line number Diff line
@@ -7025,17 +7025,9 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group,
		   int delalloc)
{
	struct btrfs_block_group_cache *used_bg = NULL;
	bool locked = false;
again:
	spin_lock(&cluster->refill_lock);
	if (locked) {
		if (used_bg == cluster->block_group)
			return used_bg;

		up_read(&used_bg->data_rwsem);
		btrfs_put_block_group(used_bg);
	}

	spin_lock(&cluster->refill_lock);
	while (1) {
		used_bg = cluster->block_group;
		if (!used_bg)
			return NULL;
@@ -7052,9 +7044,16 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group,
			return used_bg;

		spin_unlock(&cluster->refill_lock);

		down_read(&used_bg->data_rwsem);
	locked = true;
	goto again;

		spin_lock(&cluster->refill_lock);
		if (used_bg == cluster->block_group)
			return used_bg;

		up_read(&used_bg->data_rwsem);
		btrfs_put_block_group(used_bg);
	}
}

static inline void