diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 36893997e3..8f744871d2 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -2213,7 +2213,8 @@
An in-memory filesystem, using memory from the host OS.
The source element has a single attribute usage
- which gives the memory usage limit in kibibytes. Only used
+ which gives the memory usage limit in KiB, unless units
+ are specified by the units
attribute. Only used
by LXC driver.
(since 0.9.13)
type='bind'
@@ -2279,7 +2280,8 @@
name
attribute must be used with
type='template'
, and the dir
attribute must
be used with type='mount'
. The usage
attribute
- is used with type='ram'
to set the memory limit in KB.
+ is used with type='ram'
to set the memory limit in KiB,
+ unless units are specified by the units
attribute.
target
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 5c5301d8af..10b017f0e6 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -1732,7 +1732,7 @@
-
+
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 0d63845598..e3737bce95 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5916,7 +5916,7 @@ virDomainFSDefParseXML(xmlNodePtr node,
char *accessmode = NULL;
char *wrpolicy = NULL;
char *usage = NULL;
- char *unit = NULL;
+ char *units = NULL;
ctxt->node = node;
@@ -5972,7 +5972,7 @@ virDomainFSDefParseXML(xmlNodePtr node,
source = virXMLPropString(cur, "name");
else if (def->type == VIR_DOMAIN_FS_TYPE_RAM) {
usage = virXMLPropString(cur, "usage");
- unit = virXMLPropString(cur, "unit");
+ units = virXMLPropString(cur, "units");
}
} else if (!target &&
xmlStrEqual(cur->name, BAD_CAST "target")) {
@@ -6042,8 +6042,7 @@ virDomainFSDefParseXML(xmlNodePtr node,
usage);
goto error;
}
- if (unit &&
- virScaleInteger(&def->usage, unit,
+ if (virScaleInteger(&def->usage, units,
1024, ULLONG_MAX) < 0)
goto error;
}
@@ -6065,7 +6064,7 @@ cleanup:
VIR_FREE(accessmode);
VIR_FREE(wrpolicy);
VIR_FREE(usage);
- VIR_FREE(unit);
+ VIR_FREE(units);
VIR_FREE(format);
return def;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index f20a91687e..5d5e4431f9 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -890,7 +890,7 @@ struct _virDomainFSDef {
int accessmode; /* enum virDomainFSAccessMode */
int wrpolicy; /* enum virDomainFSWrpolicy */
int format; /* enum virStorageFileFormat */
- unsigned long long usage;
+ unsigned long long usage; /* in bytes */
char *src;
char *dst;
bool readonly;
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index b1f429cd20..7c722ccdc9 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -1428,7 +1428,7 @@ static int lxcContainerMountFSTmpfs(virDomainFSDefPtr fs,
VIR_DEBUG("usage=%lld sec=%s", fs->usage, sec_mount_options);
if (virAsprintf(&data,
- "size=%lldk%s", fs->usage, sec_mount_options) < 0)
+ "size=%lld%s", fs->usage, sec_mount_options) < 0)
goto cleanup;
if (virFileMakePath(fs->dst) < 0) {
diff --git a/tests/domainschematest b/tests/domainschematest
index 0e360caae9..9ebf0b9a58 100755
--- a/tests/domainschematest
+++ b/tests/domainschematest
@@ -7,7 +7,7 @@
DIRS=""
DIRS="$DIRS domainschemadata qemuxml2argvdata sexpr2xmldata"
DIRS="$DIRS xmconfigdata xml2sexprdata qemuxml2xmloutdata "
-DIRS="$DIRS lxcxml2xmldata"
+DIRS="$DIRS lxcxml2xmldata lxcxml2xmloutdata"
SCHEMA="domain.rng"
check_schema "$DIRS" "$SCHEMA"
diff --git a/tests/lxcxml2xmldata/lxc-filesystem-ram.xml b/tests/lxcxml2xmldata/lxc-filesystem-ram.xml
new file mode 100644
index 0000000000..002fde6ad1
--- /dev/null
+++ b/tests/lxcxml2xmldata/lxc-filesystem-ram.xml
@@ -0,0 +1,33 @@
+
+ demo
+ 8369f1ac-7e46-e869-4ca5-759d51478066
+ 500000
+ 500000
+ 1
+
+ exe
+ /bin/sh
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/libexec/libvirt_lxc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/lxcxml2xmloutdata/lxc-filesystem-ram.xml b/tests/lxcxml2xmloutdata/lxc-filesystem-ram.xml
new file mode 100644
index 0000000000..d2369a25d1
--- /dev/null
+++ b/tests/lxcxml2xmloutdata/lxc-filesystem-ram.xml
@@ -0,0 +1,33 @@
+
+ demo
+ 8369f1ac-7e46-e869-4ca5-759d51478066
+ 500000
+ 500000
+ 1
+
+ exe
+ /bin/sh
+
+
+ destroy
+ restart
+ destroy
+
+ /usr/libexec/libvirt_lxc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/lxcxml2xmltest.c b/tests/lxcxml2xmltest.c
index 5846ab026d..1692e4bbaa 100644
--- a/tests/lxcxml2xmltest.c
+++ b/tests/lxcxml2xmltest.c
@@ -136,6 +136,7 @@ mymain(void)
DO_TEST("systemd");
DO_TEST("hostdev");
DO_TEST("disk-formats");
+ DO_TEST_DIFFERENT("filesystem-ram");
virObjectUnref(caps);
virObjectUnref(xmlopt);