virCgroupSetupBlkioDeviceWeight;
virCgroupSetupBlkioDeviceWriteBps;
virCgroupSetupBlkioDeviceWriteIops;
+virCgroupSetupCpuPeriodQuota;
virCgroupSetupCpusetCpus;
virCgroupSetupCpuShares;
virCgroupSupportsCpuBW;
def->cputune.shares = val;
}
- if (def->cputune.quota != 0 &&
- virCgroupSetCpuCfsQuota(cgroup, def->cputune.quota) < 0)
- return -1;
-
- if (def->cputune.period != 0 &&
- virCgroupSetCpuCfsPeriod(cgroup, def->cputune.period) < 0)
- return -1;
-
- return 0;
+ return virCgroupSetupCpuPeriodQuota(cgroup, def->cputune.period,
+ def->cputune.quota);
}
static int lxcSetVcpuBWLive(virCgroupPtr cgroup, unsigned long long period,
long long quota)
{
- unsigned long long old_period;
-
- if (period == 0 && quota == 0)
- return 0;
-
- if (period) {
- /* get old period, and we can rollback if set quota failed */
- if (virCgroupGetCpuCfsPeriod(cgroup, &old_period) < 0)
- return -1;
-
- if (virCgroupSetCpuCfsPeriod(cgroup, period) < 0)
- return -1;
- }
-
- if (quota) {
- if (virCgroupSetCpuCfsQuota(cgroup, quota) < 0)
- goto error;
- }
-
- return 0;
-
- error:
- if (period) {
- virErrorPtr saved;
-
- virErrorPreserveLast(&saved);
- virCgroupSetCpuCfsPeriod(cgroup, old_period);
- virErrorRestore(&saved);
- }
-
- return -1;
+ return virCgroupSetupCpuPeriodQuota(cgroup, period, quota);
}
unsigned long long period,
long long quota)
{
- unsigned long long old_period;
-
- if (period == 0 && quota == 0)
- return 0;
-
- if (period) {
- /* get old period, and we can rollback if set quota failed */
- if (virCgroupGetCpuCfsPeriod(cgroup, &old_period) < 0)
- return -1;
-
- if (virCgroupSetCpuCfsPeriod(cgroup, period) < 0)
- return -1;
- }
-
- if (quota &&
- virCgroupSetCpuCfsQuota(cgroup, quota) < 0)
- goto error;
-
- return 0;
-
- error:
- if (period) {
- virErrorPtr saved;
-
- virErrorPreserveLast(&saved);
- ignore_value(virCgroupSetCpuCfsPeriod(cgroup, old_period));
- virErrorRestore(&saved);
- }
-
- return -1;
+ return virCgroupSetupCpuPeriodQuota(cgroup, period, quota);
}
return 0;
}
+
+
+int
+virCgroupSetupCpuPeriodQuota(virCgroupPtr cgroup,
+ unsigned long long period,
+ long long quota)
+{
+ unsigned long long old_period;
+
+ if (period == 0 && quota == 0)
+ return 0;
+
+ if (period) {
+ /* get old period, and we can rollback if set quota failed */
+ if (virCgroupGetCpuCfsPeriod(cgroup, &old_period) < 0)
+ return -1;
+
+ if (virCgroupSetCpuCfsPeriod(cgroup, period) < 0)
+ return -1;
+ }
+
+ if (quota &&
+ virCgroupSetCpuCfsQuota(cgroup, quota) < 0)
+ goto error;
+
+ return 0;
+
+ error:
+ if (period) {
+ virErrorPtr saved;
+
+ virErrorPreserveLast(&saved);
+ ignore_value(virCgroupSetCpuCfsPeriod(cgroup, old_period));
+ virErrorRestore(&saved);
+ }
+
+ return -1;
+}
int virCgroupSetCpuCfsPeriod(virCgroupPtr group, unsigned long long cfs_period);
int virCgroupGetCpuCfsPeriod(virCgroupPtr group, unsigned long long *cfs_period);
+int virCgroupSetupCpuPeriodQuota(virCgroupPtr cgroup, unsigned long long period,
+ long long quota);
int virCgroupSetCpuCfsQuota(virCgroupPtr group, long long cfs_quota);
int virCgroupGetCpuCfsQuota(virCgroupPtr group, long long *cfs_quota);