Daisuke Nishimura
e767e0561d
memcg: fix deadlock between lock_page_cgroup and mapping tree_lock
...
mapping->tree_lock can be acquired from interrupt context. Then,
following dead lock can occur.
Assume "A" as a page.
CPU0:
lock_page_cgroup(A)
interrupted
-> take mapping->tree_lock.
CPU1:
take mapping->tree_lock
-> lock_page_cgroup(A)
This patch tries to fix above deadlock by moving memcg's hook to out of
mapping->tree_lock. charge/uncharge of pagecache/swapcache is protected
by page lock, not tree_lock.
After this patch, lock_page_cgroup() is not called under mapping->tree_lock.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-05-29 08:40:02 -07:00
..
2009-05-20 23:26:51 +01:00
2009-04-07 10:23:34 +01:00
2009-04-08 17:45:02 -07:00
2009-03-31 09:56:26 +01:00
2009-04-06 07:01:56 -07:00
2009-05-05 12:00:53 -07:00
2009-04-06 09:48:20 -07:00
2009-03-31 15:09:39 +11:00
2009-04-28 18:58:06 +01:00
2009-04-21 13:41:50 -07:00
2009-05-02 16:35:08 -07:00
2009-05-05 08:26:10 -07:00
2009-04-21 00:35:47 -04:00
2009-05-15 14:14:56 -04:00
2009-04-01 08:59:23 -07:00
2009-04-01 08:59:23 -07:00
2009-04-06 08:04:53 -07:00
2009-05-02 15:36:10 -07:00
2009-04-22 08:35:10 +02:00
2009-04-23 10:06:35 +01:00
2009-05-02 16:48:32 -07:00
2009-04-01 08:59:14 -07:00
2009-04-16 07:47:49 -07:00
2009-04-13 08:32:28 -07:00
2009-04-03 15:24:35 -07:00
2009-04-21 13:41:47 -07:00
2009-04-04 14:20:34 -07:00
2009-04-07 09:05:35 -07:00
2009-04-03 14:53:32 -07:00
2009-04-02 19:05:00 -07:00
2009-04-02 19:04:57 -07:00
2009-05-29 08:40:01 -07:00
2009-04-14 11:11:52 +02:00
2009-04-09 00:27:13 +01:00
2009-05-08 19:22:21 -07:00
2009-04-02 19:55:30 +01:00
2009-04-07 08:31:11 -07:00
2009-05-12 14:41:47 -07:00
2009-04-04 10:43:31 +01:00
2009-03-30 21:46:44 +02:00
2009-04-03 14:53:32 -07:00
2009-04-01 15:42:34 -07:00
2009-04-16 16:17:11 -07:00
2009-04-07 08:12:38 +02:00
2009-04-01 08:59:20 -07:00
2009-04-03 11:10:33 -07:00
2009-04-13 15:04:29 -07:00
2009-04-03 12:13:03 +02:00
2009-04-13 15:04:30 -07:00
2009-03-31 23:00:26 -04:00
2009-05-09 10:51:34 -04:00
2009-04-03 16:42:37 +01:00
2009-04-03 16:42:39 +01:00
2009-04-22 13:02:09 +10:00
2009-04-09 05:43:32 +02:00
2009-04-22 08:35:10 +02:00
2009-04-06 01:41:22 +02:00
2009-04-01 21:42:26 +02:00
2009-04-03 09:48:29 -07:00
2009-03-31 14:52:52 +02:00
2009-04-06 18:11:41 -07:00
2009-04-13 17:02:14 +02:00
2009-05-22 16:23:38 +02:00
2009-04-02 19:04:53 -07:00
2009-04-13 15:04:29 -07:00
2009-04-27 19:51:58 -07:00
2009-04-28 09:36:24 -07:00
2009-04-03 21:46:01 +01:00
2009-04-07 14:07:52 -07:00
2009-04-07 08:31:09 -07:00
2009-04-21 13:41:48 -07:00
2009-03-31 01:14:44 +04:00
2009-04-21 13:41:48 -07:00
2009-04-09 10:35:30 -07:00
2009-03-30 12:43:22 -03:00
2009-04-14 07:50:56 -04:00
2009-04-14 10:10:47 -04:00
2009-03-31 13:05:32 +10:30
2009-05-09 10:49:41 -04:00
2009-04-16 16:17:10 -07:00
2009-04-03 12:21:12 +02:00
2009-04-09 07:49:44 -07:00
2009-04-07 08:31:08 -07:00
2009-04-22 13:52:09 +03:00
2009-04-06 16:06:26 +01:00
2009-04-06 16:06:26 +01:00
2009-04-06 16:06:26 +01:00
2009-04-16 15:28:23 -04:00
2009-04-02 19:05:10 -07:00
2009-04-01 08:59:17 -07:00
2009-05-02 15:36:09 -07:00
2009-04-05 11:04:19 -07:00
2009-04-07 08:12:38 +02:00
2009-04-02 19:04:48 -07:00
2009-04-02 19:04:48 -07:00
2009-05-02 15:36:10 -07:00
2009-05-18 11:22:24 +01:00
2009-03-31 23:00:27 -04:00
2009-04-05 11:04:19 -07:00
2009-03-31 13:05:30 +10:30
2009-04-01 07:38:54 -04:00
2009-05-09 10:49:42 -04:00
2009-04-27 05:45:54 -07:00
2009-04-03 17:41:23 -07:00
2009-04-03 16:42:42 +01:00
2009-04-03 16:42:44 +01:00
2009-04-03 16:42:43 +01:00
2009-04-01 13:28:15 -04:00
2009-04-03 17:41:12 -07:00
2009-04-07 08:31:20 -07:00
2009-04-30 15:32:11 +00:00
2009-03-31 23:00:27 -04:00
2009-05-02 15:36:10 -07:00
2009-04-02 19:04:56 -07:00
2009-04-01 08:59:13 -07:00
2009-04-03 16:42:36 +01:00
2009-04-03 16:42:39 +01:00
2009-04-01 08:59:13 -07:00
2009-04-07 08:44:06 -07:00
2009-05-22 16:23:39 +02:00
2009-04-22 15:59:41 -07:00
2009-04-06 11:25:06 -07:00
2009-04-21 19:40:00 -07:00
2009-04-21 19:40:00 -07:00
2009-04-13 14:51:23 -07:00
2009-04-15 12:10:12 +02:00
2009-04-24 08:54:21 +02:00
2009-05-08 19:22:21 -07:00
2009-04-01 08:59:13 -07:00
2009-03-31 01:14:44 +04:00
2009-04-02 19:05:00 -07:00
2009-04-03 12:23:05 +02:00
2009-04-03 12:23:05 +02:00
2009-04-03 12:23:05 +02:00
2009-04-14 11:31:50 +02:00
2009-03-30 14:28:58 -07:00
2009-03-30 12:16:38 -07:00
2009-05-09 10:49:39 -04:00
2009-03-30 12:33:01 -07:00
2009-05-17 11:45:45 -07:00
2009-05-09 10:49:41 -04:00
2009-04-02 19:04:51 -07:00
2009-04-01 08:59:24 -07:00
2009-04-09 07:37:02 +02:00
2009-04-19 10:47:45 -07:00
2009-04-26 09:20:38 -07:00
2009-04-03 12:08:57 +02:00
2009-04-07 08:44:05 -07:00
2009-04-08 14:33:38 -07:00
2009-04-13 15:04:29 -07:00
2009-04-03 12:23:06 +02:00
2009-04-21 19:40:00 -07:00
2009-04-03 12:23:06 +02:00
2009-04-02 19:05:11 -07:00
2009-04-15 12:10:12 +02:00
2009-04-05 10:30:21 -07:00
2009-04-10 15:48:52 +02:00
2009-04-19 20:08:42 +02:00
2009-05-29 08:40:02 -07:00
2009-04-02 19:05:01 -07:00
2009-05-12 14:11:35 -07:00
2009-03-30 17:17:35 -07:00
2009-04-02 19:05:00 -07:00
2009-04-07 08:44:04 -07:00
2009-04-17 10:50:27 -07:00
2009-04-06 21:44:29 -03:00
2009-03-30 12:43:15 -03:00
2009-05-01 15:34:02 -07:00
2009-04-28 02:24:21 -07:00
2009-04-02 19:04:50 -07:00
2009-05-15 11:32:24 +02:00