| From f25a39ab172b4c4e881f7f98b09254e0530aabc6 Mon Sep 17 00:00:00 2001 |
| From: Mike Galbraith <mgalbraith@suse.de> |
| Date: Wed, 11 Jul 2012 22:05:20 +0000 |
| Subject: [PATCH 257/270] fs, jbd: pull your plug when waiting for space |
| |
| With an -rt kernel, and a heavy sync IO load, tasks can jam |
| up on journal locks without unplugging, which can lead to |
| terminal IO starvation. Unplug and schedule when waiting for space. |
| |
| Signed-off-by: Mike Galbraith <mgalbraith@suse.de> |
| Cc: Steven Rostedt <rostedt@goodmis.org> |
| Cc: Theodore Tso <tytso@mit.edu> |
| Link: http://lkml.kernel.org/r/1341812414.7370.73.camel@marge.simpson.net |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Steven Rostedt <rostedt@goodmis.org> |
| --- |
| fs/jbd/checkpoint.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c |
| index 05f0754..d8efcbc 100644 |
| --- a/fs/jbd/checkpoint.c |
| +++ b/fs/jbd/checkpoint.c |
| @@ -129,6 +129,8 @@ void __log_wait_for_space(journal_t *journal) |
| if (journal->j_flags & JFS_ABORT) |
| return; |
| spin_unlock(&journal->j_state_lock); |
| + if (current->plug) |
| + io_schedule(); |
| mutex_lock(&journal->j_checkpoint_mutex); |
| |
| /* |
| -- |
| 1.7.10.4 |
| |