Remove the remaining sleep_on() calls from JBD. fs/jbd/commit.c | 17 ++++++++++++----- fs/jbd/journal.c | 8 +++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff -puN fs/jbd/commit.c~jbd-250-remove-sleep_on fs/jbd/commit.c --- 25/fs/jbd/commit.c~jbd-250-remove-sleep_on 2003-05-24 19:59:03.000000000 -0700 +++ 25-akpm/fs/jbd/commit.c 2003-05-24 20:03:44.000000000 -0700 @@ -85,11 +85,18 @@ void journal_commit_transaction(journal_ spin_lock(&commit_transaction->t_handle_lock); while (commit_transaction->t_updates != 0) { - spin_unlock(&commit_transaction->t_handle_lock); - unlock_journal(journal); - sleep_on(&journal->j_wait_updates); - lock_journal(journal); - spin_lock(&commit_transaction->t_handle_lock); + DEFINE_WAIT(wait); + + prepare_to_wait(&journal->j_wait_updates, &wait, + TASK_UNINTERRUPTIBLE); + if (commit_transaction->t_updates) { + spin_unlock(&commit_transaction->t_handle_lock); + unlock_journal(journal); + schedule(); + lock_journal(journal); + spin_lock(&commit_transaction->t_handle_lock); + } + finish_wait(&journal->j_wait_updates, &wait); } spin_unlock(&commit_transaction->t_handle_lock); diff -puN fs/jbd/journal.c~jbd-250-remove-sleep_on fs/jbd/journal.c --- 25/fs/jbd/journal.c~jbd-250-remove-sleep_on 2003-05-24 19:59:03.000000000 -0700 +++ 25-akpm/fs/jbd/journal.c 2003-05-24 19:59:03.000000000 -0700 @@ -247,10 +247,8 @@ loop: static void journal_start_thread(journal_t *journal) { - kernel_thread(kjournald, (void *) journal, - CLONE_VM | CLONE_FS | CLONE_FILES); - while (!journal->j_task) - sleep_on(&journal->j_wait_done_commit); + kernel_thread(kjournald, journal, CLONE_VM|CLONE_FS|CLONE_FILES); + wait_event(journal->j_wait_done_commit, journal->j_task != 0); } static void journal_kill_thread(journal_t *journal) @@ -259,7 +257,7 @@ static void journal_kill_thread(journal_ while (journal->j_task) { wake_up(&journal->j_wait_commit); - sleep_on(&journal->j_wait_done_commit); + wait_event(journal->j_wait_done_commit, journal->j_task == 0); } } _