提交 680ac813 编写于 作者: G Guido Günther

openvz: support file system quota reporting

上级 41f1db6a
...@@ -407,6 +407,8 @@ openvzReadFSConf(virDomainDefPtr def, ...@@ -407,6 +407,8 @@ openvzReadFSConf(virDomainDefPtr def,
virDomainFSDefPtr fs = NULL; virDomainFSDefPtr fs = NULL;
char *veid_str = NULL; char *veid_str = NULL;
char *temp = NULL; char *temp = NULL;
const char *param;
unsigned long long barrier, limit;
ret = openvzReadVPSConfigParam(veid, "OSTEMPLATE", &temp); ret = openvzReadVPSConfigParam(veid, "OSTEMPLATE", &temp);
if (ret < 0) { if (ret < 0) {
...@@ -444,6 +446,28 @@ openvzReadFSConf(virDomainDefPtr def, ...@@ -444,6 +446,28 @@ openvzReadFSConf(virDomainDefPtr def,
fs->dst = strdup("/"); 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(VIR_ERR_OVERFLOW,
_("%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) if (fs->src == NULL || fs->dst == NULL)
goto no_memory; goto no_memory;
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
<filesystem type='template' accessmode='passthrough'> <filesystem type='template' accessmode='passthrough'>
<source name='debian'/> <source name='debian'/>
<target dir='/'/> <target dir='/'/>
<space_hard_limit>1153024</space_hard_limit>
<space_soft_limit>1048576</space_soft_limit>
</filesystem> </filesystem>
</devices> </devices>
</domain> </domain>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册