blkcg: implement REQ_CGROUP_PUNT
authorTejun Heo <tj@kernel.org>
Thu, 27 Jun 2019 20:39:52 +0000 (13:39 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 10 Jul 2019 15:00:57 +0000 (09:00 -0600)
commitd3f77dfdc71835f8db71ca57d272b1fbec9dfc18
treeced59cee416b39c3c2f80c647c736a2d378772e3
parent653c45c6b90c9659facbef10546d1f3a8e37d0cf
blkcg: implement REQ_CGROUP_PUNT

When a shared kthread needs to issue a bio for a cgroup, doing so
synchronously can lead to priority inversions as the kthread can be
trapped waiting for that cgroup.  This patch implements
REQ_CGROUP_PUNT flag which makes submit_bio() punt the actual issuing
to a dedicated per-blkcg work item to avoid such priority inversions.

This will be used to fix priority inversions in btrfs compression and
should be generally useful as we grow filesystem support for
comprehensive IO control.

Cc: Chris Mason <clm@fb.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-cgroup.c
block/blk-core.c
include/linux/backing-dev.h
include/linux/blk-cgroup.h
include/linux/blk_types.h
include/linux/writeback.h