linux/block
Tejun Heo c995905916 block: fix diskstats access
There are two variants of stat functions - ones prefixed with double
underbars which don't care about preemption and ones without which
disable preemption before manipulating per-cpu counters.  It's unclear
whether the underbarred ones assume that preemtion is disabled on
entry as some callers don't do that.

This patch unifies diskstats access by implementing disk_stat_lock()
and disk_stat_unlock() which take care of both RCU (for partition
access) and preemption (for per-cpu counter access).  diskstats access
should always be enclosed between the two functions.  As such, there's
no need for the versions which disables preemption.  They're removed
and double underbars ones are renamed to drop the underbars.  As an
extra argument is added, there's no danger of using the old version
unconverted.

disk_stat_lock() uses get_cpu() and returns the cpu index and all
diskstat functions which access per-cpu counters now has @cpu
argument to help RT.

This change adds RCU or preemption operations at some places but also
collapses several preemption ops into one at others.  Overall, the
performance difference should be negligible as all involved ops are
very lightweight per-cpu ones.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-10-09 08:56:06 +02:00
..
as-iosched.c Use WARN() in block/ 2008-07-26 12:00:07 -07:00
blk-barrier.c Allow elevators to sort/merge discard requests 2008-10-09 08:56:02 +02:00
blk-core.c block: fix diskstats access 2008-10-09 08:56:06 +02:00
blk-exec.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-integrity.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-ioc.c cfq-iosched: fix RCU race in the cfq io_context destructor handling 2008-05-07 09:28:57 +02:00
blk-map.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-merge.c block: fix diskstats access 2008-10-09 08:56:06 +02:00
blk-settings.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-sysfs.c block: sysfs store function needs to grab queue_lock and use queue_flag_*() 2008-05-07 09:09:39 +02:00
blk-tag.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk.h block: Block layer data integrity support 2008-07-03 13:21:13 +02:00
blktrace.c blktrace: simplify flags handling in __blk_add_trace 2008-10-09 08:56:01 +02:00
bsg.c block: move cmdfilter from gendisk to request_queue 2008-08-27 09:50:19 +02:00
cfq-iosched.c cfq-iosched: get rid of enable_idle being unused warning 2008-07-03 13:21:14 +02:00
cmd-filter.c block: disable sysfs parts of the disk command filter 2008-09-11 14:20:23 +02:00
compat_ioctl.c Add BLKDISCARD ioctl to allow userspace to discard sectors 2008-10-09 08:56:02 +02:00
deadline-iosched.c deadline-iosched: non-functional fixes 2008-10-09 08:56:03 +02:00
elevator.c drop vmerge accounting 2008-10-09 08:56:03 +02:00
genhd.c block: fix diskstats access 2008-10-09 08:56:06 +02:00
ioctl.c block: fix disk->part[] dereferencing race 2008-10-09 08:56:06 +02:00
Kconfig block: Block layer data integrity support 2008-07-03 13:21:13 +02:00
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS. 2007-02-17 20:08:22 +01:00
Makefile allow userspace to modify scsi command filter on per device basis 2008-07-03 13:21:14 +02:00
noop-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
scsi_ioctl.c SG_IO block filter whitelist missing MMC SET READ AHEAD command 2008-10-09 08:56:00 +02:00