<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">

Remove the remaining sleep_on() calls from JBD.


 25-akpm/fs/jbd/commit.c  |   17 ++++++++++++-----
 25-akpm/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	Thu Jun  5 15:14:29 2003
+++ 25-akpm/fs/jbd/commit.c	Thu Jun  5 15:14:29 2003
@@ -85,11 +85,18 @@ void journal_commit_transaction(journal_
 
 	spin_lock(&amp;commit_transaction-&gt;t_handle_lock);
 	while (commit_transaction-&gt;t_updates != 0) {
-		spin_unlock(&amp;commit_transaction-&gt;t_handle_lock);
-		unlock_journal(journal);
-		sleep_on(&amp;journal-&gt;j_wait_updates);
-		lock_journal(journal);
-		spin_lock(&amp;commit_transaction-&gt;t_handle_lock);
+		DEFINE_WAIT(wait);
+
+		prepare_to_wait(&amp;journal-&gt;j_wait_updates, &amp;wait,
+					TASK_UNINTERRUPTIBLE);
+		if (commit_transaction-&gt;t_updates) {
+			spin_unlock(&amp;commit_transaction-&gt;t_handle_lock);
+			unlock_journal(journal);
+			schedule();
+			lock_journal(journal);
+			spin_lock(&amp;commit_transaction-&gt;t_handle_lock);
+		}
+		finish_wait(&amp;journal-&gt;j_wait_updates, &amp;wait);
 	}
 	spin_unlock(&amp;commit_transaction-&gt;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	Thu Jun  5 15:14:29 2003
+++ 25-akpm/fs/jbd/journal.c	Thu Jun  5 15:14:29 2003
@@ -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-&gt;j_task)
-		sleep_on(&amp;journal-&gt;j_wait_done_commit);
+	kernel_thread(kjournald, journal, CLONE_VM|CLONE_FS|CLONE_FILES);
+	wait_event(journal-&gt;j_wait_done_commit, journal-&gt;j_task != 0);
 }
 
 static void journal_kill_thread(journal_t *journal)
@@ -259,7 +257,7 @@ static void journal_kill_thread(journal_
 
 	while (journal-&gt;j_task) {
 		wake_up(&amp;journal-&gt;j_wait_commit);
-		sleep_on(&amp;journal-&gt;j_wait_done_commit);
+		wait_event(journal-&gt;j_wait_done_commit, journal-&gt;j_task == 0);
 	}
 }
 

_
</pre></body></html>