linux/block
Jens Axboe 4ac845a2e9 block: cfq: make the io contect sharing lockless
The io context sharing introduced a per-ioc spinlock, that would protect
the cfq io context lookup. That is a regression from the original, since
we never needed any locking there because the ioc/cic were process private.

The cic lookup is changed from an rbtree construct to a radix tree, which
we can then use RCU to make the reader side lockless. That is the performance
critical path, modifying the radix tree is only done on process creation
(when that process first does IO, actually) and on process exit (if that
process has done IO).

As it so happens, radix trees are also much faster for this type of
lookup where the key is a pointer. It's a very sparse tree.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-01-28 10:50:33 +01:00
..
as-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
blktrace.c blktrace: kill the unneeded initcall 2008-01-11 13:37:01 +01:00
bsg.c [SCSI] libsas, bsg: pass errors through correctly 2008-01-11 18:29:13 -06:00
cfq-iosched.c block: cfq: make the io contect sharing lockless 2008-01-28 10:50:33 +01:00
compat_ioctl.c compat_ioctl: fix block device compat ioctl regression 2007-10-29 11:33:06 +01:00
deadline-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
elevator.c Kobject: rename kobject_init_ng() to kobject_init() 2008-01-24 20:40:38 -08:00
genhd.c Driver core: convert block from raw kobjects to core devices 2008-01-24 20:40:36 -08:00
ioctl.c compat_ioctl: move common block ioctls to compat_blkdev_ioctl 2007-10-10 09:26:00 +02:00
Kconfig Only enable BLOCK_COMPAT if COMPAT is needed 2007-10-12 17:58:36 -07:00
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS. 2007-02-17 20:08:22 +01:00
ll_rw_blk.c block: cfq: make the io contect sharing lockless 2008-01-28 10:50:33 +01:00
Makefile [BLOCK] Only include the compat ioctl code if CONFIG_BLOCK is set 2007-10-12 12:50:41 +02:00
noop-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
scsi_ioctl.c block: use jiffies conversion functions in scsi_ioctl.c 2007-12-18 08:29:28 +01:00