diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index fb05bf734c..7108c7e1af 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -15528,8 +15528,8 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
/* Extract cpu tunables. */
- if ((n = virXPathULong("string(./cputune/shares[1])", ctxt,
- &def->cputune.shares)) < -1) {
+ if ((n = virXPathULongLong("string(./cputune/shares[1])", ctxt,
+ &def->cputune.shares)) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("can't parse cputune shares value"));
goto error;
@@ -22158,7 +22158,7 @@ virDomainCputuneDefFormat(virBufferPtr buf,
virBufferAdjustIndent(&childrenBuf, virBufferGetIndent(buf, false) + 2);
if (def->cputune.sharesSpecified)
- virBufferAsprintf(&childrenBuf, "%lu\n",
+ virBufferAsprintf(&childrenBuf, "%llu\n",
def->cputune.shares);
if (def->cputune.period)
virBufferAsprintf(&childrenBuf, "%llu\n",
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 82e581bb0f..4e0550c4a1 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2011,7 +2011,7 @@ typedef struct _virDomainCputune virDomainCputune;
typedef virDomainCputune *virDomainCputunePtr;
struct _virDomainCputune {
- unsigned long shares;
+ unsigned long long shares;
bool sharesSpecified;
unsigned long long period;
long long quota;
diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c
index 0bea32e483..5f9e50e15a 100644
--- a/src/lxc/lxc_native.c
+++ b/src/lxc/lxc_native.c
@@ -800,7 +800,7 @@ lxcSetCpuTune(virDomainDefPtr def, virConfPtr properties)
if ((value = virConfGetValue(properties, "lxc.cgroup.cpu.shares")) &&
value->str) {
- if (virStrToLong_ul(value->str, NULL, 10, &def->cputune.shares) < 0)
+ if (virStrToLong_ull(value->str, NULL, 10, &def->cputune.shares) < 0)
goto error;
def->cputune.sharesSpecified = true;
}
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index f729e5dc03..68a199f354 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -1547,8 +1547,8 @@ virVMXParseConfig(virVMXContext *ctx,
def->cputune.shares = vcpus * 1000;
} else if (STRCASEEQ(sched_cpu_shares, "high")) {
def->cputune.shares = vcpus * 2000;
- } else if (virStrToLong_ul(sched_cpu_shares, NULL, 10,
- &def->cputune.shares) < 0) {
+ } else if (virStrToLong_ull(sched_cpu_shares, NULL, 10,
+ &def->cputune.shares) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Expecting VMX entry 'sched.cpu.shares' to be an "
"unsigned integer or 'low', 'normal' or 'high' but "
@@ -3251,7 +3251,7 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe
} else if (def->cputune.shares == vcpus * 2000) {
virBufferAddLit(&buffer, "sched.cpu.shares = \"high\"\n");
} else {
- virBufferAsprintf(&buffer, "sched.cpu.shares = \"%lu\"\n",
+ virBufferAsprintf(&buffer, "sched.cpu.shares = \"%llu\"\n",
def->cputune.shares);
}
}