[GIT PULL] Block/IO core bits for 3.5

From: Jens Axboe
Date: Wed May 30 2012 - 08:51:22 EST


Hi Linus,

This is the main 3.5 block/IO core pull request for 3.5. This is
a bit bigger on the core side than usual, but that is purely because
we decided to hold off on parts of Tejun's submission on 3.4 to give
it a bit more time to simmer. As a consequence, it's seen a long
cycle in for-next.

It contains:

- Bug fix from Dan, wrong locking type.
- Relax splice gifting restriction from Eric.
- A ton of updates from Tejun, primarily for blkcg. This improves
the code a lot, making the API nicer and cleaner, and also includes
fixes for how we handle and tie policies and re-activate on switches.
The changes also include generic bug fixes.
- A simple fix from Vivek, along with a fix for doing proper delayed
allocation of the blkcg stats.

Please pull.

git://git.kernel.dk/linux-block.git for-3.5/core

for you to fetch changes up to ff26eaadf4d914e397872b99885d45756104e9ae:

blkcg: tg_stats_alloc_lock is an irq lock (2012-05-23 12:16:21 +0200)

----------------------------------------------------------------
Dan Carpenter (1):
blkcg: change a spin_lock() to spin_lock_irq()

Eric Dumazet (1):
vmsplice: relax alignement requirements for SPLICE_F_GIFT

Jens Axboe (1):
Merge tag 'v3.4-rc5' into for-3.5/core

Tejun Heo (89):
block: blk-throttle should be drained regardless of q->elevator
blkcg: make CONFIG_BLK_CGROUP bool
cfq: don't register propio policy if !CONFIG_CFQ_GROUP_IOSCHED
elevator: clear auxiliary data earlier during elevator switch
elevator: make elevator_init_fn() return 0/-errno
block: implement blk_queue_bypass_start/end()
block: extend queue bypassing to cover blkcg policies
blkcg: shoot down blkio_groups on elevator switch
blkcg: move rcu_read_lock() outside of blkio_group get functions
blkcg: update blkg get functions take blkio_cgroup as parameter
blkcg: use q and plid instead of opaque void * for blkio_group association
blkcg: add blkio_policy[] array and allow one policy per policy ID
blkcg: use the usual get blkg path for root blkio_group
blkcg: factor out blkio_group creation
blkcg: don't allow or retain configuration of missing devices
blkcg: kill blkio_policy_node
blkcg: kill the mind-bending blkg->dev
blkcg: let blkio_group point to blkio_cgroup directly
blkcg: add blkcg_{init|drain|exit}_queue()
blkcg: clear all request_queues on blkcg policy [un]registrations
blkcg: let blkcg core handle policy private data allocation
blkcg: move refcnt to blkcg core
blkcg: make blkg->pd an array and move configuration and stats into it
blkcg: don't use blkg->plid in stat related functions
blkcg: move per-queue blkg list heads and counters to queue and blkg
blkcg: let blkcg core manage per-queue blkg list and counter
blkcg: unify blkg's for blkcg policies
blkcg: use double locking instead of RCU for blkg synchronization
blkcg: drop unnecessary RCU locking
block: restructure get_request()
block: interface update for ioc/icq creation functions
block: ioc_task_link() can't fail
block: add io_context->active_ref
block: implement bio_associate_current()
block: make block cgroup policies follow bio task association
block: make blk-throttle preserve the issuing task on delayed bios
blkcg: don't use percpu for merged stats
blkcg: simplify stat reset
blkcg: restructure blkio_get_stat()
blkcg: remove blkio_group->stats_lock
blkcg: add blkcg->id
cfq: pass around cfq_io_cq instead of io_context
cfq: don't use icq_get_changed()
block: remove ioc_*_changed()
cfq: fix cfqg ref handling when BLK_CGROUP && !CFQ_GROUP_IOSCHED
Merge branch 'for-3.5' of ../cgroup into block/for-3.5/core-merged
blkcg: remove unused @pol and @plid parameters
blkcg: BLKIO_STAT_CPU_SECTORS doesn't have subcounters
blkcg: introduce blkg_stat and blkg_rwstat
blkcg: restructure statistics printing
blkcg: drop blkiocg_file_write_u64()
blkcg: restructure configuration printing
blkcg: restructure blkio_group configruation setting
blkcg: simplify blkg_conf_prep()
blkcg: export conf/stat helpers to prepare for reorganization
blkcg: implement blkio_policy_type->cftypes
blkcg: move conf/stat file handling code to policies
cfq: collapse cfq.h into cfq-iosched.c
blkcg: move statistics update code to policies
blkcg: cfq doesn't need per-cpu dispatch stats
blkcg: add blkio_policy_ops operations for exit and stat reset
blkcg: move blkio_group_stats to cfq-iosched.c
blkcg: move blkio_group_stats_cpu and friends to blk-throttle.c
blkcg: move blkio_group_conf->weight to cfq
blkcg: move blkio_group_conf->iops and ->bps to blk-throttle
blkcg: pass around pd->pdata instead of pd itself in prfill functions
blkcg: drop BLKCG_STAT_{PRIV|POL|OFF} macros
cfq: fix build breakage & warnings
blkcg: kill blkio_list and replace blkio_list_lock with a mutex
blkcg: use @pol instead of @plid in update_root_blkg_pd() and blkcg_print_blkgs()
blkcg: remove static policy ID enums
blkcg: make blkg_conf_prep() take @pol and return with queue lock held
blkcg: make sure blkg_lookup() returns %NULL if @q is bypassing
blkcg: make request_queue bypassing on allocation
blkcg: add request_queue->root_blkg
blkcg: implement per-queue policy activation
blkcg: drop stuff unused after per-queue policy activation update
blkcg: shoot down blkgs if all policies are deactivated
blkcg: blkg_rwstat_read() was missing inline
blkcg: remove blkio_group->path[]
blkcg: style cleanups for blk-cgroup.h
blkcg: mass rename of blkcg API
blkcg: embed struct blkg_policy_data in policy specific data
blkcg: collapse blkcg_policy_ops into blkcg_policy
block: collapse blk_alloc_request() into get_request()
block: fix elvpriv allocation failure handling
blkcg: fix blkcg->css ref leak in __blkg_lookup_create()
blkcg: use radix tree to index blkgs from blkcg
blkcg: tg_stats_alloc_lock is an irq lock

