From: Andreas Herrmann <aherrmann@suse.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: fio <fio@vger.kernel.org>, Andreas Herrmann <aherrmann@suse.com>
Subject: [PATCH v3 resend 1/4] cgroup: Fix handling when cgroup blkio and cgroup-v2 are mounted
Date: Fri, 30 Oct 2020 12:11:46 +0100 [thread overview]
Message-ID: <20201030111147.19175-2-aherrmann@suse.com> (raw)
In-Reply-To: <20201030111147.19175-1-aherrmann@suse.com>
On systems that have a mixed setup of cgroup and cgroup-v2, blkio
controller might be active. I think in this case there is no point in
using cgroup-v2. One needs to boot with cgroup_no_v1=blkio to be able
to use cgroup-v2 IO controller.
Signed-off-by: Andreas Herrmann <aherrmann@suse.com>
---
cgroup.c | 58 ++++++++++++++++++++++++++++++++++++++------------------
1 file changed, 40 insertions(+), 18 deletions(-)
diff --git a/cgroup.c b/cgroup.c
index 77e31a4d..fc31d4cd 100644
--- a/cgroup.c
+++ b/cgroup.c
@@ -20,11 +20,10 @@ struct cgroup_member {
static struct cgroup_mnt *find_cgroup_mnt(struct thread_data *td)
{
- struct cgroup_mnt *cgroup_mnt = NULL;
+ struct cgroup_mnt *cgroup_mnt, *cg1_mnt = NULL, *cg2_mnt = NULL;
struct mntent *mnt, dummy;
char buf[256] = {0};
FILE *f;
- bool cgroup2 = false;
f = setmntent("/proc/mounts", "r");
if (!f) {
@@ -34,27 +33,50 @@ static struct cgroup_mnt *find_cgroup_mnt(struct thread_data *td)
while ((mnt = getmntent_r(f, &dummy, buf, sizeof(buf))) != NULL) {
if (!strcmp(mnt->mnt_type, "cgroup") &&
- strstr(mnt->mnt_opts, "blkio"))
- break;
- if (!strcmp(mnt->mnt_type, "cgroup2")) {
- cgroup2 = true;
+ strstr(mnt->mnt_opts, "blkio")) {
+ cg1_mnt = smalloc(sizeof(*cg1_mnt));
+ if (cg1_mnt) {
+ cg1_mnt->path = smalloc_strdup(mnt->mnt_dir);
+ if (!cg1_mnt->path) {
+ sfree(cg1_mnt);
+ cg1_mnt = NULL;
+ log_err("fio: could not allocate memory\n");
+ }
+ }
+ /*
+ * blkio controller has precedence
+ */
break;
+ } if (!strcmp(mnt->mnt_type, "cgroup2")) {
+ if (cg2_mnt)
+ continue;
+ cg2_mnt = smalloc(sizeof(*cg2_mnt));
+ if (cg2_mnt) {
+ cg2_mnt->path = smalloc_strdup(mnt->mnt_dir);
+ if (!cg2_mnt->path) {
+ sfree(cg2_mnt);
+ cg2_mnt = NULL;
+ log_err("fio: could not allocate memory\n");
+ } else
+ cg2_mnt->cgroup2 = true;
+ }
+ /*
+ * Check all mount points, there can be a mix
+ * of cgroup-v1 and cgroup-v2
+ */
+ continue;
}
}
- if (mnt) {
- cgroup_mnt = smalloc(sizeof(*cgroup_mnt));
- if (cgroup_mnt) {
- cgroup_mnt->path = smalloc_strdup(mnt->mnt_dir);
- if (!cgroup_mnt->path) {
- sfree(cgroup_mnt);
- log_err("fio: could not allocate memory\n");
- } else {
- cgroup_mnt->cgroup2 = cgroup2;
- }
- }
+ cgroup_mnt = NULL;
+ if (cg1_mnt) {
+ cgroup_mnt = cg1_mnt;
+ if (cg2_mnt)
+ sfree(cg2_mnt);
+ } else if (cg2_mnt) {
+ cgroup_mnt = cg2_mnt;
} else {
- log_err("fio: cgroup blkio does not appear to be mounted\n");
+ log_err("fio: cgroup blkio or cgroup2 do not appear to be mounted\n");
}
endmntent(f);
--
2.29.0
next prev parent reply other threads:[~2020-10-30 11:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-30 11:11 [PATCH v3 resend 0/4] cgroup: Support cgroup-v2 weight and BFQ weight Andreas Herrmann
2020-10-30 11:11 ` Andreas Herrmann [this message]
2020-10-30 11:11 ` [PATCH v3 resend 2/4] cgroup: Allow to use weights with cgroup-v2 Andreas Herrmann
2020-10-30 11:11 ` [PATCH v3 resend 3/4] thread_options: Introduce cgroup_use_bfq Andreas Herrmann
2020-10-30 11:11 ` [PATCH v3 resend 4/4] cgroup: Support BFQ's weight attributes Andreas Herrmann
2020-11-22 14:52 ` [PATCH v3 resend 0/4] cgroup: Support cgroup-v2 weight and BFQ weight Sitsofe Wheeler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201030111147.19175-2-aherrmann@suse.com \
--to=aherrmann@suse.com \
--cc=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox