Commit f1591a8b authored by Kemeng Shi's avatar Kemeng Shi Committed by Jens Axboe
Browse files

sbitmap: remove unnecessary calculation of alloc_hint in __sbitmap_get_shallow



Updates to alloc_hint in the loop in __sbitmap_get_shallow() are mostly
pointless and equivalent to setting alloc_hint to zero (because
SB_NR_TO_BIT() considers only low sb->shift bits from alloc_hint). So
simplify the logic.

Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarKemeng Shi <shikemeng@huaweicloud.com>
Link: https://lore.kernel.org/r/20230116205059.3821738-2-shikemeng@huaweicloud.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent f1c006f1
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -243,6 +243,7 @@ static int __sbitmap_get_shallow(struct sbitmap *sb,
	int nr = -1;

	index = SB_NR_TO_INDEX(sb, alloc_hint);
	alloc_hint = SB_NR_TO_BIT(sb, alloc_hint);

	for (i = 0; i < sb->map_nr; i++) {
again:
@@ -250,7 +251,7 @@ static int __sbitmap_get_shallow(struct sbitmap *sb,
					min_t(unsigned int,
					      __map_depth(sb, index),
					      shallow_depth),
					SB_NR_TO_BIT(sb, alloc_hint), true);
					alloc_hint, true);
		if (nr != -1) {
			nr += index << sb->shift;
			break;
@@ -260,13 +261,9 @@ static int __sbitmap_get_shallow(struct sbitmap *sb,
			goto again;

		/* Jump to next index. */
		index++;
		alloc_hint = index << sb->shift;

		if (index >= sb->map_nr) {
			index = 0;
		alloc_hint = 0;
		}
		if (++index >= sb->map_nr)
			index = 0;
	}

	return nr;