int ret = 0;
int rc;
size_t i;
+ bool backendAvailable = false;
virCgroupBackendPtr *backends = virCgroupBackendGetAll();
virHashTablePtr pids = virHashCreateFull(100,
NULL,
VIR_DEBUG("group=%p path=%s signum=%d", group, group->path, signum);
- if (!backends) {
- ret = -1;
- goto cleanup;
- }
-
for (i = 0; i < VIR_CGROUP_BACKEND_TYPE_LAST; i++) {
- if (backends[i]) {
+ if (backends && backends[i] && backends[i]->available()) {
+ backendAvailable = true;
rc = backends[i]->killRecursive(group, signum, pids);
if (rc < 0) {
ret = -1;
}
}
+ if (!backends || !backendAvailable) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("no cgroup backend available"));
+ goto cleanup;
+ }
+
cleanup:
virHashFree(pids);
return ret;