---
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