[PATCHSET] blkcg: basic accounting and throttling fixes

From: Tejun Heo
Date: Sun Nov 12 2017 - 17:26:24 EST


blkcg was often getting basic accounting numbers wildly wrong and
blk-throtl could throttle the same bio multiple times leading to
significantly lower limits being enforced than configured.

This patchset contains the following seven patches to update request
cgroup membership tracking and fix the bugs.

0001-blkcg-relocate-__blkg_release_rcu.patch
0002-blkcg-use-percpu_ref-for-blkcg_gq-refcnt.patch
0003-blkcg-associate-a-request-with-its-blkcg_gq-instead-.patch
0004-blkcg-refactor-blkcg_gq-lookup-and-creation-in-blkcg.patch
0005-blkcg-associate-blk-mq-requests-with-the-matching-bl.patch
0006-blkcg-account-requests-instead-of-bios-for-request-b.patch
0007-blk-throtl-don-t-throttle-the-same-IO-multiple-times.patch

0001-0005 update request cgroup membership tracking so that the
association is always available.

0006 makes blkcg account requests instead of bios as bios don't really
have much to do with what's going on the system.

0007 prevents blk-throttle from throttling the same IO multiple times.

The patches are also available in the following git branch.

git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git review-blkcg-fixes

diffstat follows. Thanks.

block/blk-cgroup.c | 69 +++++++++++++----------
block/blk-core.c | 13 +++-
block/blk-mq.c | 9 ++-
block/blk-mq.h | 1
block/blk-throttle.c | 10 ---
include/linux/blk-cgroup.h | 134 ++++++++++++++++++++++++++++++++++++---------
include/linux/blkdev.h | 2
7 files changed, 169 insertions(+), 69 deletions(-)

--
tejun