Ming Lei 74e72f894d lib/percpu_counter.c: fix __percpu_counter_add()
__percpu_counter_add() may be called in softirq/hardirq handler (such
as, blk_mq_queue_exit() is typically called in hardirq/softirq handler),
so we need to call this_cpu_add()(irq safe helper) to update percpu
counter, otherwise counts may be lost.

This fixes the problem that 'rmmod null_blk' hangs in blk_cleanup_queue()
because of miscounting of request_queue->mq_usage_counter.

This patch is the v1 of previous one of "lib/percpu_counter.c:
disable local irq when updating percpu couter", and takes Andrew's
approach which may be more efficient for ARCHs(x86, s390) that
have optimized this_cpu_add().

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Shaohua Li <shli@fusionio.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Fan Du <fan.du@windriver.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-01-15 14:19:42 +07:00
..
2013-09-10 13:03:41 -07:00
2013-03-13 15:21:48 -07:00
2011-03-11 14:25:50 +00:00
2008-06-06 11:29:10 -07:00
2013-07-09 10:33:30 -07:00
2011-10-29 21:20:22 +02:00
2011-03-31 11:26:23 -03:00
2013-02-27 19:10:09 -08:00
2012-10-06 03:04:57 +09:00
2012-10-09 16:22:40 +09:00
2013-06-18 13:48:45 +02:00
2012-12-17 17:15:22 -08:00
2012-07-30 17:25:16 -07:00
2012-01-31 23:19:47 +02:00
2011-12-08 19:52:43 -05:00
2013-04-29 18:28:42 -07:00
2013-11-15 09:32:20 +09:00