[libvirt] [PATCH 1/1] Add disk error policy to domain XML
Daniel P. Berrange
berrange at redhat.com
Thu Mar 25 14:52:08 UTC 2010
On Wed, Mar 24, 2010 at 04:31:48PM -0400, David Allan wrote:
> ---
> docs/schemas/domain.rng | 12 +++++++++++-
> src/conf/domain_conf.c | 15 +++++++++++++++
> src/conf/domain_conf.h | 10 ++++++++++
> src/libvirt_private.syms | 2 +-
> src/qemu/qemu_conf.c | 12 +++++++++---
> tests/qemuhelptest.c | 1 +
> tests/qemuxml2argvtest.c | 3 +++
> 7 files changed, 50 insertions(+), 5 deletions(-)
>
> @@ -1288,6 +1293,7 @@ virDomainDiskDefParseXML(xmlNodePtr node,
> char *target = NULL;
> char *bus = NULL;
> char *cachetag = NULL;
> + char *error_policy = NULL;
> char *devaddr = NULL;
> virStorageEncryptionPtr encryption = NULL;
> char *serial = NULL;
> @@ -1353,6 +1359,7 @@ virDomainDiskDefParseXML(xmlNodePtr node,
> driverName = virXMLPropString(cur, "name");
> driverType = virXMLPropString(cur, "type");
> cachetag = virXMLPropString(cur, "cache");
> + error_policy = virXMLPropString(cur, "error_policy");
> } else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) {
> def->readonly = 1;
> } else if (xmlStrEqual(cur->name, BAD_CAST "shareable")) {
> @@ -1469,6 +1476,13 @@ virDomainDiskDefParseXML(xmlNodePtr node,
> goto error;
> }
>
> + if (error_policy &&
> + (def->error_policy = virDomainDiskErrorPolicyTypeFromString(error_policy)) < 0) {
> + virDomainReportError(VIR_ERR_INTERNAL_ERROR,
> + _("unknown disk error policy '%s'"), error_policy);
> + goto error;
> + }
> +
> if (devaddr) {
> if (sscanf(devaddr, "%x:%x:%x",
> &def->info.addr.pci.domain,
Need to also add a chunk to the virDomainDiskDefFormat() method to
print the attribute when generating XML
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index f2d36f7..0b71ca9 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -1215,10 +1215,8 @@ static unsigned long long qemudComputeCmdFlags(const char *help,
>
> /* Keep disabled till we're actually ready to turn on JSON mode
> * The plan is todo it in 0.13.0 QEMU, but lets wait & see... */
> -#if 0
> - if (version >= 13000)
> + if (version >= 12000)
> flags |= QEMUD_CMD_FLAG_MONITOR_JSON;
> -#endif
>
> return flags;
> }
I assume this i just from testing.
> diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c
> index dfdac75..b3ab209 100644
> --- a/tests/qemuhelptest.c
> +++ b/tests/qemuhelptest.c
> @@ -227,6 +227,7 @@ mymain(int argc, char **argv)
> QEMUD_CMD_FLAG_BALLOON |
> QEMUD_CMD_FLAG_DEVICE |
> QEMUD_CMD_FLAG_SMP_TOPOLOGY |
> + QEMUD_CMD_FLAG_MONITOR_JSON |
> QEMUD_CMD_FLAG_RTC,
> 12001, 0, 0);
Similarly this bit
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index e3762c9..c98de19 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -261,6 +261,9 @@ mymain(int argc, char **argv)
> QEMUD_CMD_FLAG_DRIVE_FORMAT);
> DO_TEST("disk-drive-cache-v1-none", QEMUD_CMD_FLAG_DRIVE |
> QEMUD_CMD_FLAG_DRIVE_FORMAT);
> + DO_TEST("disk-drive-error-policy-stop", QEMUD_CMD_FLAG_DRIVE |
> + QEMUD_CMD_FLAG_MONITOR_JSON |
> + QEMUD_CMD_FLAG_DRIVE_FORMAT);
> DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE |
> QEMUD_CMD_FLAG_DRIVE_CACHE_V2 | QEMUD_CMD_FLAG_DRIVE_FORMAT);
> DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE |
I think you forgot to 'git add' the two data files for the
new disk-drive-error-policy-stop test. If you also add this
same datafile to the qemuxml2xmltest.c file you'll get
coverage of XML output as well
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list