Messages in this thread | | | Date | Thu, 25 Jun 2015 08:44:32 -0600 | From | Jens Axboe <> | Subject | [GIT PULL] Cgroup writeback support for 4.2 |
| |
Hi Linus,
This is the big pull request for adding cgroup writeback support. This code has been in development for a long time, and it has been simmering in for-next for a good chunk of this cycle too. This is one of those problems that has been talked about for at least half a decade, finally there's a solution and code to go with it.
Also see last weeks writeup on LWN:
http://lwn.net/Articles/648292/
This pull request is on top of for-4.2/core, sent out earlier.
Please pull!
git://git.kernel.dk/linux-block.git for-4.2/writeback
---------------------------------------------------------------- Greg Thelen (1): memcg: add per cgroup dirty page accounting
Jens Axboe (1): buffer: remove unusued 'ret' variable
Tejun Heo (83): page_writeback: revive cancel_dirty_page() in a restricted form blkcg: move block/blk-cgroup.h to include/linux/blk-cgroup.h update !CONFIG_BLK_CGROUP dummies in include/linux/blk-cgroup.h blkcg: always create the blkcg_gq for the root blkcg memcg: add mem_cgroup_root_css blkcg: add blkcg_root_css cgroup, block: implement task_get_css() and use it in bio_associate_current() blkcg: implement task_get_blkcg_css() blkcg: implement bio_associate_blkcg() memcg: implement mem_cgroup_css_from_page() writeback: move backing_dev_info->state into bdi_writeback writeback: move backing_dev_info->bdi_stat[] into bdi_writeback writeback: move bandwidth related fields from backing_dev_info into bdi_writeback writeback: s/bdi/wb/ in mm/page-writeback.c writeback: move backing_dev_info->wb_lock and ->worklist into bdi_writeback writeback: reorganize mm/backing-dev.c writeback: separate out include/linux/backing-dev-defs.h bdi: make inode_to_bdi() inline writeback: add @gfp to wb_init() bdi: separate out congested state into a separate struct writeback: add {CONFIG|BDI_CAP|FS}_CGROUP_WRITEBACK writeback: make backing_dev_info host cgroup-specific bdi_writebacks writeback, blkcg: associate each blkcg_gq with the corresponding bdi_writeback_congested writeback: attribute stats to the matching per-cgroup bdi_writeback writeback: let balance_dirty_pages() work on the matching cgroup bdi_writeback writeback: make congestion functions per bdi_writeback writeback, blkcg: restructure blk_{set|clear}_queue_congested() writeback, blkcg: propagate non-root blkcg congestion state writeback: implement and use inode_congested() writeback: implement WB_has_dirty_io wb_state flag writeback: implement backing_dev_info->tot_write_bandwidth writeback: make bdi_has_dirty_io() take multiple bdi_writeback's into account writeback: don't issue wb_writeback_work if clean writeback: make bdi->min/max_ratio handling cgroup writeback aware writeback: implement bdi_for_each_wb() writeback: remove bdi_start_writeback() writeback: make laptop_mode_timer_fn() handle multiple bdi_writeback's writeback: make writeback_in_progress() take bdi_writeback instead of backing_dev_info writeback: make bdi_start_background_writeback() take bdi_writeback instead of backing_dev_info writeback: make wakeup_flusher_threads() handle multiple bdi_writeback's writeback: make wakeup_dirtytime_writeback() handle multiple bdi_writeback's writeback: add wb_writeback_work->auto_free writeback: implement bdi_wait_for_completion() writeback: implement wb_wait_for_single_work() writeback: restructure try_writeback_inodes_sb[_nr]() writeback: make writeback initiation functions handle multiple bdi_writeback's writeback: dirty inodes against their matching cgroup bdi_writeback's buffer, writeback: make __block_write_full_page() honor cgroup writeback mpage: make __mpage_writepage() honor cgroup writeback ext2: enable cgroup writeback support memcg: make mem_cgroup_read_{stat|event}() iterate possible cpus instead of online writeback: clean up wb_dirty_limit() writeback: reorganize [__]wb_update_bandwidth() writeback: implement wb_domain writeback: move global_dirty_limit into wb_domain writeback: consolidate dirty throttle parameters into dirty_throttle_control writeback: add dirty_throttle_control->wb_bg_thresh writeback: make __wb_calc_thresh() take dirty_throttle_control writeback: add dirty_throttle_control->pos_ratio writeback: add dirty_throttle_control->wb_completions writeback: add dirty_throttle_control->dom writeback: make __wb_writeout_inc() and hard_dirty_limit() take wb_domaas a parameter writeback: separate out domain_dirty_limits() writeback: move over_bground_thresh() to mm/page-writeback.c writeback: update wb_over_bg_thresh() to use wb_domain aware operations writeback: implement memcg wb_domain writeback: reset wb_domain->dirty_limit[_tstmp] when memcg domain size changes writeback: implement memcg writeback domain based throttling mm: vmscan: disable memcg direct reclaim stalling if cgroup writeback support is in use writeback: relocate wb[_try]_get(), wb_put(), inode_{attach|detach}_wb() writeback: make writeback_control track the inode being written back writeback: implement foreign cgroup inode detection writeback: implement [locked_]inode_to_wb_and_lock_list() writeback: implement unlocked_inode_to_wb transaction and use it for stat updates writeback: use unlocked_inode_to_wb transaction in inode_congested() writeback: add lockdep annotation to inode_to_wb() writeback: implement foreign cgroup inode bdi_writeback switching writeback: disassociate inodes from dying bdi_writebacks bdi: fix wrong error return value in cgwb_create() v9fs: fix error handling in v9fs_session_init() writeback: do foreign inode detection iff cgroup writeback is enabled vfs, writeback: replace FS_CGROUP_WRITEBACK with SB_I_CGROUPWB writeback, blkio: add documentation for cgroup writeback support
Documentation/cgroups/blkio-controller.txt | 83 +- Documentation/cgroups/memory.txt | 1 + block/bio.c | 35 +- block/blk-cgroup.c | 124 +- block/blk-core.c | 70 +- block/blk-integrity.c | 1 + block/blk-sysfs.c | 3 +- block/blk-throttle.c | 2 +- block/bounce.c | 1 + block/cfq-iosched.c | 2 +- block/elevator.c | 2 +- block/genhd.c | 1 + drivers/block/drbd/drbd_int.h | 1 + drivers/block/drbd/drbd_main.c | 10 +- drivers/block/pktcdvd.c | 1 + drivers/char/raw.c | 1 + drivers/md/bcache/request.c | 1 + drivers/md/dm.c | 2 +- drivers/md/dm.h | 1 + drivers/md/md.h | 1 + drivers/md/raid1.c | 4 +- drivers/md/raid10.c | 2 +- drivers/mtd/devices/block2mtd.c | 1 + .../lustre/include/linux/lustre_patchless_compat.h | 4 +- fs/9p/v9fs.c | 50 +- fs/9p/vfs_super.c | 8 +- fs/block_dev.c | 9 +- fs/buffer.c | 64 +- fs/ext2/super.c | 1 + fs/ext4/extents.c | 1 + fs/ext4/mballoc.c | 1 + fs/ext4/super.c | 1 + fs/f2fs/node.c | 4 +- fs/f2fs/segment.h | 3 +- fs/fat/file.c | 1 + fs/fat/inode.c | 1 + fs/fs-writeback.c | 1167 +++++++++++++++---- fs/fuse/file.c | 12 +- fs/gfs2/super.c | 2 +- fs/hfs/super.c | 1 + fs/hfsplus/super.c | 1 + fs/inode.c | 1 + fs/mpage.c | 3 + fs/nfs/filelayout/filelayout.c | 1 + fs/nfs/internal.h | 2 +- fs/nfs/write.c | 3 +- fs/ocfs2/file.c | 1 + fs/reiserfs/super.c | 1 + fs/ufs/super.c | 1 + fs/xfs/xfs_aops.c | 12 +- fs/xfs/xfs_file.c | 1 + include/linux/backing-dev-defs.h | 255 ++++ include/linux/backing-dev.h | 557 ++++++--- include/linux/bio.h | 3 + {block => include/linux}/blk-cgroup.h | 32 +- include/linux/blkdev.h | 21 +- include/linux/cgroup.h | 25 + include/linux/fs.h | 26 +- include/linux/memcontrol.h | 29 + include/linux/mm.h | 8 +- include/linux/pagemap.h | 3 +- include/linux/writeback.h | 221 +++- include/trace/events/writeback.h | 15 +- init/Kconfig | 5 + mm/backing-dev.c | 649 ++++++++--- mm/fadvise.c | 2 +- mm/filemap.c | 34 +- mm/madvise.c | 1 + mm/memcontrol.c | 223 +++- mm/page-writeback.c | 1231 +++++++++++++------- mm/readahead.c | 2 +- mm/rmap.c | 2 + mm/truncate.c | 18 +- mm/vmscan.c | 79 +- 74 files changed, 3898 insertions(+), 1250 deletions(-) create mode 100644 include/linux/backing-dev-defs.h rename {block => include/linux}/blk-cgroup.h (96%)
-- Jens Axboe
| |