Shaohua Li
9fa73472dd
block: fix ioc locking warning
Meelis reported a warning:
WARNING: at kernel/timer.c:1122 run_timer_softirq+0x199/0x1ec()
Hardware name: 939Dual-SATA2
timer: cfq_idle_slice_timer+0x0/0xaa preempt leak: 00000102 -> 00000103
Modules linked in: sr_mod cdrom videodev media drm_kms_helper ohci_hcd ehci_hcd v4l2_compat_ioctl32 usbcore i2c_ali15x3 snd_seq drm snd_timer snd_seq
Pid: 0, comm: swapper Not tainted 3.3.0-rc2-00110-gd125666 #176
Call Trace:
<IRQ> [<ffffffff81022aaa>] warn_slowpath_common+0x7e/0x96
[<ffffffff8114c485>] ? cfq_slice_expired+0x1d/0x1d
[<ffffffff81022b56>] warn_slowpath_fmt+0x41/0x43
[<ffffffff8114c526>] ? cfq_idle_slice_timer+0xa1/0xaa
[<ffffffff8114c485>] ? cfq_slice_expired+0x1d/0x1d
[<ffffffff8102c124>] run_timer_softirq+0x199/0x1ec
[<ffffffff81047a53>] ? timekeeping_get_ns+0x12/0x31
[<ffffffff810145fd>] ? apic_write+0x11/0x13
[<ffffffff81027475>] __do_softirq+0x74/0xfa
[<ffffffff812f337a>] call_softirq+0x1a/0x30
[<ffffffff81002ff9>] do_softirq+0x31/0x68
[<ffffffff810276cf>] irq_exit+0x3d/0xa3
[<ffffffff81014aca>] smp_apic_timer_interrupt+0x6b/0x77
[<ffffffff812f2de9>] apic_timer_interrupt+0x69/0x70
<EOI> [<ffffffff81040136>] ? sched_clock_cpu+0x73/0x7d
[<ffffffff81040136>] ? sched_clock_cpu+0x73/0x7d
[<ffffffff8100801f>] ? default_idle+0x1e/0x32
[<ffffffff81008019>] ? default_idle+0x18/0x32
[<ffffffff810008b1>] cpu_idle+0x87/0xd1
[<ffffffff812de861>] rest_init+0x85/0x89
[<ffffffff81659a4d>] start_kernel+0x2eb/0x2f8
[<ffffffff8165926e>] x86_64_start_reservations+0x7e/0x82
[<ffffffff81659362>] x86_64_start_kernel+0xf0/0xf7
this_q == locked_q is possible. There are two problems here:
1. In UP case, there is preemption counter issue as spin_trylock always
successes.
2. In SMP case, the loop breaks too earlier.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Reported-by: Meelis Roos <mroos@linux.ee>
Reported-by: Knut Petersen <Knut_Petersen@t-online.de>
Tested-by: Knut Petersen <Knut_Petersen@t-online.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
2012-02-06 08:57:29 +01:00 |
| .. |
|
partitions
|
separate partition format handling from generic code
|
2012-01-03 22:54:06 -05:00 |
|
blk-cgroup.c
|
Merge branch 'for-3.3/core' of git://git.kernel.dk/linux-block
|
2012-01-15 12:24:45 -08:00 |
|
blk-cgroup.h
|
block: fix a typo in the blk-cgroup.h file
|
2011-10-24 16:08:38 +02:00 |
|
blk-core.c
|
block: fix NULL icq_cache reference
|
2012-01-19 09:20:10 +01:00 |
|
blk-exec.c
|
block: add missing blk_queue_dead() checks
|
2011-12-14 00:33:37 +01:00 |
|
blk-flush.c
|
blk-flush: move the queue kick into
|
2011-10-24 16:24:31 +02:00 |
|
blk-integrity.c
|
block: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros
|
2011-10-31 19:31:12 -04:00 |
|
blk-ioc.c
|
block: fix ioc locking warning
|
2012-02-06 08:57:29 +01:00 |
|
blk-iopoll.c
|
tree-wide: fix assorted typos all over the place
|
2009-12-04 15:39:55 +01:00 |
|
blk-lib.c
|
block: fix patch import error in max_discard_sectors check
|
2011-07-23 20:34:59 +02:00 |
|
blk-map.c
|
block: re-use existing 'reading' variable instead of checking direction again
|
2011-12-21 15:27:24 +01:00 |
|
blk-merge.c
|
block: attempt to merge with existing requests on plug flush
|
2011-03-21 10:14:27 +01:00 |
|
blk-settings.c
|
block: Introduce blk_set_stacking_limits function
|
2012-01-11 16:27:11 +01:00 |
|
blk-softirq.c
|
block: Don't check QUEUE_FLAG_SAME_COMP in __blk_complete_request
|
2011-09-14 09:31:01 +02:00 |
|
blk-sysfs.c
|
block, cfq: move io_cq exit/release to blk-ioc.c
|
2011-12-14 00:33:42 +01:00 |
|
blk-tag.c
|
block: fix blk_queue_end_tag()
|
2011-12-29 09:16:28 +01:00 |
|
blk-throttle.c
|
block: add blk_queue_dead()
|
2011-12-14 00:33:37 +01:00 |
|
blk-timeout.c
|
fault-injection: add ability to export fault_attr in arbitrary directory
|
2011-08-03 14:25:20 -10:00 |
|
blk.h
|
block, cfq: move icq creation and rq->elv.icq association to block core
|
2011-12-14 00:33:42 +01:00 |
|
bsg-lib.c
|
block: Change module.h -> export.h in bsg-lib.c
|
2011-10-31 19:31:13 -04:00 |
|
bsg.c
|
Merge branch 'for-3.3/core' of git://git.kernel.dk/linux-block
|
2012-01-15 12:24:45 -08:00 |
|
cfq-iosched.c
|
block,cfq: change code order
|
2012-01-19 09:20:09 +01:00 |
|
cfq.h
|
blk-cgroup: Add unaccounted time to timeslice_used.
|
2011-03-12 16:54:00 +01:00 |
|
compat_ioctl.c
|
block: Add BLKROTATIONAL ioctl
|
2012-01-11 16:29:31 +01:00 |
|
deadline-iosched.c
|
block, cfq: move icq cache management to block core
|
2011-12-14 00:33:42 +01:00 |
|
elevator.c
|
Revert "block: recursive merge requests"
|
2012-01-15 10:29:48 +01:00 |
|
genhd.c
|
Merge branch 'for-3.3/core' of git://git.kernel.dk/linux-block
|
2012-01-15 12:24:45 -08:00 |
|
ioctl.c
|
Merge branch 'for-3.3/core' of git://git.kernel.dk/linux-block
|
2012-01-15 12:24:45 -08:00 |
|
Kconfig
|
move fs/partitions to block/
|
2012-01-03 22:54:06 -05:00 |
|
Kconfig.iosched
|
blk-cgroup: config options re-arrangement
|
2010-04-26 19:27:56 +02:00 |
|
Makefile
|
separate partition format handling from generic code
|
2012-01-03 22:54:06 -05:00 |
|
noop-iosched.c
|
block, cfq: move icq cache management to block core
|
2011-12-14 00:33:42 +01:00 |
|
partition-generic.c
|
separate partition format handling from generic code
|
2012-01-03 22:54:06 -05:00 |
|
scsi_ioctl.c
|
block: fail SCSI passthrough ioctls on partition devices
|
2012-01-14 15:07:24 -08:00 |