summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2014-05-04 13:35:32 +0200
committerGuido Günther <agx@sigxcpu.org>2014-05-04 13:35:32 +0200
commitb38846c74874f77464e63fcbc0da39cbe73c5670 (patch)
treea3165ac8394f40f873b6d0b809616a34348bac11 /docs
parent1190eb8d003c872dcb203f9e3dade0c92f14cc9c (diff)
New upstream version 1.2.4
Diffstat (limited to 'docs')
-rw-r--r--docs/devhelp/libvirt-libvirt.html20
-rw-r--r--docs/html/libvirt-libvirt.html8
-rw-r--r--docs/libvirt-api.xml20
-rw-r--r--docs/libvirt-refs.xml70
-rw-r--r--docs/news.html274
-rw-r--r--docs/news.html.in284
6 files changed, 639 insertions, 37 deletions
diff --git a/docs/devhelp/libvirt-libvirt.html b/docs/devhelp/libvirt-libvirt.html
index 7128b7130..e871d0402 100644
--- a/docs/devhelp/libvirt-libvirt.html
+++ b/docs/devhelp/libvirt-libvirt.html
@@ -3568,7 +3568,11 @@ having hotplug semantics, is only allowed on an active domain.
For compatibility, this method can also be used to change the media
in an existing CDROM/Floppy device, however, applications are
-recommended to use the virDomainUpdateDeviceFlag method instead.</p>
+recommended to use the virDomainUpdateDeviceFlag method instead.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainAttachDeviceFlags"/>virDomainAttachDeviceFlags ()</h3><pre class="programlisting">int virDomainAttachDeviceFlags (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml, <br/> unsigned int flags)<br/>
@@ -3586,7 +3590,11 @@ persisted device allocation.
For compatibility, this method can also be used to change the media
in an existing CDROM/Floppy device, however, applications are
-recommended to use the virDomainUpdateDeviceFlag method instead.</p>
+recommended to use the virDomainUpdateDeviceFlag method instead.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainBlockCommit"/>virDomainBlockCommit ()</h3><pre class="programlisting">int virDomainBlockCommit (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * disk, <br/> const char * base, <br/> const char * top, <br/> unsigned long bandwidth, <br/> unsigned int flags)<br/>
@@ -4132,7 +4140,11 @@ ignore the shutdown request).</p>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainDetachDevice"/>virDomainDetachDevice ()</h3><pre class="programlisting">int virDomainDetachDevice (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml)<br/>
</pre><p>Destroy a virtual device attachment to backend. This function,
-having hot-unplug semantics, is only allowed on an active domain.</p>
+having hot-unplug semantics, is only allowed on an active domain.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainDetachDeviceFlags"/>virDomainDetachDeviceFlags ()</h3><pre class="programlisting">int virDomainDetachDeviceFlags (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/> const char * xml, <br/> unsigned int flags)<br/>
@@ -4162,7 +4174,7 @@ various failures on subsequent operations. To check whether the device was
successfully removed, either recheck domain configuration using
virDomainGetXMLDesc() or add handler for VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
event. In case the device is already gone when <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a></p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Returns 0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>domain</tt></i>:</span></td><td>pointer to domain object</td></tr><tr><td><span class="term"><i><tt>xml</tt></i>:</span></td><td>pointer to XML description of one device</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition. Returns 0 in case of success, -1 in case of failure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="virDomainFSTrim"/>virDomainFSTrim ()</h3><pre class="programlisting">int virDomainFSTrim (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/> const char * mountPoint, <br/> unsigned long long minimum, <br/> unsigned int flags)<br/>
</pre><p>Calls FITRIM within the guest (hence guest agent may be
diff --git a/docs/html/libvirt-libvirt.html b/docs/html/libvirt-libvirt.html
index d07788068..d864342ef 100644
--- a/docs/html/libvirt-libvirt.html
+++ b/docs/html/libvirt-libvirt.html
@@ -1270,9 +1270,9 @@ free(domains);</pre></div><dl class="variablelist"><dt>conn</dt><dd>Pointer to t
<span class="type">int</span> interval,
<span class="type">unsigned int</span> count)</pre><div class="description"><p>Start sending keepalive messages after @interval seconds of inactivity and consider the connection to be broken when no response is received after @count keepalive messages sent in a row. In other words, sending count + 1 keepalive message results in closing the connection. When @interval is &lt;= 0, no keepalive messages will be sent. When @count is 0, the connection will be automatically closed after @interval seconds of inactivity without sending any keepalive messages.</p><p>Note: The client has to implement and run an event loop with <a href="libvirt-libvirt.html#virEventRegisterImpl">virEventRegisterImpl</a>() or <a href="libvirt-libvirt.html#virEventRegisterDefaultImpl">virEventRegisterDefaultImpl</a>() to be able to use keepalive messages. Failure to do so may result in connections being closed unexpectedly.</p><p>Note: This API function controls only keepalive messages sent by the client. If the server is configured to use keepalive you still need to run the event loop to respond to them, even if you disable keepalives by this function.</p></div><dl class="variablelist"><dt>conn</dt><dd>pointer to a hypervisor connection</dd><dt>interval</dt><dd>number of seconds of inactivity before a keepalive message is sent</dd><dt>count</dt><dd>number of messages that can be sent in a row</dd><dt>Returns</dt><dd>-1 on error, 0 on success, 1 when remote party doesn't support keepalive messages.</dd></dl><div class="acl"></div><h3><a name="virConnectUnregisterCloseCallback" id="virConnectUnregisterCloseCallback"><code>virConnectUnregisterCloseCallback</code></a><a class="headerlink" href="#virConnectUnregisterCloseCallback" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virConnectUnregisterCloseCallback (<span class="type"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a></span> conn,
<span class="type"><a href="libvirt-libvirt.html#virConnectCloseFunc">virConnectCloseFunc</a></span> cb)</pre><div class="description"><p>Unregisters the callback previously set with the <a href="libvirt-libvirt.html#virConnectRegisterCloseCallback">virConnectRegisterCloseCallback</a> method. The callback will no longer receive notifications when the connection closes. If a <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> was provided at time of registration, it will be invoked</p></div><dl class="variablelist"><dt>conn</dt><dd>pointer to connection object</dd><dt>cb</dt><dd>pointer to the current registered callback</dd><dt>Returns</dt><dd>0 on success, -1 on error</dd></dl><div class="acl"></div><h3><a name="virDomainAbortJob" id="virDomainAbortJob"><code>virDomainAbortJob</code></a><a class="headerlink" href="#virDomainAbortJob" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainAbortJob (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain)</pre><div class="description"><p>Requests that the current background job be aborted at the soonest opportunity.</p></div><dl class="variablelist"><dt>domain</dt><dd>a domain object</dd><dt>Returns</dt><dd>0 in case of success and -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainAttachDevice" id="virDomainAttachDevice"><code>virDomainAttachDevice</code></a><a class="headerlink" href="#virDomainAttachDevice" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainAttachDevice (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
- <span class="type">const char *</span> xml)</pre><div class="description"><p>Create a virtual device attachment to backend. This function, having hotplug semantics, is only allowed on an active domain.</p><p>For compatibility, this method can also be used to change the media in an existing CDROM/Floppy device, however, applications are recommended to use the virDomainUpdateDeviceFlag method instead.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainAttachDeviceFlags" id="virDomainAttachDeviceFlags"><code>virDomainAttachDeviceFlags</code></a><a class="headerlink" href="#virDomainAttachDeviceFlags" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainAttachDeviceFlags (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
+ <span class="type">const char *</span> xml)</pre><div class="description"><p>Create a virtual device attachment to backend. This function, having hotplug semantics, is only allowed on an active domain.</p><p>For compatibility, this method can also be used to change the media in an existing CDROM/Floppy device, however, applications are recommended to use the virDomainUpdateDeviceFlag method instead.</p><p>Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainAttachDeviceFlags" id="virDomainAttachDeviceFlags"><code>virDomainAttachDeviceFlags</code></a><a class="headerlink" href="#virDomainAttachDeviceFlags" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainAttachDeviceFlags (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
<span class="type">const char *</span> xml,
- <span class="type">unsigned int</span> flags)</pre><div class="description"><p>Attach a virtual device to a domain, using the flags parameter to control how the device is attached. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CURRENT">VIR_DOMAIN_AFFECT_CURRENT</a> specifies that the device allocation is made based on current domain state. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_LIVE">VIR_DOMAIN_AFFECT_LIVE</a> specifies that the device shall be allocated to the active domain instance only and is not added to the persisted domain configuration. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CONFIG">VIR_DOMAIN_AFFECT_CONFIG</a> specifies that the device shall be allocated to the persisted domain configuration only. Note that the target hypervisor must return an error if unable to satisfy flags. E.g. the hypervisor driver will return failure if LIVE is specified but it only supports modifying the persisted device allocation.</p><p>For compatibility, this method can also be used to change the media in an existing CDROM/Floppy device, however, applications are recommended to use the virDomainUpdateDeviceFlag method instead.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>flags</dt><dd>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainBlockCommit" id="virDomainBlockCommit"><code>virDomainBlockCommit</code></a><a class="headerlink" href="#virDomainBlockCommit" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainBlockCommit (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> dom,
+ <span class="type">unsigned int</span> flags)</pre><div class="description"><p>Attach a virtual device to a domain, using the flags parameter to control how the device is attached. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CURRENT">VIR_DOMAIN_AFFECT_CURRENT</a> specifies that the device allocation is made based on current domain state. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_LIVE">VIR_DOMAIN_AFFECT_LIVE</a> specifies that the device shall be allocated to the active domain instance only and is not added to the persisted domain configuration. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CONFIG">VIR_DOMAIN_AFFECT_CONFIG</a> specifies that the device shall be allocated to the persisted domain configuration only. Note that the target hypervisor must return an error if unable to satisfy flags. E.g. the hypervisor driver will return failure if LIVE is specified but it only supports modifying the persisted device allocation.</p><p>For compatibility, this method can also be used to change the media in an existing CDROM/Floppy device, however, applications are recommended to use the virDomainUpdateDeviceFlag method instead.</p><p>Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>flags</dt><dd>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainBlockCommit" id="virDomainBlockCommit"><code>virDomainBlockCommit</code></a><a class="headerlink" href="#virDomainBlockCommit" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainBlockCommit (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> dom,
<span class="type">const char *</span> disk,
<span class="type">const char *</span> base,
<span class="type">const char *</span> top,
@@ -1324,9 +1324,9 @@ free(domains);</pre></div><dl class="variablelist"><dt>conn</dt><dd>Pointer to t
<span class="type">unsigned int</span> flags)</pre><div class="description"><p>Launch a new guest domain, based on an XML description similar to the one returned by <a href="libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a>() This function may require privileged access to the hypervisor. The domain is not persistent, so its definition will disappear when it is destroyed, or if the host is restarted (see <a href="libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a>() to define persistent domains).</p><p>@files provides an array of file descriptors which will be made available to the 'init' process of the guest. The file handles exposed to the guest will be renumbered to start from 3 (ie immediately following stderr). This is only supported for guests which use container based virtualization technology.</p><p>If the <a href="libvirt-libvirt.html#VIR_DOMAIN_START_PAUSED">VIR_DOMAIN_START_PAUSED</a> flag is set, the guest domain will be started, but its CPUs will remain paused. The CPUs can later be manually started using <a href="libvirt-libvirt.html#virDomainResume">virDomainResume</a>.</p><p>If the <a href="libvirt-libvirt.html#VIR_DOMAIN_START_AUTODESTROY">VIR_DOMAIN_START_AUTODESTROY</a> flag is set, the guest domain will be automatically destroyed when the <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> object is finally released. This will also happen if the client application crashes / loses its connection to the libvirtd daemon. Any domains marked for auto destroy will block attempts at migration, save-to-file, or snapshots.</p></div><dl class="variablelist"><dt>conn</dt><dd>pointer to the hypervisor connection</dd><dt>xmlDesc</dt><dd>string containing an XML description of the domain</dd><dt>nfiles</dt><dd>number of file descriptors passed</dd><dt>files</dt><dd>list of file descriptors passed</dd><dt>flags</dt><dd>bitwise-OR of supported <a href="libvirt-libvirt.html#virDomainCreateFlags">virDomainCreateFlags</a></dd><dt>Returns</dt><dd>a new domain object or NULL in case of failure</dd></dl><div class="acl"></div><h3><a name="virDomainDefineXML" id="virDomainDefineXML"><code>virDomainDefineXML</code></a><a class="headerlink" href="#virDomainDefineXML" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> virDomainDefineXML (<span class="type"><a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a></span> conn,
<span class="type">const char *</span> xml)</pre><div class="description"><p>Define a domain, but does not start it. This definition is persistent, until explicitly undefined with <a href="libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a>(). A previous definition for this domain would be overridden if it already exists.</p><p>Some hypervisors may prevent this operation if there is a current block copy operation on a transient domain with the same id as the domain being defined; in that case, use <a href="libvirt-libvirt.html#virDomainBlockJobAbort">virDomainBlockJobAbort</a>() to stop the block copy first.</p></div><dl class="variablelist"><dt>conn</dt><dd>pointer to the hypervisor connection</dd><dt>xml</dt><dd>the XML description for the domain, preferably in UTF-8</dd><dt>Returns</dt><dd>NULL in case of error, a pointer to the domain otherwise</dd></dl><div class="acl"></div><h3><a name="virDomainDestroy" id="virDomainDestroy"><code>virDomainDestroy</code></a><a class="headerlink" href="#virDomainDestroy" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainDestroy (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain)</pre><div class="description"><p>Destroy the domain object. The running instance is shutdown if not down already and all resources used by it are given back to the hypervisor. This does not free the associated <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> object. This function may require privileged access.</p><p><a href="libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a> first requests that a guest terminate (e.g. SIGTERM), then waits for it to comply. After a reasonable timeout, if the guest still exists, <a href="libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a> will forcefully terminate the guest (e.g. SIGKILL) if necessary (which may produce undesirable results, for example unflushed disk cache in the guest). To avoid this possibility, it's recommended to instead call <a href="libvirt-libvirt.html#virDomainDestroyFlags">virDomainDestroyFlags</a>, sending the <a href="libvirt-libvirt.html#VIR_DOMAIN_DESTROY_GRACEFUL">VIR_DOMAIN_DESTROY_GRACEFUL</a> flag.</p><p>If the domain is transient and has any snapshot metadata (see <a href="libvirt-libvirt.html#virDomainSnapshotNum">virDomainSnapshotNum</a>()), then that metadata will automatically be deleted when the domain quits.</p></div><dl class="variablelist"><dt>domain</dt><dd>a domain object</dd><dt>Returns</dt><dd>0 in case of success and -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainDestroyFlags" id="virDomainDestroyFlags"><code>virDomainDestroyFlags</code></a><a class="headerlink" href="#virDomainDestroyFlags" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainDestroyFlags (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
<span class="type">unsigned int</span> flags)</pre><div class="description"><p>Destroy the domain object. The running instance is shutdown if not down already and all resources used by it are given back to the hypervisor. This does not free the associated <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> object. This function may require privileged access.</p><p>Calling this function with no @flags set (equal to zero) is equivalent to calling <a href="libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a>, and after a reasonable timeout will forcefully terminate the guest (e.g. SIGKILL) if necessary (which may produce undesirable results, for example unflushed disk cache in the guest). Including <a href="libvirt-libvirt.html#VIR_DOMAIN_DESTROY_GRACEFUL">VIR_DOMAIN_DESTROY_GRACEFUL</a> in the flags will prevent the forceful termination of the guest, and <a href="libvirt-libvirt.html#virDomainDestroyFlags">virDomainDestroyFlags</a> will instead return an error if the guest doesn't terminate by the end of the timeout; at that time, the management application can decide if calling again without <a href="libvirt-libvirt.html#VIR_DOMAIN_DESTROY_GRACEFUL">VIR_DOMAIN_DESTROY_GRACEFUL</a> is appropriate.</p><p>Another alternative which may produce cleaner results for the guest's disks is to use <a href="libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a>() instead, but that depends on guest support (some hypervisor/guest combinations may ignore the shutdown request).</p></div><dl class="variablelist"><dt>domain</dt><dd>a domain object</dd><dt>flags</dt><dd>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDestroyFlagsValues">virDomainDestroyFlagsValues</a></dd><dt>Returns</dt><dd>0 in case of success and -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainDetachDevice" id="virDomainDetachDevice"><code>virDomainDetachDevice</code></a><a class="headerlink" href="#virDomainDetachDevice" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainDetachDevice (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
- <span class="type">const char *</span> xml)</pre><div class="description"><p>Destroy a virtual device attachment to backend. This function, having hot-unplug semantics, is only allowed on an active domain.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainDetachDeviceFlags" id="virDomainDetachDeviceFlags"><code>virDomainDetachDeviceFlags</code></a><a class="headerlink" href="#virDomainDetachDeviceFlags" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainDetachDeviceFlags (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
+ <span class="type">const char *</span> xml)</pre><div class="description"><p>Destroy a virtual device attachment to backend. This function, having hot-unplug semantics, is only allowed on an active domain.</p><p>Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition.</p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>Returns</dt><dd>0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainDetachDeviceFlags" id="virDomainDetachDeviceFlags"><code>virDomainDetachDeviceFlags</code></a><a class="headerlink" href="#virDomainDetachDeviceFlags" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainDetachDeviceFlags (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
<span class="type">const char *</span> xml,
- <span class="type">unsigned int</span> flags)</pre><div class="description"><p>Detach a virtual device from a domain, using the flags parameter to control how the device is detached. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CURRENT">VIR_DOMAIN_AFFECT_CURRENT</a> specifies that the device allocation is removed based on current domain state. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_LIVE">VIR_DOMAIN_AFFECT_LIVE</a> specifies that the device shall be deallocated from the active domain instance only and is not from the persisted domain configuration. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CONFIG">VIR_DOMAIN_AFFECT_CONFIG</a> specifies that the device shall be deallocated from the persisted domain configuration only. Note that the target hypervisor must return an error if unable to satisfy flags. E.g. the hypervisor driver will return failure if LIVE is specified but it only supports removing the persisted device allocation.</p><p>Some hypervisors may prevent this operation if there is a current block copy operation on the device being detached; in that case, use <a href="libvirt-libvirt.html#virDomainBlockJobAbort">virDomainBlockJobAbort</a>() to stop the block copy first.</p><p>Beware that depending on the hypervisor and device type, detaching a device from a running domain may be asynchronous. That is, calling <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a> may just request device removal while the device is actually removed later (in cooperation with a guest OS). Previously, this fact was ignored and the device could have been removed from domain configuration before it was actually removed by the hypervisor causing various failures on subsequent operations. To check whether the device was successfully removed, either recheck domain configuration using <a href="libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a>() or add handler for <a href="libvirt-libvirt.html#VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED">VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED</a> event. In case the device is already gone when <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a></p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>flags</dt><dd>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></dd><dt>Returns</dt><dd>the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Returns 0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainFSTrim" id="virDomainFSTrim"><code>virDomainFSTrim</code></a><a class="headerlink" href="#virDomainFSTrim" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainFSTrim (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> dom,
+ <span class="type">unsigned int</span> flags)</pre><div class="description"><p>Detach a virtual device from a domain, using the flags parameter to control how the device is detached. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CURRENT">VIR_DOMAIN_AFFECT_CURRENT</a> specifies that the device allocation is removed based on current domain state. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_LIVE">VIR_DOMAIN_AFFECT_LIVE</a> specifies that the device shall be deallocated from the active domain instance only and is not from the persisted domain configuration. <a href="libvirt-libvirt.html#VIR_DOMAIN_AFFECT_CONFIG">VIR_DOMAIN_AFFECT_CONFIG</a> specifies that the device shall be deallocated from the persisted domain configuration only. Note that the target hypervisor must return an error if unable to satisfy flags. E.g. the hypervisor driver will return failure if LIVE is specified but it only supports removing the persisted device allocation.</p><p>Some hypervisors may prevent this operation if there is a current block copy operation on the device being detached; in that case, use <a href="libvirt-libvirt.html#virDomainBlockJobAbort">virDomainBlockJobAbort</a>() to stop the block copy first.</p><p>Beware that depending on the hypervisor and device type, detaching a device from a running domain may be asynchronous. That is, calling <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a> may just request device removal while the device is actually removed later (in cooperation with a guest OS). Previously, this fact was ignored and the device could have been removed from domain configuration before it was actually removed by the hypervisor causing various failures on subsequent operations. To check whether the device was successfully removed, either recheck domain configuration using <a href="libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a>() or add handler for <a href="libvirt-libvirt.html#VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED">VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED</a> event. In case the device is already gone when <a href="libvirt-libvirt.html#virDomainDetachDeviceFlags">virDomainDetachDeviceFlags</a></p></div><dl class="variablelist"><dt>domain</dt><dd>pointer to domain object</dd><dt>xml</dt><dd>pointer to XML description of one device</dd><dt>flags</dt><dd>bitwise-OR of <a href="libvirt-libvirt.html#virDomainDeviceModifyFlags">virDomainDeviceModifyFlags</a></dd><dt>Returns</dt><dd>the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition. Returns 0 in case of success, -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainFSTrim" id="virDomainFSTrim"><code>virDomainFSTrim</code></a><a class="headerlink" href="#virDomainFSTrim" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainFSTrim (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> dom,
<span class="type">const char *</span> mountPoint,
<span class="type">unsigned long long</span> minimum,
<span class="type">unsigned int</span> flags)</pre><div class="description"><p>Calls FITRIM within the guest (hence guest agent may be required depending on hypervisor used). Either call it on each mounted filesystem (@mountPoint is NULL) or just on specified @mountPoint. @minimum hints that free ranges smaller than this may be ignored (this is a hint and the guest may not respect it). By increasing this value, the fstrim operation will complete more quickly for filesystems with badly fragmented free space, although not all blocks will be discarded. If @minimum is not zero, the command may fail.</p></div><dl class="variablelist"><dt>dom</dt><dd>a domain object</dd><dt>mountPoint</dt><dd>which mount point to trim</dd><dt>minimum</dt><dd>Minimum contiguous free range to discard in bytes</dd><dt>flags</dt><dd>extra flags, not used yet, so callers should always pass 0</dd><dt>Returns</dt><dd>0 on success, -1 otherwise.</dd></dl><div class="acl"></div><h3><a name="virDomainFree" id="virDomainFree"><code>virDomainFree</code></a><a class="headerlink" href="#virDomainFree" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainFree (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain)</pre><div class="description"><p>Free the domain object. The running instance is kept alive. The data structure is freed and should not be used thereafter.</p></div><dl class="variablelist"><dt>domain</dt><dd>a domain object</dd><dt>Returns</dt><dd>0 in case of success and -1 in case of failure.</dd></dl><div class="acl"></div><h3><a name="virDomainGetAutostart" id="virDomainGetAutostart"><code>virDomainGetAutostart</code></a><a class="headerlink" href="#virDomainGetAutostart" title="Permalink to this headline">¶</a></h3><pre class="api"><span class="type">int</span> virDomainGetAutostart (<span class="type"><a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></span> domain,
diff --git a/docs/libvirt-api.xml b/docs/libvirt-api.xml
index 76166bd5e..ded7fe74f 100644
--- a/docs/libvirt-api.xml
+++ b/docs/libvirt-api.xml
@@ -4131,7 +4131,11 @@ having hotplug semantics, is only allowed on an active domain.
For compatibility, this method can also be used to change the media
in an existing CDROM/Floppy device, however, applications are
-recommended to use the virDomainUpdateDeviceFlag method instead.]]></info>
+recommended to use the virDomainUpdateDeviceFlag method instead.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.]]></info>
<return type='int' info='0 in case of success, -1 in case of failure.'/>
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
<arg name='xml' type='const char *' info='pointer to XML description of one device'/>
@@ -4151,7 +4155,11 @@ persisted device allocation.
For compatibility, this method can also be used to change the media
in an existing CDROM/Floppy device, however, applications are
-recommended to use the virDomainUpdateDeviceFlag method instead.]]></info>
+recommended to use the virDomainUpdateDeviceFlag method instead.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.]]></info>
<return type='int' info='0 in case of success, -1 in case of failure.'/>
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
<arg name='xml' type='const char *' info='pointer to XML description of one device'/>
@@ -4771,7 +4779,11 @@ ignore the shutdown request).]]></info>
</function>
<function name='virDomainDetachDevice' file='libvirt' module='libvirt'>
<info><![CDATA[Destroy a virtual device attachment to backend. This function,
-having hot-unplug semantics, is only allowed on an active domain.]]></info>
+having hot-unplug semantics, is only allowed on an active domain.
+
+Be aware that hotplug changes might not persist across a domain going
+into S4 state (also known as hibernation) unless you also modify the
+persistent domain definition.]]></info>
<return type='int' info='0 in case of success, -1 in case of failure.'/>
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
<arg name='xml' type='const char *' info='pointer to XML description of one device'/>
@@ -4803,7 +4815,7 @@ various failures on subsequent operations. To check whether the device was
successfully removed, either recheck domain configuration using
virDomainGetXMLDesc() or add handler for VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
event. In case the device is already gone when virDomainDetachDeviceFlags]]></info>
- <return type='int' info='the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Returns 0 in case of success, -1 in case of failure.'/>
+ <return type='int' info='the event is delivered before this API call ends. To help existing clients work better in most cases, this API will try to transform an asynchronous device removal that finishes shortly after the request into a synchronous removal. In other words, this API may wait a bit for the removal to complete in case it was not synchronous. Be aware that hotplug changes might not persist across a domain going into S4 state (also known as hibernation) unless you also modify the persistent domain definition. Returns 0 in case of success, -1 in case of failure.'/>
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
<arg name='xml' type='const char *' info='pointer to XML description of one device'/>
<arg name='flags' type='unsigned int' info='bitwise-OR of virDomainDeviceModifyFlags'/>
diff --git a/docs/libvirt-refs.xml b/docs/libvirt-refs.xml
index ea36dd626..9c8a2e71c 100644
--- a/docs/libvirt-refs.xml
+++ b/docs/libvirt-refs.xml
@@ -8204,6 +8204,10 @@
</word>
<word name='across'>
<ref name='VIR_MIGRATE_PARAM_DEST_XML'/>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainMigrateToURI2'/>
<ref name='virStorageVolGetPath'/>
</word>
@@ -8895,7 +8899,11 @@
<ref name='virDomainMigrate2'/>
</word>
<word name='aware'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
<ref name='virDomainBlockCommit'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainSnapshotCreateXML'/>
</word>
</letter>
@@ -9497,8 +9505,12 @@
<ref name='virConnectDomainEventTrayChangeCallback'/>
</word>
<word name='changes'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
<ref name='virDomainBlockCommit'/>
<ref name='virDomainBlockRebase'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainMigrate'/>
<ref name='virDomainMigrate2'/>
<ref name='virDomainMigrateToURI'/>
@@ -10486,9 +10498,13 @@
<ref name='virConnectGetCapabilities'/>
</word>
<word name='definition'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
<ref name='virDomainCreateXML'/>
<ref name='virDomainCreateXMLWithFiles'/>
<ref name='virDomainDefineXML'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainSaveImageDefineXML'/>
<ref name='virInterfaceDefineXML'/>
<ref name='virInterfaceDestroy'/>
@@ -12147,6 +12163,12 @@
<ref name='virStorageVolGetKey'/>
<ref name='virStorageVolLookupByKey'/>
</word>
+ <word name='going'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
+ </word>
<word name='gone'>
<ref name='virDomainDetachDeviceFlags'/>
</word>
@@ -12361,6 +12383,10 @@
<ref name='virConnectListAllDomains'/>
</word>
<word name='hibernation'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainSnapshotCreateXML'/>
</word>
<word name='hierarchy'>
@@ -12432,6 +12458,9 @@
</word>
<word name='hotplug'>
<ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainGetCPUStats'/>
<ref name='virDomainPMSuspendForDuration'/>
</word>
@@ -13283,6 +13312,10 @@
<ref name='virSecretGetUsageType'/>
</word>
<word name='known'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainGetState'/>
<ref name='virInterfaceChangeBegin'/>
</word>
@@ -14088,31 +14121,6 @@
<ref name='VIR_DOMAIN_SCHEDULER_EMULATOR_PERIOD'/>
<ref name='VIR_DOMAIN_SCHEDULER_VCPU_PERIOD'/>
</word>
- <word name='might'>
- <ref name='virConnectListAllDomains'/>
- <ref name='virDomainBlockCommit'/>
- <ref name='virDomainBlockPeek'/>
- <ref name='virDomainBlockPull'/>
- <ref name='virDomainBlockRebase'/>
- <ref name='virDomainBlockStats'/>
- <ref name='virDomainBlockStatsFlags'/>
- <ref name='virDomainGetBlkioParameters'/>
- <ref name='virDomainGetBlockIoTune'/>
- <ref name='virDomainGetCPUStats'/>
- <ref name='virDomainGetInterfaceParameters'/>
- <ref name='virDomainGetMemoryParameters'/>
- <ref name='virDomainGetNumaParameters'/>
- <ref name='virDomainGetSchedulerParameters'/>
- <ref name='virDomainGetSchedulerParametersFlags'/>
- <ref name='virDomainListAllSnapshots'/>
- <ref name='virDomainSnapshotListAllChildren'/>
- <ref name='virDomainSnapshotListChildrenNames'/>
- <ref name='virDomainSnapshotListNames'/>
- <ref name='virDomainSnapshotNum'/>
- <ref name='virDomainSnapshotNumChildren'/>
- <ref name='virNodeGetMemoryParameters'/>
- <ref name='virStorageVolResize'/>
- </word>
<word name='migrate'>
<ref name='virDomainMigrate'/>
<ref name='virDomainMigrate2'/>
@@ -14215,6 +14223,10 @@
<ref name='virDomainSetVcpusFlags'/>
</word>
<word name='modify'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virEventUpdateHandleFunc'/>
<ref name='virEventUpdateTimeoutFunc'/>
<ref name='virInterfaceDefineXML'/>
@@ -15315,6 +15327,10 @@
<ref name='virStorageVolCreateXMLFrom'/>
</word>
<word name='persist'>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainMigrate'/>
<ref name='virDomainMigrate2'/>
<ref name='virDomainMigrateToURI'/>
@@ -18807,7 +18823,11 @@
</word>
<word name='unless'>
<ref name='_virDomainJobInfo'/>
+ <ref name='virDomainAttachDevice'/>
+ <ref name='virDomainAttachDeviceFlags'/>
<ref name='virDomainBlockRebase'/>
+ <ref name='virDomainDetachDevice'/>
+ <ref name='virDomainDetachDeviceFlags'/>
<ref name='virDomainGetBlockIoTune'/>
<ref name='virDomainGetCPUStats'/>
<ref name='virDomainGetXMLDesc'/>
diff --git a/docs/news.html b/docs/news.html
index 9b8bff0db..fb0193978 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -88,6 +88,280 @@
<h1>Releases</h1>
<p>Here is the list of official releases, it is also possible to just use the <a href="downloads.html" shape="rect">GIT version or snapshot</a>, contact the mailing list
and check the <a href="http://libvirt.org/git/?p=libvirt.git;a=log" shape="rect">GIT log</a> to gauge progress.</p>
+ <h3>1.2.4: May 4 2014</h3>
+ <ul><li> Documentation:<br />
+ Device{Attach,Detach}: Document S4 limitations (Michal Privoznik),<br />
+ Add a new example to illustrate domain migration (Sahid Orentino Ferdjaoui),<br />
+ update docs for setting the QEMU BIOS path (Chen Hanxiao),<br />
+ document nmdm type console (Roman Bogorodskiy),<br />
+ Fix typos in src/* (Nehal J Wani),<br />
+ document that vfio is default for hostdev networks too (Laine Stump),<br />
+ cpu: Add documentation for CPU driver APIs (Jiri Denemark),<br />
+ virsh: Fix comment of vshCmdInfo (Li Yang)<br />
+ </li><li> Portability:<br />
+ Explicitly link virfirewalltest and virsystemdtest against dbus (Guido Günther),<br />
+ qemuxml2argvtest: Don't use privileged mode upfront (Guido Günther),<br />
+ tests: skip virfirewalltest on non-Linux systems (Roman Bogorodskiy),<br />
+ tests: don't fail with newer gnutls (Martin Kletzander),<br />
+ fix build with older gcc (Ján Tomko),<br />
+ storage: reject negative indices (Eric Blake),<br />
+ networkxml2firewalltest: fix build failure on freebsd (Pavel Hrdina),<br />
+ virfirewall: fix build on freebsd (Pavel Hrdina),<br />
+ Disable libvirtd by default when building on Win32 (Daniel P. Berrange),<br />
+ Don't use SO_REUSEADDR on Win32 platforms (Daniel P. Berrange),<br />
+ Conditionalize include of dlfcn.h in virmock.h (Daniel P. Berrange),<br />
+ build: avoid 'index' as variable name (Eric Blake),<br />
+ build: Don't use code with dbus_message_unref when built without dbus (Martin Kletzander),<br />
+ tests: Fix systemd test with --without-driver-modules (Jiri Denemark),<br />
+ Fix build on mingw32 (Ján Tomko),<br />
+ build: avoid compiler warning on shadowed name (Jean-Baptiste Rouault),<br />
+ tests: link against libxml2 (Guido Günther),<br />
+ tests: build viridentitytest only WITH_ATTR. (Jincheng Miao),<br />
+ maint: Correctly detect wether "gluster" cli tool is accessible (Peter Krempa),<br />
+ libvirt-guests: avoid bashism (Guido Günther),<br />
+ Use the force flag for mkfs -t xfs (Ján Tomko)<br />
+ </li><li> Bug Fixes:<br />
+ Restore skipping of setting capacity (John Ferlan),<br />
+ qemu: fix crash when removing &lt;filterref&gt; from interface with update-device (Laine Stump),<br />
+ storage: Clear all data allocated about backing store before reparsing (Peter Krempa),<br />
+ nwfilter: Tear down temp. filters when tearing all filters (Stefan Berger),<br />
+ Set mknod permission in device ACL for LXC USB devices (Daniel P. Berrange),<br />
+ conf: avoid null deref during storage probe (Eric Blake),<br />
+ qemu: properly quit migration with abort_on_error (Martin Kletzander),<br />
+ qemu: don't call virFileExists() for network type disks (Martin Kletzander),<br />
+ storage_backend_rbd: Correct argument order to rbd_create3 (Steven McDonald),<br />
+ xen: ensure /usr/sbin/xend exists before checking status (Jim Fehlig),<br />
+ Remove bogus ATTRIBUTE_NONNULL from virFirewallAddRuleFull (Daniel P. Berrange),<br />
+ Make autostart of virtlockd actually work (Daniel P. Berrange),<br />
+ Fix leak on OOM in virNWFilterVarValueCreateSimpleCopyValue (Daniel P. Berrange),<br />
+ qemu: Avoid overflow when setting migration speed on inactive domains (Jiri Denemark),<br />
+ qemu: don't check for backing chains for formats w/o snapshot support (Martin Kletzander),<br />
+ Fix pci bus naming for PPC (Daniel P. Berrange),<br />
+ Document behavior of setvcpus during guest boot (Ján Tomko),<br />
+ Save domain status after cpu hotplug (Ján Tomko),<br />
+ Fix error for out of range vcpu in qemuDomainPinVcpuFlags (Ján Tomko),<br />
+ Properly free vcpupin info for unplugged CPUs (Ján Tomko),<br />
+ Only set QEMU_CAPS_NO_HPET on x86 (Ján Tomko),<br />
+ Fix Memory Leak in virStorageFileGetMetadataRecurse() (Nehal J Wani),<br />
+ qemu: Unlock the NWFilter update lock by leaving via the cleanup label (Stefan Berger),<br />
+ storage: netfs: Handle backend errors (John Ferlan),<br />
+ conf: fix omission of &lt;driver&gt; in domain dumpxml (Eric Blake),<br />
+ Fix virsystemdtest without SYSTEMD_DAEMON (Ján Tomko),<br />
+ qemu: Avoid overflow when setting migration speed (Jiri Denemark),<br />
+ bhyve: fix domain management (Wojciech Macek),<br />
+ Check maximum startcpu value correctly (Ján Tomko),<br />
+ storage: Don't update pool available/allocation if buildVol fails (John Ferlan),<br />
+ LXC: Fix return code evaulation in lxcCheckNetNsSupport() (Richard Weinberger),<br />
+ Fix incorrect values in redirdev ABI check error (Ján Tomko),<br />
+ virNetDev{Replace,Restore}MacAddress: Fix memory leak (Wangrui K),<br />
+ bhyveConnectGetCapabilities: Fix double caps unref (Michal Privoznik),<br />
+ Simplify bhyveDriverGetCapabilities() (Michal Privoznik),<br />
+ bhyve_capabilities: Add Semihalf to Copyright (Michal Privoznik),<br />
+ tests: Don't crash when creating the config object fails (Guido Günther),<br />
+ conf: avoid memleak on NULL path (Eric Blake),<br />
+ lxc conf2xml: don't let current vcpus at 0: define won't like it (Cédric Bosdonnat),<br />
+ QoS: make tc filters match all traffic (Antoni S. Puimedon),<br />
+ NFS storage pool: Fix libvirtd crash due to refactor edit (John Ferlan),<br />
+ Define CPUINFO_FILE_LEN and fix maxlen of cpuinfo file for all uses (Olivia Yin),<br />
+ Fix Memory Leak in daemon/libvirtd.c (Nehal J Wani),<br />
+ qemu: make sure agent returns error when required data are missing (Martin Kletzander),<br />
+ Fix coverity-reported leak in virSecurityManagerGenLabel (Ján Tomko),<br />
+ phyp: fix logic error on volume creation (Eric Blake),<br />
+ qemu: cleanup error checking on agent replies (Martin Kletzander)<br />
+ </li><li> Improvements
+ util: new stricter unsigned int parsing (Eric Blake),<br />
+ util: fix uint parsing on 64-bit platforms (Eric Blake),<br />
+ Misc error reporting bugs in QEMU cli builder (Daniel P. Berrange),<br />
+ nwfilter: Validate rule after parsing (Stefan Berger),<br />
+ Add support for QEMU migration to use SASL authentication (Sahid Orentino Ferdjaoui),<br />
+ enforce sane readdir usage (Eric Blake),<br />
+ network: use virDirRead in networkMigrateStateFiles (Laine Stump),<br />
+ storage: use virDirRead API (Eric Blake),<br />
+ drivers: use virDirRead API (Eric Blake),<br />
+ util: use virDirRead API (Eric Blake),<br />
+ conf: use virDirRead API (Eric Blake),<br />
+ nodeinfo: use virDirRead API (Natanael Copa),<br />
+ util: introduce virDirRead wrapper for readdir (Natanael Copa),<br />
+ tests: remove hostdevmgr directory on cleanup (Martin Kletzander),<br />
+ Use virFileFindResource to locate virtlockd daemon (Daniel P. Berrange),<br />
+ Use virFileFindResource to locate libvirtd daemon (Daniel P. Berrange),<br />
+ Recheck disk backing chains after snapshot (Jiri Denemark),<br />
+ network: centralize check for active network during interface attach (Laine Stump),<br />
+ network: set macvtap/hostdev networks active if their state file exists (Laine Stump),<br />
+ network: change location of network state xml files (Laine Stump),<br />
+ network: create statedir during driver initialization (Laine Stump),<br />
+ network: fix virNetworkObjAssignDef and persistence (Laine Stump),<br />
+ build: -avoid-version on libvirt_driver_nwfilter (Dwight Engen),<br />
+ libxl: Support PV consoles (Ian Campbell),<br />
+ build: add nwfilterxml2firewalldata to dist (Dwight Engen),<br />
+ Add a test suite for nwfilter ebiptables tech driver (Daniel P. Berrange),<br />
+ Remove last trace of direct firewall command exection (Daniel P. Berrange),<br />
+ Convert ebiptablesDriverProbeStateMatch to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebiptablesApplyNewRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebtablesApplyDropAllRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebtablesApplyDHCPOnlyRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebtablesApplyBasicRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebiptablesTearNewRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebtablesRemoveBasicRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebiptablesTearOldRules to virFirewall (Daniel P. Berrange),<br />
+ Convert nwfilter ebiptablesAllTeardown to virFirewall (Daniel P. Berrange),<br />
+ Convert ebtables code over to use firewall APIs (Daniel P. Berrange),<br />
+ Add test for converting network XML to iptables rules (Daniel P. Berrange),<br />
+ Replace virNetworkObjPtr with virNetworkDefPtr in network platform APIs (Daniel P. Berrange),<br />
+ Convert bridge driver over to use new firewall APIs (Daniel P. Berrange),<br />
+ Introduce an object for managing firewall rulesets (Daniel P. Berrange),<br />
+ Preserve error when tearing down nwfilter rules (Daniel P. Berrange),<br />
+ Remove two-stage construction of commands in nwfilter (Daniel P. Berrange),<br />
+ Merge nwfilter createRuleInstance driver into applyNewRules (Daniel P. Berrange),<br />
+ Push virNWFilterRuleInstPtr out of (eb|ip)tablesCreateRuleInstance (Daniel P. Berrange),<br />
+ Add helper methods for determining what protocol layer is used (Daniel P. Berrange),<br />
+ Remove nwfilter tech driver 'displayRuleInstance' callback (Daniel P. Berrange),<br />
+ Remove nwfilter tech driver 'removeRules' callback (Daniel P. Berrange),<br />
+ Remove pointless storage of var names in virNWFilterHashTable (Daniel P. Berrange),<br />
+ Remove virDomainNetType parameter from nwfilter drivers (Daniel P. Berrange),<br />
+ Move virNWFilterTechDriver struct out of nwfilter_conf.h (Daniel P. Berrange),<br />
+ Use virFileFindResource to locate CPU map XML (Daniel P. Berrange),<br />
+ Use virFileFindResource to locate driver plugins (Daniel P. Berrange),<br />
+ Use virFileFindResource to locate lock manager plugins (Daniel P. Berrange),<br />
+ Use virFileFindResource to locate iohelper for fdstream (Nehal J Wani),<br />
+ Use virFileFindResource to locate parthelper for storage backend (Nehal J Wani),<br />
+ Use virFileFindResource to locate libvirt_lxc for capabilities (Nehal J Wani),<br />
+ Use virFileFindResource to locate iohelper for virFileWrapperFdNew (Nehal J Wani),<br />
+ Activate build dir overrides in libvirtd, virtlockd, virsh &amp; tests (Daniel P. Berrange),<br />
+ Add helpers for resolving path to resources in build tree (Daniel P. Berrange),<br />
+ Add test suite for viralloc APIs (Daniel P. Berrange),<br />
+ Add support for addressing backing stores by index (Jiri Denemark),<br />
+ virStorageFileChainLookup: Return virStorageSourcePtr (Jiri Denemark),<br />
+ qemuDomainBlockCommit: Track virStorageSourcePtr for base (Jiri Denemark),<br />
+ qemuDomainBlockCommit: Don't track top_canon path separately (Jiri Denemark),<br />
+ tests: Test backing store XML formatting and parsing (Jiri Denemark),<br />
+ tests: More output options for xml2xml tests (Jiri Denemark),<br />
+ conf: Format and parse backing chains in domain XML (Jiri Denemark),<br />
+ conf: Output disk backing store details in domain XML (Jiri Denemark),<br />
+ util: storage: Invert the way recursive metadata retrieval works (Peter Krempa),<br />
+ util: virstoragefile: Don't mangle data stored about directories (Peter Krempa),<br />
+ storage: Move disk-&gt;backingChain to the recursive disk-&gt;src.backingStore (Peter Krempa),<br />
+ util: virstoragefile: Rename backingMeta to backingStore (Peter Krempa),<br />
+ util: virstorage: Kill struct virStorageFileMetadata (Peter Krempa),<br />
+ maint: Switch over from struct virStorageFileMetadata to virStorageSource (Peter Krempa),<br />
+ util: storagefile: Add fields from virStorageMetadata to virStorageSource (Peter Krempa),<br />
+ util: storagefile: Add function to free a virStorageSourcePtr (Peter Krempa),<br />
+ virstoragefile: Kill "backingStore" field from virStorageFileMetadata (Peter Krempa),<br />
+ util: virstoragefile: Don't use "backingStore" directly (Peter Krempa),<br />
+ util: storagefile: Rename "canonPath" to "path" in virStorageFileMetadata (Peter Krempa),<br />
+ util: storage: Rename "path" to "relPath" in virStorageFileMetadata (Peter Krempa),<br />
+ storage: util: Clean up arguments of virStorageFileGetMetadataInternal (Peter Krempa),<br />
+ util: storage: Move checking of the actual backing image to the worker (Peter Krempa),<br />
+ util: storage: Remove obsolete argument virStorageFileGetMetadataInternal (Peter Krempa),<br />
+ util: storagefile: Always store raw backing name in the metadata (Peter Krempa),<br />
+ qemu: unexport qemuDiskChainCheckBroken (Peter Krempa),<br />
+ bhyve: bhyveDomainDefineXML fixes (Roman Bogorodskiy),<br />
+ PPC64 prefers to set pci-ohci controller as default USB controller (Li Zhang),<br />
+ Make virDomainVcpuPinDel return void (Ján Tomko),<br />
+ maint: update to latest gnulib (Eric Blake),<br />
+ bhyve: domainCreateXML (Wojciech Macek),<br />
+ Remove QEMU_CAPS_MACHINE_USB_OPT from ComputeCmdFlags (Ján Tomko),<br />
+ conf: split &lt;disk&gt; schema into more pieces (Eric Blake),<br />
+ conf: set up for per-grammar overrides in schemas (Eric Blake),<br />
+ conf: restrict external snapshots to backing store formats (Eric Blake),<br />
+ conf: move storage formats to common RNG file (Eric Blake),<br />
+ conf: better &lt;disk&gt; interleaving in schema (Eric Blake),<br />
+ conf: create common storage RNG grammar file (Eric Blake),<br />
+ conf: delete internal directory field (Eric Blake),<br />
+ conf: tweak chain lookup internals (Eric Blake),<br />
+ conf: drop redundant parameter to chain lookup (Eric Blake),<br />
+ conf: report error on chain lookup failure (Eric Blake),<br />
+ util: new virFileRelLinkPointsTo function (Eric Blake),<br />
+ conf: test backing chain lookup (Eric Blake),<br />
+ Introduce --without-pm-utils to get rid of pm-is-supported dependency (Cédric Bosdonnat),<br />
+ conf: delete useless backingStoreFormat field (Eric Blake),<br />
+ conf: return backing information separately from metadata (Eric Blake),<br />
+ conf: delete useless backingStoreIsFile field (Eric Blake),<br />
+ conf: expose probe for non-local storage (Eric Blake),<br />
+ conf: provide details on network backing store (Eric Blake),<br />
+ conf: make virstoragetest debug easier (Eric Blake),<br />
+ cpu: Properly check input parameters (Jiri Denemark),<br />
+ Clean up virCgroupGetPercpuStats (Ján Tomko),<br />
+ Rename id, max_id to need_cpus, total_cpus (Ján Tomko),<br />
+ Extend virCgroupGetPercpuStats to fill in vcputime too (Ján Tomko),<br />
+ Fix return value of virCgroupGetPercpuStats (Ján Tomko),<br />
+ Don't require domain obj in qemuDomainGetPercpuStats (Ján Tomko),<br />
+ conf: test for more fields (Eric Blake),<br />
+ conf: start testing contents of the new backing chain fields (Eric Blake),<br />
+ conf: track more fields in backing chain metadata (Eric Blake),<br />
+ conf: rename some test fields (Eric Blake),<br />
+ conf: earlier allocation during backing chain crawl (Eric Blake),<br />
+ conf: track user vs. canonical name through full chain lookup (Eric Blake),<br />
+ qemu: Unexport qemuBuildNetworkDriveURI() (Peter Krempa),<br />
+ qemu: Refactor qemuGetDriveSourceString to take virStorageSourcePtr (Peter Krempa),<br />
+ storage: Refactor location of metadata for storage drive access to files (Peter Krempa),<br />
+ storage: Refactor storage file initialization to use virStorageSourcePtr (Peter Krempa),<br />
+ conf: Refactor helpers to retrieve actual storage type (Peter Krempa),<br />
+ tests: use virBhyveCapsBuild in bhyvexml2argv test (Roman Bogorodskiy),<br />
+ conf: another refactor of virstoragetest (Eric Blake),<br />
+ conf: interleave virstoragetest structs (Eric Blake),<br />
+ conf: test for more scenarios (Eric Blake),<br />
+ conf: fix detection of infinite backing loop (Eric Blake),<br />
+ vmware: set the driver version (Jean-Baptiste Rouault),<br />
+ tests: add bhyve xml2xml test (Roman Bogorodskiy),<br />
+ bhyve: add domain metadata support (Roman Bogorodskiy),<br />
+ bhyve: fix ATTRIBUTE_NONNULL usage (Roman Bogorodskiy),<br />
+ Use a static initializer for static mutexes (Daniel P. Berrange),<br />
+ Add syntax check to validate capitalization of abbreviations (Daniel P. Berrange),<br />
+ Replace Pci with PCI throughout (Daniel P. Berrange),<br />
+ Replace Usb with USB throughout (Daniel P. Berrange),<br />
+ Replace Scsi with SCSI throughout (Daniel P. Berrange),<br />
+ Switch systemd test to use generic dbus mock (Daniel P. Berrange),<br />
+ Create a re-usable DBus LD_PRELOAD mock library (Daniel P. Berrange),<br />
+ Introduce a new set of helper macros for mocking symbols (Daniel P. Berrange),<br />
+ bhyve: connectCompareCPU support (Wojciech Macek),<br />
+ bhyve: create capabilities submodule (Wojciech Macek),<br />
+ bhyve: support for connectBaselineCPU (Wojciech Macek),<br />
+ interface: dump inactive xml when interface isn't active (Laine Stump),<br />
+ hash: add common utility functions (Eric Blake),<br />
+ bhyve: add xml2argv tests for console (Roman Bogorodskiy),<br />
+ bhyve: add console support through nmdm device (Roman Bogorodskiy),<br />
+ bhyve: domain autostart support (David Shane Holden),<br />
+ conf: track when storage type is still undetermined (Eric Blake),<br />
+ tests: refactor virstoragetest for less stack space (Eric Blake),<br />
+ tests: use C99 initialization for storage test (Eric Blake),<br />
+ libxl: Set disk format for empty cdrom device (Stefan Bader),<br />
+ libxl: Use id from virDomainObj inside the driver (Stefan Bader),<br />
+ Add redirdevs to ABI stability check (Ján Tomko),<br />
+ virsh: Make 'exit' action same as 'quit' (Li Yang),<br />
+ Include PCI address in the error in virDomainNetFindIdx (Ján Tomko),<br />
+ Move error reporting into virDomainNetFindIdx (Ján Tomko),<br />
+ tests: simplify storage test cleanup (Eric Blake),<br />
+ storage: Report error from VolOpen by default (Cole Robinson),<br />
+ conf: modify tracking of encrypted images (Eric Blake),<br />
+ conf: drop redundant parameters during probe (Eric Blake),<br />
+ conf: track sizes directly in source struct (Eric Blake),<br />
+ conf: use common struct in storage volumes (Eric Blake),<br />
+ conf: move volume structs to util/ (Eric Blake),<br />
+ conf: tweak volume target struct details (Eric Blake),<br />
+ conf: manage disk source by struct instead of pieces (Eric Blake),<br />
+ virsh: man: delete the unexpected character in snapshot-list (Shanzhi Yu),<br />
+ maint: fix spelling errors in disk pools (Eric Blake),<br />
+ conf: let snapshots share disk source struct (Eric Blake),<br />
+ conf: move common disk source functions (Eric Blake),<br />
+ util: don't support loopback and nbd when setuid (Eric Blake),<br />
+ util: move detection of shared filesystems (Eric Blake),<br />
+ conf: move storage source type to util/ (Eric Blake),<br />
+ conf: move storage secret type to util/ (Eric Blake),<br />
+ conf: move source pool type to util/ (Eric Blake),<br />
+ conf: move storage encryption type to util/ (Eric Blake),<br />
+ conf: move network disk protocol type to util/ (Eric Blake),<br />
+ conf: move host disk type to util/ (Eric Blake),<br />
+ conf: split network host structs to util/ (Eric Blake),<br />
+ conf: split security label structs to util/ (Eric Blake),<br />
+ maint: ensure src/ directory includes are clean (Eric Blake),<br />
+ storage: gluster: Implement storage pool lookup (Peter Krempa),<br />
+ storage: netfs: Support lookup of glusterfs pool sources (Peter Krempa),<br />
+ storage: netfs: Split up and tidy up NFS storage pool source function (Peter Krempa)<br />
+ </li><li> Cleanups:<br />
+ tests: drop dead code from argv2xml and xml2xml (Eric Blake),<br />
+ qemu: remove unneeded forward declaration (Martin Kletzander)<br />
+ </li></ul>
<h3>1.2.3: Apr 1 2014</h3>
<ul><li>Features:<br />
add new virDomainCoreDumpWithFormat API (Qiao Nuohan),<br />
diff --git a/docs/news.html.in b/docs/news.html.in
index 6d658c815..df5f2077c 100644
--- a/docs/news.html.in
+++ b/docs/news.html.in
@@ -9,6 +9,290 @@
<p>Here is the list of official releases, it is also possible to just use the <a href="downloads.html">GIT version or snapshot</a>, contact the mailing list
and check the <a href="http://libvirt.org/git/?p=libvirt.git;a=log">GIT log</a> to gauge progress.</p>
+ <h3>1.2.4: May 4 2014</h3>
+ <ul>
+ <li> Documentation:<br/>
+ Device{Attach,Detach}: Document S4 limitations (Michal Privoznik),<br/>
+ Add a new example to illustrate domain migration (Sahid Orentino Ferdjaoui),<br/>
+ update docs for setting the QEMU BIOS path (Chen Hanxiao),<br/>
+ document nmdm type console (Roman Bogorodskiy),<br/>
+ Fix typos in src/* (Nehal J Wani),<br/>
+ document that vfio is default for hostdev networks too (Laine Stump),<br/>
+ cpu: Add documentation for CPU driver APIs (Jiri Denemark),<br/>
+ virsh: Fix comment of vshCmdInfo (Li Yang)<br/>
+ </li>
+
+ <li> Portability:<br/>
+ Explicitly link virfirewalltest and virsystemdtest against dbus (Guido Günther),<br/>
+ qemuxml2argvtest: Don't use privileged mode upfront (Guido Günther),<br/>
+ tests: skip virfirewalltest on non-Linux systems (Roman Bogorodskiy),<br/>
+ tests: don't fail with newer gnutls (Martin Kletzander),<br/>
+ fix build with older gcc (Ján Tomko),<br/>
+ storage: reject negative indices (Eric Blake),<br/>
+ networkxml2firewalltest: fix build failure on freebsd (Pavel Hrdina),<br/>
+ virfirewall: fix build on freebsd (Pavel Hrdina),<br/>
+ Disable libvirtd by default when building on Win32 (Daniel P. Berrange),<br/>
+ Don't use SO_REUSEADDR on Win32 platforms (Daniel P. Berrange),<br/>
+ Conditionalize include of dlfcn.h in virmock.h (Daniel P. Berrange),<br/>
+ build: avoid 'index' as variable name (Eric Blake),<br/>
+ build: Don't use code with dbus_message_unref when built without dbus (Martin Kletzander),<br/>
+ tests: Fix systemd test with --without-driver-modules (Jiri Denemark),<br/>
+ Fix build on mingw32 (Ján Tomko),<br/>
+ build: avoid compiler warning on shadowed name (Jean-Baptiste Rouault),<br/>
+ tests: link against libxml2 (Guido Günther),<br/>
+ tests: build viridentitytest only WITH_ATTR. (Jincheng Miao),<br/>
+ maint: Correctly detect wether "gluster" cli tool is accessible (Peter Krempa),<br/>
+ libvirt-guests: avoid bashism (Guido Günther),<br/>
+ Use the force flag for mkfs -t xfs (Ján Tomko)<br/>
+ </li>
+
+ <li> Bug Fixes:<br/>
+ Restore skipping of setting capacity (John Ferlan),<br/>
+ qemu: fix crash when removing &lt;filterref&gt; from interface with update-device (Laine Stump),<br/>
+ storage: Clear all data allocated about backing store before reparsing (Peter Krempa),<br/>
+ nwfilter: Tear down temp. filters when tearing all filters (Stefan Berger),<br/>
+ Set mknod permission in device ACL for LXC USB devices (Daniel P. Berrange),<br/>
+ conf: avoid null deref during storage probe (Eric Blake),<br/>
+ qemu: properly quit migration with abort_on_error (Martin Kletzander),<br/>
+ qemu: don't call virFileExists() for network type disks (Martin Kletzander),<br/>
+ storage_backend_rbd: Correct argument order to rbd_create3 (Steven McDonald),<br/>
+ xen: ensure /usr/sbin/xend exists before checking status (Jim Fehlig),<br/>
+ Remove bogus ATTRIBUTE_NONNULL from virFirewallAddRuleFull (Daniel P. Berrange),<br/>
+ Make autostart of virtlockd actually work (Daniel P. Berrange),<br/>
+ Fix leak on OOM in virNWFilterVarValueCreateSimpleCopyValue (Daniel P. Berrange),<br/>
+ qemu: Avoid overflow when setting migration speed on inactive domains (Jiri Denemark),<br/>
+ qemu: don't check for backing chains for formats w/o snapshot support (Martin Kletzander),<br/>
+ Fix pci bus naming for PPC (Daniel P. Berrange),<br/>
+ Document behavior of setvcpus during guest boot (Ján Tomko),<br/>
+ Save domain status after cpu hotplug (Ján Tomko),<br/>
+ Fix error for out of range vcpu in qemuDomainPinVcpuFlags (Ján Tomko),<br/>
+ Properly free vcpupin info for unplugged CPUs (Ján Tomko),<br/>
+ Only set QEMU_CAPS_NO_HPET on x86 (Ján Tomko),<br/>
+ Fix Memory Leak in virStorageFileGetMetadataRecurse() (Nehal J Wani),<br/>
+ qemu: Unlock the NWFilter update lock by leaving via the cleanup label (Stefan Berger),<br/>
+ storage: netfs: Handle backend errors (John Ferlan),<br/>
+ conf: fix omission of &lt;driver&gt; in domain dumpxml (Eric Blake),<br/>
+ Fix virsystemdtest without SYSTEMD_DAEMON (Ján Tomko),<br/>
+ qemu: Avoid overflow when setting migration speed (Jiri Denemark),<br/>
+ bhyve: fix domain management (Wojciech Macek),<br/>
+ Check maximum startcpu value correctly (Ján Tomko),<br/>
+ storage: Don't update pool available/allocation if buildVol fails (John Ferlan),<br/>
+ LXC: Fix return code evaulation in lxcCheckNetNsSupport() (Richard Weinberger),<br/>
+ Fix incorrect values in redirdev ABI check error (Ján Tomko),<br/>
+ virNetDev{Replace,Restore}MacAddress: Fix memory leak (Wangrui K),<br/>
+ bhyveConnectGetCapabilities: Fix double caps unref (Michal Privoznik),<br/>
+ Simplify bhyveDriverGetCapabilities() (Michal Privoznik),<br/>
+ bhyve_capabilities: Add Semihalf to Copyright (Michal Privoznik),<br/>
+ tests: Don't crash when creating the config object fails (Guido Günther),<br/>
+ conf: avoid memleak on NULL path (Eric Blake),<br/>
+ lxc conf2xml: don't let current vcpus at 0: define won't like it (Cédric Bosdonnat),<br/>
+ QoS: make tc filters match all traffic (Antoni S. Puimedon),<br/>
+ NFS storage pool: Fix libvirtd crash due to refactor edit (John Ferlan),<br/>
+ Define CPUINFO_FILE_LEN and fix maxlen of cpuinfo file for all uses (Olivia Yin),<br/>
+ Fix Memory Leak in daemon/libvirtd.c (Nehal J Wani),<br/>
+ qemu: make sure agent returns error when required data are missing (Martin Kletzander),<br/>
+ Fix coverity-reported leak in virSecurityManagerGenLabel (Ján Tomko),<br/>
+ phyp: fix logic error on volume creation (Eric Blake),<br/>
+ qemu: cleanup error checking on agent replies (Martin Kletzander)<br/>
+ </li>
+
+ <li> Improvements
+ util: new stricter unsigned int parsing (Eric Blake),<br/>
+ util: fix uint parsing on 64-bit platforms (Eric Blake),<br/>
+ Misc error reporting bugs in QEMU cli builder (Daniel P. Berrange),<br/>
+ nwfilter: Validate rule after parsing (Stefan Berger),<br/>
+ Add support for QEMU migration to use SASL authentication (Sahid Orentino Ferdjaoui),<br/>
+ enforce sane readdir usage (Eric Blake),<br/>
+ network: use virDirRead in networkMigrateStateFiles (Laine Stump),<br/>
+ storage: use virDirRead API (Eric Blake),<br/>
+ drivers: use virDirRead API (Eric Blake),<br/>
+ util: use virDirRead API (Eric Blake),<br/>
+ conf: use virDirRead API (Eric Blake),<br/>
+ nodeinfo: use virDirRead API (Natanael Copa),<br/>
+ util: introduce virDirRead wrapper for readdir (Natanael Copa),<br/>
+ tests: remove hostdevmgr directory on cleanup (Martin Kletzander),<br/>
+ Use virFileFindResource to locate virtlockd daemon (Daniel P. Berrange),<br/>
+ Use virFileFindResource to locate libvirtd daemon (Daniel P. Berrange),<br/>
+ Recheck disk backing chains after snapshot (Jiri Denemark),<br/>
+ network: centralize check for active network during interface attach (Laine Stump),<br/>
+ network: set macvtap/hostdev networks active if their state file exists (Laine Stump),<br/>
+ network: change location of network state xml files (Laine Stump),<br/>
+ network: create statedir during driver initialization (Laine Stump),<br/>
+ network: fix virNetworkObjAssignDef and persistence (Laine Stump),<br/>
+ build: -avoid-version on libvirt_driver_nwfilter (Dwight Engen),<br/>
+ libxl: Support PV consoles (Ian Campbell),<br/>
+ build: add nwfilterxml2firewalldata to dist (Dwight Engen),<br/>
+ Add a test suite for nwfilter ebiptables tech driver (Daniel P. Berrange),<br/>
+ Remove last trace of direct firewall command exection (Daniel P. Berrange),<br/>
+ Convert ebiptablesDriverProbeStateMatch to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebiptablesApplyNewRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebtablesApplyDropAllRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebtablesApplyDHCPOnlyRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebtablesApplyBasicRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebiptablesTearNewRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebtablesRemoveBasicRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebiptablesTearOldRules to virFirewall (Daniel P. Berrange),<br/>
+ Convert nwfilter ebiptablesAllTeardown to virFirewall (Daniel P. Berrange),<br/>
+ Convert ebtables code over to use firewall APIs (Daniel P. Berrange),<br/>
+ Add test for converting network XML to iptables rules (Daniel P. Berrange),<br/>
+ Replace virNetworkObjPtr with virNetworkDefPtr in network platform APIs (Daniel P. Berrange),<br/>
+ Convert bridge driver over to use new firewall APIs (Daniel P. Berrange),<br/>
+ Introduce an object for managing firewall rulesets (Daniel P. Berrange),<br/>
+ Preserve error when tearing down nwfilter rules (Daniel P. Berrange),<br/>
+ Remove two-stage construction of commands in nwfilter (Daniel P. Berrange),<br/>
+ Merge nwfilter createRuleInstance driver into applyNewRules (Daniel P. Berrange),<br/>
+ Push virNWFilterRuleInstPtr out of (eb|ip)tablesCreateRuleInstance (Daniel P. Berrange),<br/>
+ Add helper methods for determining what protocol layer is used (Daniel P. Berrange),<br/>
+ Remove nwfilter tech driver 'displayRuleInstance' callback (Daniel P. Berrange),<br/>
+ Remove nwfilter tech driver 'removeRules' callback (Daniel P. Berrange),<br/>
+ Remove pointless storage of var names in virNWFilterHashTable (Daniel P. Berrange),<br/>
+ Remove virDomainNetType parameter from nwfilter drivers (Daniel P. Berrange),<br/>
+ Move virNWFilterTechDriver struct out of nwfilter_conf.h (Daniel P. Berrange),<br/>
+ Use virFileFindResource to locate CPU map XML (Daniel P. Berrange),<br/>
+ Use virFileFindResource to locate driver plugins (Daniel P. Berrange),<br/>
+ Use virFileFindResource to locate lock manager plugins (Daniel P. Berrange),<br/>
+ Use virFileFindResource to locate iohelper for fdstream (Nehal J Wani),<br/>
+ Use virFileFindResource to locate parthelper for storage backend (Nehal J Wani),<br/>
+ Use virFileFindResource to locate libvirt_lxc for capabilities (Nehal J Wani),<br/>
+ Use virFileFindResource to locate iohelper for virFileWrapperFdNew (Nehal J Wani),<br/>
+ Activate build dir overrides in libvirtd, virtlockd, virsh &amp; tests (Daniel P. Berrange),<br/>
+ Add helpers for resolving path to resources in build tree (Daniel P. Berrange),<br/>
+ Add test suite for viralloc APIs (Daniel P. Berrange),<br/>
+ Add support for addressing backing stores by index (Jiri Denemark),<br/>
+ virStorageFileChainLookup: Return virStorageSourcePtr (Jiri Denemark),<br/>
+ qemuDomainBlockCommit: Track virStorageSourcePtr for base (Jiri Denemark),<br/>
+ qemuDomainBlockCommit: Don't track top_canon path separately (Jiri Denemark),<br/>
+ tests: Test backing store XML formatting and parsing (Jiri Denemark),<br/>
+ tests: More output options for xml2xml tests (Jiri Denemark),<br/>
+ conf: Format and parse backing chains in domain XML (Jiri Denemark),<br/>
+ conf: Output disk backing store details in domain XML (Jiri Denemark),<br/>
+ util: storage: Invert the way recursive metadata retrieval works (Peter Krempa),<br/>
+ util: virstoragefile: Don't mangle data stored about directories (Peter Krempa),<br/>
+ storage: Move disk-&gt;backingChain to the recursive disk->src.backingStore (Peter Krempa),<br/>
+ util: virstoragefile: Rename backingMeta to backingStore (Peter Krempa),<br/>
+ util: virstorage: Kill struct virStorageFileMetadata (Peter Krempa),<br/>
+ maint: Switch over from struct virStorageFileMetadata to virStorageSource (Peter Krempa),<br/>
+ util: storagefile: Add fields from virStorageMetadata to virStorageSource (Peter Krempa),<br/>
+ util: storagefile: Add function to free a virStorageSourcePtr (Peter Krempa),<br/>
+ virstoragefile: Kill "backingStore" field from virStorageFileMetadata (Peter Krempa),<br/>
+ util: virstoragefile: Don't use "backingStore" directly (Peter Krempa),<br/>
+ util: storagefile: Rename "canonPath" to "path" in virStorageFileMetadata (Peter Krempa),<br/>
+ util: storage: Rename "path" to "relPath" in virStorageFileMetadata (Peter Krempa),<br/>
+ storage: util: Clean up arguments of virStorageFileGetMetadataInternal (Peter Krempa),<br/>
+ util: storage: Move checking of the actual backing image to the worker (Peter Krempa),<br/>
+ util: storage: Remove obsolete argument virStorageFileGetMetadataInternal (Peter Krempa),<br/>
+ util: storagefile: Always store raw backing name in the metadata (Peter Krempa),<br/>
+ qemu: unexport qemuDiskChainCheckBroken (Peter Krempa),<br/>
+ bhyve: bhyveDomainDefineXML fixes (Roman Bogorodskiy),<br/>
+ PPC64 prefers to set pci-ohci controller as default USB controller (Li Zhang),<br/>
+ Make virDomainVcpuPinDel return void (Ján Tomko),<br/>
+ maint: update to latest gnulib (Eric Blake),<br/>
+ bhyve: domainCreateXML (Wojciech Macek),<br/>
+ Remove QEMU_CAPS_MACHINE_USB_OPT from ComputeCmdFlags (Ján Tomko),<br/>
+ conf: split &lt;disk&gt; schema into more pieces (Eric Blake),<br/>
+ conf: set up for per-grammar overrides in schemas (Eric Blake),<br/>
+ conf: restrict external snapshots to backing store formats (Eric Blake),<br/>
+ conf: move storage formats to common RNG file (Eric Blake),<br/>
+ conf: better &lt;disk&gt; interleaving in schema (Eric Blake),<br/>
+ conf: create common storage RNG grammar file (Eric Blake),<br/>
+ conf: delete internal directory field (Eric Blake),<br/>
+ conf: tweak chain lookup internals (Eric Blake),<br/>
+ conf: drop redundant parameter to chain lookup (Eric Blake),<br/>
+ conf: report error on chain lookup failure (Eric Blake),<br/>
+ util: new virFileRelLinkPointsTo function (Eric Blake),<br/>
+ conf: test backing chain lookup (Eric Blake),<br/>
+ Introduce --without-pm-utils to get rid of pm-is-supported dependency (Cédric Bosdonnat),<br/>
+ conf: delete useless backingStoreFormat field (Eric Blake),<br/>
+ conf: return backing information separately from metadata (Eric Blake),<br/>
+ conf: delete useless backingStoreIsFile field (Eric Blake),<br/>
+ conf: expose probe for non-local storage (Eric Blake),<br/>
+ conf: provide details on network backing store (Eric Blake),<br/>
+ conf: make virstoragetest debug easier (Eric Blake),<br/>
+ cpu: Properly check input parameters (Jiri Denemark),<br/>
+ Clean up virCgroupGetPercpuStats (Ján Tomko),<br/>
+ Rename id, max_id to need_cpus, total_cpus (Ján Tomko),<br/>
+ Extend virCgroupGetPercpuStats to fill in vcputime too (Ján Tomko),<br/>
+ Fix return value of virCgroupGetPercpuStats (Ján Tomko),<br/>
+ Don't require domain obj in qemuDomainGetPercpuStats (Ján Tomko),<br/>
+ conf: test for more fields (Eric Blake),<br/>
+ conf: start testing contents of the new backing chain fields (Eric Blake),<br/>
+ conf: track more fields in backing chain metadata (Eric Blake),<br/>
+ conf: rename some test fields (Eric Blake),<br/>
+ conf: earlier allocation during backing chain crawl (Eric Blake),<br/>
+ conf: track user vs. canonical name through full chain lookup (Eric Blake),<br/>
+ qemu: Unexport qemuBuildNetworkDriveURI() (Peter Krempa),<br/>
+ qemu: Refactor qemuGetDriveSourceString to take virStorageSourcePtr (Peter Krempa),<br/>
+ storage: Refactor location of metadata for storage drive access to files (Peter Krempa),<br/>
+ storage: Refactor storage file initialization to use virStorageSourcePtr (Peter Krempa),<br/>
+ conf: Refactor helpers to retrieve actual storage type (Peter Krempa),<br/>
+ tests: use virBhyveCapsBuild in bhyvexml2argv test (Roman Bogorodskiy),<br/>
+ conf: another refactor of virstoragetest (Eric Blake),<br/>
+ conf: interleave virstoragetest structs (Eric Blake),<br/>
+ conf: test for more scenarios (Eric Blake),<br/>
+ conf: fix detection of infinite backing loop (Eric Blake),<br/>
+ vmware: set the driver version (Jean-Baptiste Rouault),<br/>
+ tests: add bhyve xml2xml test (Roman Bogorodskiy),<br/>
+ bhyve: add domain metadata support (Roman Bogorodskiy),<br/>
+ bhyve: fix ATTRIBUTE_NONNULL usage (Roman Bogorodskiy),<br/>
+ Use a static initializer for static mutexes (Daniel P. Berrange),<br/>
+ Add syntax check to validate capitalization of abbreviations (Daniel P. Berrange),<br/>
+ Replace Pci with PCI throughout (Daniel P. Berrange),<br/>
+ Replace Usb with USB throughout (Daniel P. Berrange),<br/>
+ Replace Scsi with SCSI throughout (Daniel P. Berrange),<br/>
+ Switch systemd test to use generic dbus mock (Daniel P. Berrange),<br/>
+ Create a re-usable DBus LD_PRELOAD mock library (Daniel P. Berrange),<br/>
+ Introduce a new set of helper macros for mocking symbols (Daniel P. Berrange),<br/>
+ bhyve: connectCompareCPU support (Wojciech Macek),<br/>
+ bhyve: create capabilities submodule (Wojciech Macek),<br/>
+ bhyve: support for connectBaselineCPU (Wojciech Macek),<br/>
+ interface: dump inactive xml when interface isn't active (Laine Stump),<br/>
+ hash: add common utility functions (Eric Blake),<br/>
+ bhyve: add xml2argv tests for console (Roman Bogorodskiy),<br/>
+ bhyve: add console support through nmdm device (Roman Bogorodskiy),<br/>
+ bhyve: domain autostart support (David Shane Holden),<br/>
+ conf: track when storage type is still undetermined (Eric Blake),<br/>
+ tests: refactor virstoragetest for less stack space (Eric Blake),<br/>
+ tests: use C99 initialization for storage test (Eric Blake),<br/>
+ libxl: Set disk format for empty cdrom device (Stefan Bader),<br/>
+ libxl: Use id from virDomainObj inside the driver (Stefan Bader),<br/>
+ Add redirdevs to ABI stability check (Ján Tomko),<br/>
+ virsh: Make 'exit' action same as 'quit' (Li Yang),<br/>
+ Include PCI address in the error in virDomainNetFindIdx (Ján Tomko),<br/>
+ Move error reporting into virDomainNetFindIdx (Ján Tomko),<br/>
+ tests: simplify storage test cleanup (Eric Blake),<br/>
+ storage: Report error from VolOpen by default (Cole Robinson),<br/>
+ conf: modify tracking of encrypted images (Eric Blake),<br/>
+ conf: drop redundant parameters during probe (Eric Blake),<br/>
+ conf: track sizes directly in source struct (Eric Blake),<br/>
+ conf: use common struct in storage volumes (Eric Blake),<br/>
+ conf: move volume structs to util/ (Eric Blake),<br/>
+ conf: tweak volume target struct details (Eric Blake),<br/>
+ conf: manage disk source by struct instead of pieces (Eric Blake),<br/>
+ virsh: man: delete the unexpected character in snapshot-list (Shanzhi Yu),<br/>
+ maint: fix spelling errors in disk pools (Eric Blake),<br/>
+ conf: let snapshots share disk source struct (Eric Blake),<br/>
+ conf: move common disk source functions (Eric Blake),<br/>
+ util: don't support loopback and nbd when setuid (Eric Blake),<br/>
+ util: move detection of shared filesystems (Eric Blake),<br/>
+ conf: move storage source type to util/ (Eric Blake),<br/>
+ conf: move storage secret type to util/ (Eric Blake),<br/>
+ conf: move source pool type to util/ (Eric Blake),<br/>
+ conf: move storage encryption type to util/ (Eric Blake),<br/>
+ conf: move network disk protocol type to util/ (Eric Blake),<br/>
+ conf: move host disk type to util/ (Eric Blake),<br/>
+ conf: split network host structs to util/ (Eric Blake),<br/>
+ conf: split security label structs to util/ (Eric Blake),<br/>
+ maint: ensure src/ directory includes are clean (Eric Blake),<br/>
+ storage: gluster: Implement storage pool lookup (Peter Krempa),<br/>
+ storage: netfs: Support lookup of glusterfs pool sources (Peter Krempa),<br/>
+ storage: netfs: Split up and tidy up NFS storage pool source function (Peter Krempa)<br/>
+ </li>
+
+ <li> Cleanups:<br/>
+ tests: drop dead code from argv2xml and xml2xml (Eric Blake),<br/>
+ qemu: remove unneeded forward declaration (Martin Kletzander)<br/>
+ </li>
+ </ul>
<h3>1.2.3: Apr 1 2014</h3>
<ul>
<li>Features:<br/>