[1/6] bitmap: fix opencoded bitmap_allocate_region()

Message ID 20230727020207.36314-2-yury.norov@gmail.com
State New
Headers
Series bitmap: cleanup bitmap_*_region() implementation |

Commit Message

Yury Norov July 27, 2023, 2:02 a.m. UTC
  bitmap_find_region() opencodes bitmap_allocate_region(). Fix it.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
---
 lib/bitmap.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
  

Comments

Andy Shevchenko July 27, 2023, 10:04 a.m. UTC | #1
On Wed, Jul 26, 2023 at 07:02:02PM -0700, Yury Norov wrote:
> bitmap_find_region() opencodes bitmap_allocate_region(). Fix it.

...

> +	for (pos = 0 ; (end = pos + (1U << order)) <= bits; pos = end)

In the other patch you use BIT(order), why not here?

> +		if (!bitmap_allocate_region(bitmap, pos, order))
> +			return pos;
  

Patch

diff --git a/lib/bitmap.c b/lib/bitmap.c
index ddb31015e38a..0bed9d943d96 100644
--- a/lib/bitmap.c
+++ b/lib/bitmap.c
@@ -1314,12 +1314,10 @@  int bitmap_find_free_region(unsigned long *bitmap, unsigned int bits, int order)
 {
 	unsigned int pos, end;		/* scans bitmap by regions of size order */
 
-	for (pos = 0 ; (end = pos + (1U << order)) <= bits; pos = end) {
-		if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE))
-			continue;
-		__reg_op(bitmap, pos, order, REG_OP_ALLOC);
-		return pos;
-	}
+	for (pos = 0 ; (end = pos + (1U << order)) <= bits; pos = end)
+		if (!bitmap_allocate_region(bitmap, pos, order))
+			return pos;
+
 	return -ENOMEM;
 }
 EXPORT_SYMBOL(bitmap_find_free_region);