[libvirt] [PATCH 1/5] conf: add startupPolicy attribute for harddisk
Osier Yang
jyang at redhat.com
Mon Mar 18 10:18:00 UTC 2013
On 2013年03月18日 17:10, Guannan Ren wrote:
> Add startupPolicy attribute policy for harddisk with type "file",
> "block" and "dir". The "network" type disk is still not supported.
> ---
> docs/formatdomain.html.in | 9 ++++++---
> src/conf/domain_conf.c | 19 +++++++++++++------
> 2 files changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 8a3c3b7..a32bdc3 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1450,8 +1450,8 @@
> For a "file" disk type which represents a cdrom or floppy
[...]
> (the<code>device</code> attribute), it is possible to define
> policy what to do with the disk if the source file is not accessible.
> - This is done by the<code>startupPolicy</code> attribute, accepting
> - these values:
> + This is done by the<code>startupPolicy</code> attribute
> + (<span class="since">Since 0.9.7</span>), accepting these values:
> <table class="top_table">
> <tr>
> <td> mandatory</td>
> @@ -1467,7 +1467,10 @@
> <td> drop if missing at any start attempt</td>
> </tr>
> </table>
> -<span class="since">Since 0.9.7</span>
> +<span class="since">Since 1.0.4</span>, the<code>startupPolicy</code> extends
s/extends/is extended/,
> + to support hard disks besides cdrom and floppy. However, the disk of "network"
> + type is still not reached. For the guest which is using per-device<code>boot</code>
> + element, the boot devices will be reordered after dropping its bootable disks.
The paragraph starts with "For a 'file' disk type". But your patch
extends the "startupPolicy" for all disk types except network. Which
means mismatching here.
> </dd>
> <dt><code>mirror</code></dt>
> <dd>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 3278e9c..177faaa 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -4044,7 +4044,6 @@ virDomainDiskDefParseXML(virCapsPtr caps,
> switch (def->type) {
> case VIR_DOMAIN_DISK_TYPE_FILE:
> source = virXMLPropString(cur, "file");
> - startupPolicy = virXMLPropString(cur, "startupPolicy");
> break;
> case VIR_DOMAIN_DISK_TYPE_BLOCK:
> source = virXMLPropString(cur, "dev");
> @@ -4137,6 +4136,8 @@ virDomainDiskDefParseXML(virCapsPtr caps,
> goto error;
> }
>
> + startupPolicy = virXMLPropString(cur, "startupPolicy");
> +
> /* People sometimes pass a bogus '' source path
> when they mean to omit the source element
> completely (e.g. CDROM without media). This is
> @@ -4674,11 +4675,10 @@ virDomainDiskDefParseXML(virCapsPtr caps,
> goto error;
> }
>
> - if (def->device != VIR_DOMAIN_DISK_DEVICE_CDROM&&
> - def->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
> + if (def->type == VIR_DOMAIN_DISK_TYPE_NETWORK) {
> virReportError(VIR_ERR_INVALID_ARG,
> - _("Setting disk %s is allowed only for "
> - "cdrom or floppy"),
> + _("Setting disk %s is not allowed for "
> + "disk of network type"),
> startupPolicy);
> goto error;
So you should change the schema, to allow the startupPolicy for
disk of types except network.
> }
> @@ -12838,6 +12838,9 @@ virDomainDiskDefFormat(virBufferPtr buf,
> case VIR_DOMAIN_DISK_TYPE_BLOCK:
> virBufferEscapeString(buf, "<source dev='%s'",
> def->src);
> + if (def->startupPolicy)
> + virBufferEscapeString(buf, " startupPolicy='%s'",
> + startupPolicy);
> if (def->nseclabels) {
> virBufferAddLit(buf, ">\n");
> virBufferAdjustIndent(buf, 8);
> @@ -12850,8 +12853,12 @@ virDomainDiskDefFormat(virBufferPtr buf,
> }
> break;
> case VIR_DOMAIN_DISK_TYPE_DIR:
> - virBufferEscapeString(buf, "<source dir='%s'/>\n",
> + virBufferEscapeString(buf, "<source dir='%s'",
> def->src);
> + if (def->startupPolicy)
> + virBufferEscapeString(buf, " startupPolicy='%s'",
> + startupPolicy);
> + virBufferAddLit(buf, "/>\n");
> break;
> case VIR_DOMAIN_DISK_TYPE_NETWORK:
> virBufferAsprintf(buf, "<source protocol='%s'",
More information about the libvir-list
mailing list