--- src/conf/domain_conf.c | 4 ++-- src/openvz/openvz_conf.c | 24 +++++++++++++++++++++++ tests/domainschemadata/domain-openvz-simple.xml | 2 ++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a75e7e8..357929b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11337,10 +11337,10 @@ virDomainFSDefFormat(virBufferPtr buf, if (def->space_hard_limit) - virBufferAsprintf(buf, " <space_hard_limit unit='B'>" + virBufferAsprintf(buf, " <space_hard_limit unit='bytes'>" "%llu</space_hard_limit>\n", def->space_hard_limit); if (def->space_soft_limit) { - virBufferAsprintf(buf, " <space_soft_limit unit='B'>" + virBufferAsprintf(buf, " <space_soft_limit unit='bytes'>" "%llu</space_soft_limit>\n", def->space_soft_limit); } virBufferAddLit(buf, " </filesystem>\n"); diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 5f107ed..363cd1e 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -407,6 +407,8 @@ openvzReadFSConf(virDomainDefPtr def, virDomainFSDefPtr fs = NULL; char *veid_str = NULL; char *temp = NULL; + const char *param; + unsigned long long barrier, limit; ret = openvzReadVPSConfigParam(veid, "OSTEMPLATE", &temp); if (ret < 0) { @@ -444,6 +446,28 @@ openvzReadFSConf(virDomainDefPtr def, fs->dst = strdup("/"); + param = "DISKSPACE"; + ret = openvzReadVPSConfigParam(veid, param, &temp); + if (ret > 0) { + if (openvzParseBarrierLimit(temp, &barrier, &limit)) { + openvzError(VIR_ERR_INTERNAL_ERROR, + _("Could not read '%s' from config for container %d"), + param, veid); + goto error; + } else { + /* Ensure that we can multiply by 1024 without overflowing. */ + if (barrier > ULONG_LONG_MAX / 1024 || + limit > ULONG_LONG_MAX / 1024 ) { + virReportSystemError(EINVAL, + _("%s"), + "Unable to parse quota"); + goto error; + } + fs->space_soft_limit = barrier * 1024; /* unit is bytes */ + fs->space_hard_limit = limit * 1024; /* unit is bytes */ + } + } + if (fs->src == NULL || fs->dst == NULL) goto no_memory; diff --git a/tests/domainschemadata/domain-openvz-simple.xml b/tests/domainschemadata/domain-openvz-simple.xml index a121d39..949e96d 100644 --- a/tests/domainschemadata/domain-openvz-simple.xml +++ b/tests/domainschemadata/domain-openvz-simple.xml @@ -21,6 +21,8 @@ <filesystem type='template' accessmode='passthrough'> <source name='debian'/> <target dir='/'/> + <space_hard_limit>1153024</space_hard_limit> + <space_soft_limit>1048576</space_soft_limit> </filesystem> </devices> </domain> -- 1.7.10 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list