All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Artem Bityutskiy <dedekind1@gmail.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>,
	axboe@kernel.dk, linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, lizefan@huawei.com,
	cgroups@vger.kernel.org, hannes@cmpxchg.org, kernel-team@fb.com,
	adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org,
	Dexuan Cui <decui@microsoft.com>
Subject: [PATCH cgroup/for-4.3-fixes] cgroup, writeback: don't enable cgroup writeback on traditional hierarchies
Date: Wed, 23 Sep 2015 17:07:29 -0400	[thread overview]
Message-ID: <20150923210729.GA23180@mtj.duckdns.org> (raw)
In-Reply-To: <20150923185137.GJ26647@mtj.duckdns.org>

inode_cgwb_enabled() gates cgroup writeback support.  If it returns
true, each inode is attached to the corresponding memory domain which
gets mapped to io domain.  It currently only tests whether the
filesystem and bdi support cgroup writeback; however, cgroup writeback
support doesn't work on traditional hierarchies and thus it should
also test whether memcg and iocg are on the default hierarchy.

This caused traditional hierarchy setups to hit the cgroup writeback
path inadvertently and ended up creating separate writeback domains
for each memcg and mapping them all to the root iocg uncovering a
couple issues in the cgroup writeback path.

cgroup writeback was never meant to be enabled on traditional
hierarchies.  Make inode_cgwb_enabled() test whether both memcg and
iocg are on the default hierarchy.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Artem Bityutskiy <dedekind1@gmail.com>
Reported-by: Dexuan Cui <decui@microsoft.com>
Link: http://lkml.kernel.org/g/1443012552.19983.209.camel@gmail.com
Link: http://lkml.kernel.org/g/f30d4a6aa8a546ff88f73021d026a453@SIXPR30MB031.064d.mgd.msft.net
---
Hello,

So, this should make the regression go away.  It doesn't fix the
underlying bugs but they shouldn't get triggered by people not
experimenting with cgroup.

I'm gonna keep digging the underlying issues but this should make the
regressions go away.  If it's okay, I think it'd be better to route
this through cgroup/for-4.3-fixes as it's gonna cause a conflict with
for-4.4 branch and handling the merge there is easier.

Thanks.

 include/linux/backing-dev.h |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 5a5d79e..d5eb4ad1 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -13,6 +13,7 @@
 #include <linux/sched.h>
 #include <linux/blkdev.h>
 #include <linux/writeback.h>
+#include <linux/memcontrol.h>
 #include <linux/blk-cgroup.h>
 #include <linux/backing-dev-defs.h>
 #include <linux/slab.h>
@@ -252,13 +253,19 @@ int inode_congested(struct inode *inode, int cong_bits);
  * @inode: inode of interest
  *
  * cgroup writeback requires support from both the bdi and filesystem.
