提交 149c4921 编写于 作者: E Eric Blake

libvirtd: fix bug when shrinking number of clients

* daemon/libvirtd.c (qemudRunLoop): Pass allocation size, not
current count, to VIR_SHRINK_N.
* docs/hacking.html.in: Update doc example.
* HACKING: Regenerate.
上级 c73bd6f3
...@@ -347,13 +347,14 @@ scales better, but requires tracking allocation separately from usage) ...@@ -347,13 +347,14 @@ scales better, but requires tracking allocation separately from usage)
- To trim an array of domains to have one less element: - To trim an array of domains from its allocated size down to the actual used
size:
virDomainPtr domains; virDomainPtr domains;
size_t ndomains = x; size_t ndomains = x;
size_t ndomains_max = y; size_t ndomains_max = y;
VIR_SHRINK_N(domains, ndomains_max, 1); VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains);
......
...@@ -2362,7 +2362,8 @@ static void *qemudRunLoop(void *opaque) { ...@@ -2362,7 +2362,8 @@ static void *qemudRunLoop(void *opaque) {
server->clients + i + 1, server->clients + i + 1,
sizeof (*server->clients) * (server->nclients - i)); sizeof (*server->clients) * (server->nclients - i));
VIR_SHRINK_N(server->clients, server->nclients, 0); VIR_SHRINK_N(server->clients, server->nclients_max,
server->nclients_max - server->nclients);
goto reprocess; goto reprocess;
} }
} }
......
...@@ -426,14 +426,15 @@ ...@@ -426,14 +426,15 @@
</pre> </pre>
</li> </li>
<li><p>To trim an array of domains to have one less element:</p> <li><p>To trim an array of domains from its allocated size down
to the actual used size:</p>
<pre> <pre>
virDomainPtr domains; virDomainPtr domains;
size_t ndomains = x; size_t ndomains = x;
size_t ndomains_max = y; size_t ndomains_max = y;
VIR_SHRINK_N(domains, ndomains_max, 1); VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains);
</pre></li> </pre></li>
<li><p>To free an array of domains:</p> <li><p>To free an array of domains:</p>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册