Vivek Goyal (2):
blkcg: skip blkg printing if q isn't associated with disk
blkcg: alloc per cpu stats from worker thread in a delayed manner

Documentation/feature-removal-schedule.txt | 9 +
block/Kconfig.iosched | 4 -
block/blk-cgroup.c | 2109 +++++++++-------------------
block/blk-cgroup.h | 647 ++++-----
block/blk-core.c | 281 ++--
block/blk-ioc.c | 126 +-
block/blk-sysfs.c | 6 +-
block/blk-throttle.c | 697 +++++----
block/blk.h | 32 +-
block/cfq-iosched.c | 1072 +++++++++-----
block/cfq.h | 115 --
block/deadline-iosched.c | 8 +-
block/elevator.c | 121 +-
block/noop-iosched.c | 8 +-
fs/bio.c | 61 +
fs/ioprio.c | 2 +-
fs/splice.c | 4 +-
include/linux/bio.h | 8 +
include/linux/blk_types.h | 10 +
include/linux/blkdev.h | 20 +-
include/linux/cgroup.h | 80 +-
include/linux/elevator.h | 8 +-
include/linux/iocontext.h | 39 +-
include/linux/ioprio.h | 22 +-
init/Kconfig | 2 +-
kernel/cgroup.c | 550 ++++++--
kernel/cgroup_freezer.c | 11 +-
kernel/cpuset.c | 31 +-
kernel/fork.c | 5 +-
kernel/sched/core.c | 16 +-
mm/memcontrol.c | 78 +-
net/core/netprio_cgroup.c | 30 +-
net/ipv4/tcp_memcontrol.c | 71 +-
net/sched/cls_cgroup.c | 31 +-
security/device_cgroup.c | 10 +-
35 files changed, 3033 insertions(+), 3291 deletions(-)
delete mode 100644 block/cfq.h

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/