virCgroupKillRecursive;
virCgroupMoveTask;
virCgroupNewDetect;
+virCgroupNewDetectMachine;
virCgroupNewDomainPartition;
virCgroupNewEmulator;
virCgroupNewIgnoreError;
goto cleanup;
}
- if (virCgroupNewDetect(vm->pid, &priv->cgroup) < 0)
+ if (virCgroupNewDetectMachine(vm->def->name, "lxc",
+ vm->pid, &priv->cgroup) < 0)
goto error;
- if (!virCgroupIsValidMachineGroup(priv->cgroup,
- vm->def->name,
- "lxc")) {
+ if (!priv->cgroup) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Cgroup name is not valid for machine %s"),
+ _("No valid cgroup for machine %s"),
vm->def->name);
- virCgroupFree(&priv->cgroup);
goto error;
}
if (!(priv->monitor = virLXCProcessConnectMonitor(driver, vm)))
goto error;
- if (virCgroupNewDetect(vm->pid, &priv->cgroup) < 0)
+ if (virCgroupNewDetectMachine(vm->def->name, "lxc",
+ vm->pid, &priv->cgroup) < 0)
goto error;
- if (!virCgroupIsValidMachineGroup(priv->cgroup,
- vm->def->name,
- "lxc")) {
+ if (!priv->cgroup) {
virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Cgroup name is not valid for machine %s"),
+ _("No valid cgroup for machine %s"),
vm->def->name);
- virCgroupFree(&priv->cgroup);
goto error;
}
virCgroupFree(&priv->cgroup);
- if (virCgroupNewDetect(vm->pid, &priv->cgroup) < 0) {
- if (virCgroupNewIgnoreError())
- goto done;
+ if (virCgroupNewDetectMachine(vm->def->name,
+ "qemu",
+ vm->pid,
+ &priv->cgroup) < 0)
goto cleanup;
- }
-
- if (!virCgroupIsValidMachineGroup(priv->cgroup,
- vm->def->name,
- "qemu")) {
- VIR_DEBUG("Cgroup name is not valid for machine");
- virCgroupFree(&priv->cgroup);
- goto done;
- }
done:
ret = 0;
}
#endif
+/*
+ * Returns 0 on success (but @group may be NULL), -1 on fatal error
+ */
+int virCgroupNewDetectMachine(const char *name,
+ const char *drivername,
+ pid_t pid,
+ virCgroupPtr *group)
+{
+ if (virCgroupNewDetect(pid, group) < 0) {
+ if (virCgroupNewIgnoreError())
+ return 0;
+ return -1;
+ }
+
+ if (!virCgroupIsValidMachineGroup(*group, name, drivername)) {
+ virCgroupFree(group);
+ return 0;
+ }
+
+ return 0;
+}
+
int virCgroupNewMachine(const char *name,
const char *drivername,
bool privileged ATTRIBUTE_UNUSED,
int virCgroupNewDetect(pid_t pid,
virCgroupPtr *group);
+int virCgroupNewDetectMachine(const char *name,
+ const char *drivername,
+ pid_t pid,
+ virCgroupPtr *group);
+
int virCgroupNewMachine(const char *name,
const char *drivername,
bool privileged,