From patchwork Thu Sep 26 21:18:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cole Robinson X-Patchwork-Id: 174548 Delivered-To: patch@linaro.org Received: by 2002:a92:7e96:0:0:0:0:0 with SMTP id q22csp2611896ill; Thu, 26 Sep 2019 14:23:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqxy0bdhpQN8Pp/A2LwlDt5+mWxamg6AJmfe+Cj0iMfbYRuBBFkOrYcMWvbvW7W9e73ADxGq X-Received: by 2002:a02:b156:: with SMTP id s22mr5209436jah.102.1569533015540; Thu, 26 Sep 2019 14:23:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569533015; cv=none; d=google.com; s=arc-20160816; b=wLOZC6/b+bEppUiVQT520roVgbniZKhKVS+NG5g1/taa1UalkHvapvBvgDPJnaSZvs xcdMpwbrrb6EE9JWkR4NYgh4ifjpcstDoJCoy7cMZJf4Kx3qxxoQQtXi8ESV8eVKUTAB G+U6/a3dWAOG3cQGP0Q12SwC245MadtEvNDlAcWxAAntthR69vyrabioNJI5NqIiskAv hC/vbG8yqE0khmz3m3YlLYOhJ4GY1Sg9T2GiHol367ZxGo20dcIg8Idc++UYWv8xE96A d7ZpbvK8h3xty3z0eEaby1chrmdwbfXGcquonQCa5HEbRtD0fcc2jnBY8UQmcslZPqXu qWuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:sender:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :delivered-to; bh=5bni/YxIoOt2/d5cJP2uXZbu4G771Bs9qvt5IJnOMnk=; b=t0VMWmKPI3lbrxZnZPljgRqjWUlm5kJc6MgslmlPU42V6cDbMvAWCUXVgAj9eklbsU 2HkAfNGoDQFm0bfDLsA+MiK6UNfxf9u/8j+Pr+zBZGsyLhsZyFMhxYgq9KFmryXDjQqm gYs5oi+VFWpOgsJZOFs9TyUWMStEqfWK9Osbuf5fenGM4J8XsGRDdEiiInFZUdXNKGgd 86diXB6yA4/JU7RSTmmgvvgBokkzOFi2Azfcflqpf1cjqfj9pIoRsuoAxIeXKqF7vifd wjzZf2qHb2EsoVPG/OFctOEngpVTFSXRUj1YvvKZTBxBU5P+SZWGgCiNWO0gj8F/g8jg +zeA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of libvir-list-bounces@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id f2si4325662ion.129.2019.09.26.14.23.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Sep 2019 14:23:35 -0700 (PDT) Received-SPF: pass (google.com: domain of libvir-list-bounces@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of libvir-list-bounces@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 896285AFE3; Thu, 26 Sep 2019 21:23:33 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3CC575D6B0; Thu, 26 Sep 2019 21:23:30 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id F205B1803B37; Thu, 26 Sep 2019 21:23:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x8QLIV7W018377 for ; Thu, 26 Sep 2019 17:18:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id D3F2D60605; Thu, 26 Sep 2019 21:18:31 +0000 (UTC) Delivered-To: libvirt-list@redhat.com Received: from worklaptop.redhat.com (ovpn-123-202.rdu2.redhat.com [10.10.123.202]) by smtp.corp.redhat.com (Postfix) with ESMTP id 07D4560933; Thu, 26 Sep 2019 21:18:30 +0000 (UTC) From: Cole Robinson To: libvirt-list@redhat.com Date: Thu, 26 Sep 2019 17:18:40 -0400 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] vircgroupv2: Fix VM startup when legacy cgroups are defined X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Thu, 26 Sep 2019 21:23:34 +0000 (UTC) On Fedora 31, starting a 'mock' build alters /proc/$pid/cgroup, probably due to usage of systemd-nspawn. Before: $ cat /proc/self/cgroup 0::/user.slice/user-1000.slice/... After: $ cat /proc/self/cgroup 1:name=systemd:/ 0::/user.slice/user-1000.slice/... The cgroupv2 code mishandles that first line in the second case, which causes VM startup to fail with: Unable to read from '/sys/fs/cgroup/machine/cgroup.controllers': No such file or directory The kernel docs[1] say that the cgroupv2 path will always start with '0::', which in the code here controllers="". Only set the v2 placement path when we see that cgroup file entry. [1] https://www.kernel.org/doc/html/v5.3/admin-guide/cgroup-v2.html#processes https://bugzilla.redhat.com/show_bug.cgi?id=1751120 Signed-off-by: Cole Robinson --- src/util/vircgroupv2.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -- 2.23.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list Reviewed-by: Pavel Hrdina diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c index 0663c67190..0cb20e4896 100644 --- a/src/util/vircgroupv2.c +++ b/src/util/vircgroupv2.c @@ -194,12 +194,16 @@ virCgroupV2DetectMounts(virCgroupPtr group, static int virCgroupV2DetectPlacement(virCgroupPtr group, const char *path, - const char *controllers ATTRIBUTE_UNUSED, + const char *controllers, const char *selfpath) { if (group->unified.placement) return 0; + /* controllers="" indicates the cgroupv2 controller path */ + if (STRNEQ_NULLABLE(controllers, "")) + return 0; + /* * selfpath == "/" + path="" -> "/" * selfpath == "/libvirt.service" + path == "" -> "/libvirt.service"