提交 e88a08e8 编写于 作者: P Peter Krempa

util: bitmap: Use VIR_SHRINK_N in virBitmapShrink

The function only reduces the size of the bitmap thus we can use the
appropriate shrinking function which also does not have any return
value.

Since virBitmapShrink now does not return any value callers need to be
fixed as well.
上级 bf924e8e
......@@ -18453,8 +18453,7 @@ virDomainCachetuneDefParse(virDomainDefPtr def,
/* We need to limit the bitmap to number of vCPUs. If there's nothing left,
* then we can just clean up and return 0 immediately */
if (virBitmapShrink(vcpus, def->maxvcpus) < 0)
goto cleanup;
virBitmapShrink(vcpus, def->maxvcpus);
if (virBitmapIsAllClear(vcpus)) {
ret = 0;
......
......@@ -1292,15 +1292,16 @@ virBitmapSubtract(virBitmapPtr a,
* Reduces the bitmap to size @b. Nothing will change if the size is already
* smaller than or equal to @b.
*/
int
void
virBitmapShrink(virBitmapPtr map,
size_t b)
{
size_t toremove;
size_t nl = 0;
size_t nb = 0;
if (!map)
return 0;
return;
if (map->nbits >= b)
map->nbits = b;
......@@ -1309,14 +1310,13 @@ virBitmapShrink(virBitmapPtr map,
nb = map->nbits % VIR_BITMAP_BITS_PER_UNIT;
map->map[nl] &= ((1UL << nb) - 1);
nl++;
if (nl == map->map_len)
return 0;
toremove = map->map_alloc - (nl + 1);
if (VIR_REALLOC_N(map->map, nl) < 0)
return -1;
if (toremove == 0)
return;
map->map_len = nl;
map->map_alloc = nl;
return 0;
VIR_SHRINK_N(map->map, map->map_alloc, toremove);
/* length needs to be fixed as well */
map->map_len = map->map_alloc;
}
......@@ -153,6 +153,6 @@ void virBitmapIntersect(virBitmapPtr a, virBitmapPtr b)
void virBitmapSubtract(virBitmapPtr a, virBitmapPtr b)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int virBitmapShrink(virBitmapPtr map, size_t b);
void virBitmapShrink(virBitmapPtr map, size_t b);
#endif
......@@ -952,8 +952,7 @@ virResctrlAllocParseProcessCache(virResctrlInfoPtr resctrl,
goto cleanup;
}
if (virBitmapShrink(mask, resctrl->levels[level]->types[type]->bits) < 0)
goto cleanup;
virBitmapShrink(mask, resctrl->levels[level]->types[type]->bits);
if (virResctrlAllocUpdateMask(alloc, level, type, cache_id, mask) < 0)
goto cleanup;
......
......@@ -656,12 +656,10 @@ test12(const void *opaque ATTRIBUTE_UNUSED)
TEST_MAP(1024, "34,1023");
if (virBitmapShrink(map, 35) < 0)
goto cleanup;
virBitmapShrink(map, 35);
TEST_MAP(35, "34");
if (virBitmapShrink(map, 34) < 0)
goto cleanup;
virBitmapShrink(map, 34);
TEST_MAP(34, "");
ret = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册