Jens Axboe
18ce3751cc
Properly notify block layer of sync writes
...
fsync_buffers_list() and sync_dirty_buffer() both issue async writes and
then immediately wait on them. Conceptually, that makes them sync writes
and we should treat them as such so that the IO schedulers can handle
them appropriately.
This patch fixes a write starvation issue that Lin Ming reported, where
xx is stuck for more than 2 minutes because of a large number of
synchronous IO in the system:
INFO: task kjournald:20558 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message.
kjournald D ffff810010820978 6712 20558 2
ffff81022ddb1d10 0000000000000046 ffff81022e7baa10 ffffffff803ba6f2
ffff81022ecd0000 ffff8101e6dc9160 ffff81022ecd0348 000000008048b6cb
0000000000000086 ffff81022c4e8d30 0000000000000000 ffffffff80247537
Call Trace:
[<ffffffff803ba6f2>] kobject_get+0x12/0x17
[<ffffffff80247537>] getnstimeofday+0x2f/0x83
[<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
[<ffffffff8066d195>] io_schedule+0x5d/0x9f
[<ffffffff8029c1e7>] sync_buffer+0x3b/0x3f
[<ffffffff8066d3f0>] __wait_on_bit+0x40/0x6f
[<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
[<ffffffff8066d48b>] out_of_line_wait_on_bit+0x6c/0x78
[<ffffffff80243909>] wake_bit_function+0x0/0x23
[<ffffffff8029e3ad>] sync_dirty_buffer+0x98/0xcb
[<ffffffff8030056b>] journal_commit_transaction+0x97d/0xcb6
[<ffffffff8023a676>] lock_timer_base+0x26/0x4b
[<ffffffff8030300a>] kjournald+0xc1/0x1fb
[<ffffffff802438db>] autoremove_wake_function+0x0/0x2e
[<ffffffff80302f49>] kjournald+0x0/0x1fb
[<ffffffff802437bb>] kthread+0x47/0x74
[<ffffffff8022de51>] schedule_tail+0x28/0x5d
[<ffffffff8020cac8>] child_rip+0xa/0x12
[<ffffffff80243774>] kthread+0x0/0x74
[<ffffffff8020cabe>] child_rip+0x0/0x12
Lin Ming confirms that this patch fixes the issue. I've run tests with
it for the past week and no ill effects have been observed, so I'm
proposing it for inclusion into 2.6.26.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com >
2008-07-01 09:07:34 +02:00
..
2008-04-30 08:29:54 -07:00
2008-04-24 14:07:46 -03:00
2008-05-18 20:49:41 +02:00
2008-04-25 13:00:11 -04:00
2008-04-19 11:29:08 +01:00
2008-04-29 13:46:50 -07:00
2008-06-06 11:29:10 -07:00
2008-05-08 01:15:21 -07:00
2008-05-21 14:08:38 -07:00
2008-04-14 11:15:54 +02:00
2008-05-21 14:08:38 -07:00
2008-05-21 14:08:38 -07:00
2008-04-25 13:00:11 -04:00
2008-05-24 09:56:10 -07:00
2008-06-02 15:27:10 -07:00
2008-06-09 15:53:37 -04:00
2008-05-19 07:34:01 -05:00
2008-04-29 08:06:27 -07:00
2008-05-20 14:14:15 -07:00
2008-06-16 10:20:58 -07:00
2008-04-26 23:41:04 +02:00
2008-04-20 21:47:02 -07:00
2008-06-19 10:42:17 +10:00
2008-06-19 10:42:17 +10:00
2008-04-29 08:06:00 -07:00
2008-05-01 13:08:50 -04:00
2008-05-14 23:24:09 -07:00
2008-05-14 23:24:09 -07:00
2008-04-19 19:10:33 -07:00
2008-06-24 23:36:35 -04:00
2008-04-30 08:29:50 -07:00
2008-05-16 17:23:05 -04:00
2008-04-29 09:50:34 +02:00
2008-05-13 08:02:25 -07:00
2008-04-29 08:11:16 -07:00
2008-06-06 11:29:10 -07:00
2008-04-29 12:36:54 -07:00
2008-05-28 14:49:27 +02:00
2008-06-21 11:25:10 -07:00
2008-04-22 15:16:32 -05:00
2008-04-29 08:06:01 -07:00
2008-04-28 08:58:19 -07:00
2008-05-31 16:36:16 -07:00
2008-04-30 08:29:54 -07:00
2008-04-21 09:50:08 +02:00
2008-04-29 08:06:09 -07:00
2008-04-29 08:06:10 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:05:59 -07:00
2008-05-01 08:03:59 -07:00
2008-04-30 08:42:49 -07:00
2008-05-10 19:51:16 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:06 -07:00
2008-04-30 08:29:52 -07:00
2008-04-29 08:05:59 -07:00
2008-04-28 16:27:08 -04:00
2008-06-11 19:13:45 -04:00
2008-05-13 08:02:25 -07:00
2008-04-28 08:58:19 -07:00
2008-04-30 08:29:54 -07:00
2008-04-21 10:19:23 +08:00
2008-06-23 11:52:30 -04:00
2008-04-30 08:29:53 -07:00
2008-04-29 08:06:09 -07:00
2008-04-30 08:29:54 -07:00
2008-05-29 21:10:01 -07:00
2008-04-30 08:29:48 -07:00
2008-04-21 11:35:39 -05:00
2008-04-21 11:22:28 -05:00
2008-04-21 11:35:39 -05:00
2008-04-21 11:22:29 -05:00
2008-04-25 13:26:55 +01:00
2008-04-25 13:26:55 +01:00
2008-04-25 13:26:55 +01:00
2008-04-29 08:06:11 -07:00
2008-04-29 08:06:11 -07:00
2008-04-21 22:38:45 +00:00
2008-04-28 08:58:30 -07:00
2008-04-29 08:06:26 -07:00
2008-04-19 19:19:54 +02:00
2008-04-29 08:06:16 -07:00
2008-04-19 19:10:33 -07:00
2008-04-30 08:29:54 -07:00
2008-05-07 09:48:23 +02:00
2008-04-28 08:58:35 -07:00
2008-05-16 17:22:26 -04:00
2008-05-01 13:08:16 -04:00
2008-07-01 09:07:34 +02:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-05-13 08:02:26 -07:00
2008-04-30 08:29:45 -07:00
2008-05-14 10:37:57 -07:00
2008-04-29 08:05:58 -07:00
2008-05-24 09:56:13 -07:00
2008-05-10 20:58:02 -07:00
2008-04-18 00:46:24 +02:00
2008-05-20 16:44:43 +02:00
2008-05-20 16:44:43 +02:00
2008-04-22 11:34:59 +02:00
2008-04-18 22:22:54 -04:00
2008-05-03 18:11:48 +02:00
2008-04-28 08:58:25 -07:00
2008-04-30 08:29:54 -07:00
2008-04-22 22:16:46 +02:00
2008-04-29 23:11:38 +02:00
2008-04-22 22:16:46 +02:00
2008-05-18 20:49:41 +02:00
2008-04-30 08:29:54 -07:00
2008-06-10 20:56:36 +02:00
2008-04-29 08:06:25 -07:00
2008-04-30 20:34:26 -04:00
2008-05-02 16:53:33 -07:00
2008-04-30 08:29:54 -07:00
2008-04-18 22:16:54 -04:00
2008-06-16 16:48:20 -07:00
2008-04-16 00:48:04 -07:00
2008-06-03 16:36:01 -07:00
2008-04-30 08:29:54 -07:00
2008-06-03 16:37:33 -07:00
2008-05-16 17:22:20 -04:00
2008-04-29 08:06:03 -07:00
2008-05-30 10:40:46 -04:00
2008-04-29 08:06:02 -07:00
2008-05-05 16:47:14 +10:00
2008-04-15 09:25:33 +02:00
2008-06-11 19:13:46 -04:00
2008-05-07 09:51:23 +02:00
2008-04-29 08:06:13 -07:00
2008-04-29 08:06:15 -07:00
2008-04-29 08:06:15 -07:00
2008-06-10 12:39:35 -07:00
2008-05-02 13:40:34 +02:00
2008-04-19 19:19:54 +02:00
2008-04-29 03:22:15 -04:00
2008-04-19 19:10:28 -07:00
2008-04-15 00:30:16 -07:00
2008-04-30 08:29:54 -07:00
2008-06-06 17:50:40 -04:00
2008-04-18 22:16:54 -04:00
2008-05-01 08:03:58 -07:00
2008-05-15 17:50:37 -07:00
2008-06-27 23:13:54 +02:00
2008-04-29 08:06:29 -07:00
2008-05-14 19:11:14 -07:00
2008-04-18 22:16:54 -04:00
2008-04-29 08:06:17 -07:00
2008-04-15 01:30:32 -04:00
2008-04-29 08:06:16 -07:00
2008-04-30 08:29:54 -07:00
2008-05-05 07:13:21 -05:00
2008-04-30 16:52:58 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-28 08:58:32 -07:00
2008-04-30 08:29:54 -07:00
2008-04-19 19:44:57 +02:00
2008-06-24 12:16:59 +03:00
2008-04-27 12:00:27 +03:00
2008-04-27 12:01:15 +03:00
2008-04-27 18:21:37 +03:00
2008-04-24 23:49:30 +01:00
2008-06-04 06:40:41 -04:00
2008-04-30 08:29:54 -07:00
2008-04-29 15:57:53 +10:00
2008-06-12 10:47:58 +02:00
2008-04-15 19:35:41 -07:00
2008-04-29 08:06:01 -07:00
2008-04-29 08:06:10 -07:00
2008-06-09 11:32:41 +10:00
2008-04-29 08:06:12 -07:00
2008-04-28 08:58:25 -07:00
2008-04-19 19:10:29 -07:00
2008-04-24 14:07:43 -03:00
2008-04-19 19:10:28 -07:00
2008-05-13 08:02:25 -07:00
2008-06-12 18:05:41 -07:00
2008-05-24 09:56:09 -07:00
2008-05-24 09:56:13 -07:00
2008-04-23 00:05:03 -04:00
2008-05-26 16:08:40 +02:00
2008-05-01 21:14:59 +10:00
2008-04-30 08:29:54 -07:00
2008-04-13 23:21:16 -07:00
2008-06-08 11:58:43 -07:00
2008-06-06 11:29:12 -07:00
2008-04-29 09:11:12 -07:00
2008-04-28 21:17:07 -07:00
2008-04-29 08:06:24 -07:00
2008-04-30 08:29:54 -07:00
2008-04-28 08:58:29 -07:00
2008-05-23 00:27:50 -07:00
2008-04-14 11:15:52 +02:00
2008-05-21 14:08:38 -07:00
2008-04-28 06:18:03 -04:00
2008-04-23 16:13:37 -04:00
2008-04-19 16:54:56 -04:00
2008-04-19 16:55:29 -04:00
2008-04-19 16:53:15 -04:00
2008-04-28 08:58:19 -07:00
2008-04-29 08:06:13 -07:00
2008-04-30 08:29:54 -07:00
2008-04-17 07:46:11 +10:00
2008-05-09 20:22:58 +10:00
2008-04-28 08:58:18 -07:00
2008-06-09 10:22:24 -07:00
2008-04-18 22:22:54 -04:00
2008-05-14 19:23:25 -05:00
2008-06-12 18:05:40 -07:00
2008-04-20 21:47:03 -07:00
2008-04-20 21:47:03 -07:00
2008-06-12 10:12:42 +02:00
2008-05-03 03:39:55 +04:00
2008-05-14 19:11:14 -07:00
2008-04-29 08:06:02 -07:00
2008-04-29 08:06:02 -07:00
2008-05-06 12:01:41 -04:00
2008-04-30 08:29:49 -07:00
2008-04-30 08:29:49 -07:00
2008-04-19 19:10:26 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 11:52:52 -07:00
2008-04-30 08:29:53 -07:00
2008-05-01 13:07:28 -04:00
2008-04-28 08:58:26 -07:00
2008-06-12 18:05:40 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:50 -07:00
2008-04-30 08:29:38 -07:00
2008-05-01 08:04:01 -07:00
2008-04-28 08:58:33 -07:00
2008-04-19 19:10:33 -07:00
2008-04-30 08:29:54 -07:00
2008-05-10 19:51:16 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:51 -07:00
2008-04-28 08:58:46 -07:00
2008-04-29 08:06:10 -07:00
2008-04-29 08:05:59 -07:00
2008-04-30 08:29:54 -07:00
2008-05-03 10:01:33 -07:00
2008-06-10 15:44:49 -07:00
2008-04-30 08:29:54 -07:00
2008-06-10 11:37:25 +02:00
2008-04-28 08:58:26 -07:00
2008-04-29 08:06:16 -07:00
2008-04-19 09:53:46 +10:00
2008-04-17 10:43:01 -04:00
2008-04-30 08:29:54 -07:00
2008-04-25 00:25:08 +02:00
2008-04-28 08:58:32 -07:00
2008-06-03 08:20:17 -07:00
2008-04-15 13:26:52 -04:00
2008-04-28 08:58:25 -07:00
2008-04-30 08:29:34 -07:00
2008-04-21 15:51:36 -07:00
2008-06-06 11:29:14 -07:00
2008-04-27 18:28:18 +03:00
2008-05-24 09:56:12 -07:00
2008-04-30 08:29:54 -07:00
2008-04-30 08:29:54 -07:00
2008-04-29 08:06:05 -07:00
2008-04-17 12:22:31 +02:00
2008-05-01 08:03:59 -07:00
2008-04-28 08:58:36 -07:00
2008-04-30 08:29:54 -07:00
2008-04-28 08:58:20 -07:00
2008-04-28 08:58:29 -07:00
2008-04-29 08:06:06 -07:00
2008-04-29 08:06:23 -07:00
2008-04-19 19:44:59 +02:00
2008-05-04 17:07:03 -07:00
2008-04-29 08:06:27 -07:00
2008-06-12 16:34:35 -07:00
2008-04-30 08:29:54 -07:00
2008-06-25 19:25:42 -04:00
2008-04-30 08:29:37 -07:00
2008-06-12 10:48:00 +02:00
2008-04-30 08:29:53 -07:00
2008-05-01 08:03:59 -07:00
2008-05-29 14:46:30 +02:00
2008-04-19 19:10:33 -07:00
2008-06-23 10:36:47 -07:00
2008-06-06 11:29:10 -07:00
2008-05-24 09:56:09 -07:00
2008-04-17 20:05:36 +02:00
2008-04-17 14:22:23 +02:00
2008-04-24 21:16:42 -07:00
2008-04-24 21:16:57 -07:00
2008-04-24 21:16:54 -07:00
2008-05-09 07:45:18 -07:00
2008-06-05 06:35:47 -03:00
2008-05-30 15:09:45 +10:00
2008-05-30 15:09:46 +10:00
2008-06-10 18:20:30 -04:00
2008-05-30 15:09:44 +10:00
2008-05-02 21:50:50 +10:00
2008-04-28 08:58:21 -07:00
2008-04-28 08:58:23 -07:00
2008-05-01 17:38:35 -04:00
2008-05-27 01:37:26 -04:00
2008-04-30 08:29:49 -07:00
2008-04-29 08:06:06 -07:00
2008-04-25 00:29:34 -07:00