Block IO bits for 3.3-rc
Hi Linus,
See below for the initial 3.3-rc1 git pull request in the block IO area. Not too much queued up for this round, mostly some code churn to improve some of the existing functionality.
It has the following changes:
- The big io context cleanup from Tejun.
- Remove duplicated block plug in mpage_readpages(). read_pages() already does the plugging, and it's the only call path to mpage_readpages().
- ioctl to query rotational nature of a device from Martin.
- Getting rid of the bio integrity macros, use proper functions instead.
- Recursive merging was added and then disabled, it's suspected to be our cause for empty cfqq crashes. It'll be re-enabled once we get to the bottom of this.
Please pull!
git://git.kernel.dk/linux-block.git for-3.3/core
Jens Axboe (2):
block: ioc_cgroup_changed() needs to be exported Revert "block: recursive merge requests"
Martin K. Petersen (3):
block: Introduce blk_set_stacking_limits function
block: Add BLKROTATIONAL ioctl
block: Stop using macro stubs for the bio data integrity calls
Namjae Jeon (1):
fs: remove unneeded plug in mpage_readpages()
Shaohua Li (2):
block, cfq: fix empty queue crash caused by request merge
block: recursive merge requests
Stephen Rothwell (1):
blockdev: convert some macros to static inlines
Tejun Heo (28):
block, sx8: kill blk_insert_request()
block: add blk_queue_dead()`
block: fix drain_all condition in blk_drain_queue()
block: add missing blk_queue_dead() checks
block, cfq: move cfqd->cic_index to q->id
block: misc ioc cleanups
block: make ioc get/put interface more conventional and fix race on alloction
block: misc updates to blk_get_queue()
block, cfq: misc updates to cfq_io_context
block, cfq: move ioc ioprio/cgroup changed handling to cic block, cfq: fix race condition in cic creation path and tighten locking block, cfq: fix cic lookup locking
block, cfq: unlink cfq_io_context's immediately
block, cfq: remove delayed unlink
block, cfq: kill ioc_gone
block, cfq: kill cic->key
block, cfq: replace current_io_context() with create_io_context()
block: reorder elevator switch sequence
block: remove elevator_queue->ops
block, cfq: reorganize cfq_io_context into generic and cfq specific parts block, cfq: move cfqd->icq_list to request_queue and add request->elv.icq block, cfq: move io_cq lookup to blk-ioc.c
block, cfq: move icq cache management to block core
block, cfq: move io_cq exit/release to blk-ioc.c
block, cfq: restructure io_cq creation path for io_context interface cleanup block, cfq: move icq creation and rq->elv.icq association to block core
block: an exiting task should be allowed to create io_context
block: remove WARN_ON_ONCE() in exit_io_context()
block/blk-cgroup.c | 11 +- block/blk-core.c | 203 +++++++++------ block/blk-exec.c | 8 +- block/blk-ioc.c | 485 +++++++++++++++++++++++++++++------ block/blk-settings.c | 32 ++- block/blk-sysfs.c | 12 +- block/blk-throttle.c | 4 +- block/blk.h | 58 ++++- block/bsg.c | 4 +- block/cfq-iosched.c | 619 +++++++++------------------------------------ block/compat_ioctl.c | 3 + block/deadline-iosched.c | 4 +- block/elevator.c | 217 ++++++++-------- block/genhd.c | 2 +- block/ioctl.c | 2 + block/noop-iosched.c | 4 +- drivers/block/sx8.c | 12 +- drivers/md/dm-table.c | 6 +- drivers/md/md.c | 1 + drivers/scsi/scsi_scan.c | 2 +- fs/ioprio.c | 24 +-- fs/mpage.c | 4 - include/linux/bio.h | 66 ++++- include/linux/blkdev.h | 101 ++++++-- include/linux/elevator.h | 41 ++-- include/linux/fs.h | 1 + include/linux/iocontext.h | 136 +++++++--- kernel/fork.c | 8 +- 28 files changed, 1133 insertions(+), 937 deletions(-)
Signature · 1 line
Jens Axboe
Quoted 8 lines · Jens Axboe
See below for the initial 3.3-rc1 git pull request in the block IO area. Not too much queued up for this round, mostly some code churn to improve some of the existing functionality.
It has the following changes:
- The big io context cleanup from Tejun.
Ok. This got some conflicts that I think I got right, but I'd really like Tejun to check it out. There were changes mainly to things he had removed, and I think all the changes were made irrelevant by his cleanups, but...
Tejun?
Linus
Quoted 102 lines
- Remove duplicated block plug in
mpage_readpages().read_pages()already does the plugging, and it's the only call path tompage_readpages().- ioctl to query rotational nature of a device from Martin.
- Getting rid of the bio integrity macros, use proper functions instead.
- Recursive merging was added and then disabled, it's suspected to be our cause for empty cfqq crashes. It'll be re-enabled once we get to the bottom of this.
Please pull!
git://git.kernel.dk/linux-block.git for-3.3/core
Jens Axboe (2):
block:ioc_cgroup_changed()needs to be exported Revert "block: recursive merge requests"Martin K. Petersen (3):
block: Introduceblk_set_stacking_limitsfunction
block: Add BLKROTATIONAL ioctl
block: Stop using macro stubs for the bio data integrity callsNamjae Jeon (1):
fs: remove unneeded plug inmpage_readpages()Shaohua Li (2):
block, cfq: fix empty queue crash caused by request merge
block: recursive merge requestsStephen Rothwell (1):
blockdev: convert some macros to static inlinesTejun Heo (28):
block, sx8: killblk_insert_request()
block: add blk_queue_dead()`
block: fixdrain_allcondition inblk_drain_queue()
block: add missingblk_queue_dead()checks
block, cfq: movecfqd->cic_indextoq->id
block: misc ioc cleanups
block: make ioc get/put interface more conventional and fix race on alloction
block: misc updates toblk_get_queue()
block, cfq: misc updates tocfq_io_context
block, cfq: move ioc ioprio/cgroup changed handling to cic block, cfq: fix race condition in cic creation path and tighten locking block, cfq: fix cic lookup locking
block, cfq: unlink cfq_io_context's immediately
block, cfq: remove delayed unlink
block, cfq: killioc_gone
block, cfq: killcic->key
block, cfq: replacecurrent_io_context()withcreate_io_context()
block: reorder elevator switch sequence
block: removeelevator_queue->ops
block, cfq: reorganizecfq_io_contextinto generic and cfq specific parts block, cfq: movecfqd->icq_listtorequest_queueand addrequest->elv.icqblock, cfq: moveio_cqlookup toblk-ioc.c
block, cfq: move icq cache management to block core
block, cfq: moveio_cqexit/release toblk-ioc.c
block, cfq: restructureio_cqcreation path forio_contextinterface cleanup block, cfq: move icq creation andrq->elv.icqassociation to block core
block: an exiting task should be allowed to createio_context
block: removeWARN_ON_ONCE()inexit_io_context()block/blk-cgroup.c | 11 +-
block/blk-core.c | 203 +++++++++------ block/blk-exec.c | 8 +- block/blk-ioc.c | 485 +++++++++++++++++++++++++++++------block/blk-settings.c | 32 ++-
block/blk-sysfs.c | 12 +-
block/blk-throttle.c | 4 +-
block/blk.h | 58 ++++-
block/bsg.c | 4 +-
block/cfq-iosched.c | 619 +++++++++------------------------------------block/compat_ioctl.c| 3 +
block/deadline-iosched.c | 4 +-
block/elevator.c | 217 ++++++++--------
block/genhd.c | 2 +-
block/ioctl.c | 2 +
block/noop-iosched.c | 4 +-
drivers/block/sx8.c | 12 +-
drivers/md/dm-table.c | 6 +-
drivers/md/md.c | 1 +
drivers/scsi/scsi_scan.c | 2 +-
fs/ioprio.c | 24 +--
fs/mpage.c | 4 -
include/linux/bio.h | 66 ++++-
include/linux/blkdev.h | 101 ++++++--include/linux/elevator.h| 41 ++--
include/linux/fs.h | 1 +
include/linux/iocontext.h | 136 +++++++---
kernel/fork.c | 8 +-28 files changed, 1133 insertions(+), 937 deletions(-)--
Jens Axboe
Hello,
Quoted 5 lines · Linus Torvalds
Quoted 4 lines · Jens Axboe
See below for the initial 3.3-rc1 git pull request in the block IO area. Not too much queued up for this round, mostly some code churn to improve some of the existing functionality.
Quoted 8 lines
Quoted 3 lines
It has the following changes:
- The big io context cleanup from Tejun.
Ok. This got some conflicts that I think I got right, but I'd really like Tejun to check it out. There were changes mainly to things he had removed, and I think all the changes were made irrelevant by his cleanups, but...
In cfq-iosched.c, there were the following three mainline commits which weren't in the block branch.
- 2984ff38cc "cfq-iosched: free cic_index if blkio_alloc_blkg_stats fails"
This fixes cic->cic_index freeing in alloc failure path. cic_index got moved to q->id which is allocated in blk_alloc_queue_node() and properly freed after any failure. This doesn't cause any conflict per-se but causes compiler failure as cic_index no longer exists. Changes made by this patch should be removed.
- 5eb46851de "cfq-iosched: fix cfq_cic_link() race confition"
This fixes install race handling in unlock-alloc-lock-install sequence. The logic got moved to ioc_create_icq() which already deals with it properly. Ignoring conflict and removing the conflicted part from mainline should do.
- 6ae0516b8a "block, cfq: fix empty queue crash caused by request merge"
The same commit existed in block as 4a0b75c7d0. Nothing to do.
In blk-ioc.c, the following commit.
- bb9d97b6df "cgroup: don't use subsys->can_attach_task() or ->attach_task()"
It conflicts with three block commits updating how ioc is obtained and the changed flag is set. Putting the updated per-task logic from block inside cgroup_taskset_for_each() loop is the correct resolution.
So, yeap, my merge matches yours exactly and everything looks good to me.
Thanks.
--
tejun