- * Test whether @inode has both.
+ * Also, both memcg and iocg have to be on the default hierarchy.  Test
+ * whether all conditions are met.
+ *
+ * Note that the test result may change dynamically on the same inode
+ * depending on how memcg and iocg are configured.
  */
 static inline bool inode_cgwb_enabled(struct inode *inode)
 {
 	struct backing_dev_info *bdi = inode_to_bdi(inode);
 
-	return bdi_cap_account_dirty(bdi) &&
+	return cgroup_on_dfl(mem_cgroup_root_css->cgroup) &&
+		cgroup_on_dfl(blkcg_root_css->cgroup) &&
+		bdi_cap_account_dirty(bdi) &&
 		(bdi->capabilities & BDI_CAP_CGROUP_WRITEBACK) &&
 		(inode->i_sb->s_iflags & SB_I_CGROUPWB);
 }

  reply	other threads:[~2015-09-23 21:07 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-16 22:53 [PATCHSET v2 block/for-4.2/writeback] ext4: implement cgroup writeback support Tejun Heo
2015-06-16 22:53 ` Tejun Heo
2015-06-16 22:53 ` [PATCH 1/2] ext4: replace ext4_io_submit->io_op with ->io_wbc Tejun Heo
2015-07-22  3:56   ` Theodore Ts'o
2015-07-22  3:56     ` Theodore Ts'o
2015-06-16 22:53 ` [PATCH 2/2] ext4: implement cgroup writeback support Tejun Heo
2015-07-22  3:56   ` Theodore Ts'o
2015-07-22  3:56     ` Theodore Ts'o
2015-09-23 12:49     ` Artem Bityutskiy
2015-09-23 13:50       ` Artem Bityutskiy
2015-09-23 17:02         ` Theodore Ts'o
2015-09-23 17:57           ` Tejun Heo
2015-09-23 17:25       ` Chris Mason
2015-09-23 17:25         ` Chris Mason
     [not found]         ` <CAF4G-tKEcnVw76-ZU77AjmBDGybLnNEOKjkJtYBN67es0wb30g@mail.gmail.com>
2015-09-23 17:53           ` Chris Mason
2015-09-23 17:53             ` Chris Mason
2015-09-23 18:24             ` Theodore Ts'o
     [not found]               ` <CAF4G-t+E89a_A3RzQYB9wXxqE6nM0t7wN6fNmLABZ70=ivHTRQ@mail.gmail.com>
2015-09-23 19:47                 ` Artem Bityutskiy
2015-09-23 19:47                   ` Artem Bityutskiy
2015-09-23 20:48                   ` Theodore Ts'o
2015-09-24  8:13                     ` Artem Bityutskiy
2015-09-23 19:03           ` Tejun Heo
2015-09-23 19:03             ` Tejun Heo
2015-09-23 18:09       ` Tejun Heo
2015-09-23 18:09         ` Tejun Heo
2015-09-23 18:51         ` Tejun Heo
2015-09-23 18:51           ` Tejun Heo
2015-09-23 21:07           ` Tejun Heo [this message]
2015-09-24  8:09             ` [PATCH cgroup/for-4.3-fixes] cgroup, writeback: don't enable cgroup writeback on traditional hierarchies Artem Bityutskiy
2015-09-24  8:40               ` Dexuan Cui
2015-09-24  8:40                 ` Dexuan Cui
2015-09-24 20:47                 ` Tejun Heo
2015-09-24 20:47                   ` Tejun Heo
2015-09-28 21:39                   ` Tejun Heo
2015-09-24 20:45               ` Tejun Heo
2015-09-24 20:45                 ` Tejun Heo
2015-09-25  6:49                 ` Artem Bityutskiy
2015-09-25  6:49                   ` Artem Bityutskiy
2015-09-25 10:50                   ` Artem Bityutskiy
2015-09-25 10:50                     ` Artem Bityutskiy
2015-09-25 15:49                     ` Tejun Heo
2015-09-26  8:06                       ` Artem Bityutskiy
2015-09-26 22:14                         ` Tejun Heo
2015-09-29 11:37                           ` Artem Bityutskiy
2015-09-29 11:37                             ` Artem Bityutskiy
2015-09-29 14:26                             ` Tejun Heo
2015-09-24 16:17             ` Jens Axboe
2015-09-24 16:17               ` Jens Axboe
2015-09-24 16:17               ` Jens Axboe
2015-09-24 20:48             ` Tejun Heo
2015-07-12 18:05 ` [PATCHSET v2 block/for-4.2/writeback] ext4: implement cgroup writeback support Tejun Heo
2015-07-16 19:40   ` Tejun Heo
2015-07-16 19:40     ` Tejun Heo
2015-07-16 23:21     ` Dave Chinner
2015-07-16 23:37       ` Tejun Heo
2015-07-17  1:37   ` Theodore Ts'o
2015-07-17  1:37     ` Theodore Ts'o
2015-07-17 15:20     ` Tejun Heo

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=20150923210729.GA23180@mtj.duckdns.org \
    --to=tj@kernel.org \
    --cc=adilger.kernel@dilger.ca \
    --cc=axboe@kernel.dk \
    --cc=cgroups@vger.kernel.org \
    --cc=decui@microsoft.com \
    --cc=dedekind1@gmail.com \
    --cc=hannes@cmpxchg.org \
    --cc=kernel-team@fb.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=tytso@mit.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.