lock_kernel() is no longer needed in JBD.  Remove all the lock_kernel() calls
from fs/jbd/.



 25-akpm/fs/jbd/commit.c      |    4 ---
 25-akpm/fs/jbd/journal.c     |   44 ++++++++++---------------------------------
 25-akpm/fs/jbd/transaction.c |   17 ++--------------
 25-akpm/include/linux/jbd.h  |    4 ---
 4 files changed, 14 insertions(+), 55 deletions(-)

diff -puN fs/jbd/commit.c~jbd-300-remove-lock_kernel fs/jbd/commit.c
--- 25/fs/jbd/commit.c~jbd-300-remove-lock_kernel	Thu Jun  5 15:14:29 2003
+++ 25-akpm/fs/jbd/commit.c	Thu Jun  5 15:14:29 2003
@@ -70,8 +70,6 @@ void journal_commit_transaction(journal_
 	spin_unlock(&journal->j_list_lock);
 #endif
 
-	lock_kernel();
-
 	J_ASSERT(journal->j_running_transaction != NULL);
 	J_ASSERT(journal->j_committing_transaction == NULL);
 
@@ -168,8 +166,6 @@ void journal_commit_transaction(journal_
 	commit_transaction->t_log_start = journal->j_head;
 	wake_up(&journal->j_wait_transaction_locked);
 	spin_unlock(&journal->j_state_lock);
-
-	unlock_kernel();
 	
 	jbd_debug (3, "JBD: commit phase 2\n");
 
diff -puN fs/jbd/journal.c~jbd-300-remove-lock_kernel fs/jbd/journal.c
--- 25/fs/jbd/journal.c~jbd-300-remove-lock_kernel	Thu Jun  5 15:14:29 2003
+++ 25-akpm/fs/jbd/journal.c	Thu Jun  5 15:14:29 2003
@@ -84,11 +84,6 @@ EXPORT_SYMBOL(journal_force_commit);
 static int journal_convert_superblock_v1(journal_t *, journal_superblock_t *);
 
 /*
- * List of all journals in the system.  Protected by the BKL.
- */
-static LIST_HEAD(all_journals);
-
-/*
  * Helper function used to manage commit timeouts
  */
 
@@ -137,8 +132,6 @@ int kjournald(void *arg)
 
 	daemonize("kjournald");
 
-	lock_kernel();
-
 	/* Set up an interval timer which can be used to trigger a
            commit wakeup after the commit interval expires */
 	init_timer(&timer);
@@ -153,10 +146,6 @@ int kjournald(void *arg)
 	printk(KERN_INFO "kjournald starting.  Commit interval %ld seconds\n",
 			journal->j_commit_interval / HZ);
 
-	lock_kernel();
-	list_add(&journal->j_all_journals, &all_journals);
-	unlock_kernel();
-
 	/*
 	 * And now, wait forever for commit wakeup events.
 	 */
@@ -234,14 +223,9 @@ loop:
 	}
 	spin_unlock(&journal->j_state_lock);
 
-	lock_kernel();
-	list_del(&journal->j_all_journals);
-	unlock_kernel();
-
 	journal->j_task = NULL;
 	wake_up(&journal->j_wait_done_commit);
 	jbd_debug(1, "Journal thread exiting.\n");
-	unlock_kernel();
 	return 0;
 }
 
@@ -514,7 +498,6 @@ int log_wait_commit(journal_t *journal, 
 {
 	int err = 0;
 
-	lock_kernel();
 #ifdef CONFIG_JBD_DEBUG
 	lock_journal(journal);
 	spin_lock(&journal->j_state_lock);
@@ -542,8 +525,6 @@ int log_wait_commit(journal_t *journal, 
 		printk(KERN_EMERG "journal commit I/O error\n");
 		err = -EIO;
 	}
-
-	unlock_kernel();
 	return err;
 }
 
@@ -918,15 +899,14 @@ void journal_update_superblock(journal_t
 	 * any future commit will have to be careful to update the
 	 * superblock again to re-record the true start of the log. */
 
-	lock_kernel();
+	spin_lock(&journal->j_state_lock);
 	if (sb->s_start)
 		journal->j_flags &= ~JFS_FLUSHED;
 	else
 		journal->j_flags |= JFS_FLUSHED;
-	unlock_kernel();
+	spin_unlock(&journal->j_state_lock);
 }
 
-
 /*
  * Read the superblock for a given journal, performing initial
  * validation of the format.
@@ -1425,7 +1405,6 @@ void __journal_abort_soft (journal_t *jo
 	if (journal->j_flags & JFS_ABORT)
 		return;
 
-	lock_kernel();
 	if (!journal->j_errno)
 		journal->j_errno = errno;
 
@@ -1433,7 +1412,6 @@ void __journal_abort_soft (journal_t *jo
 
 	if (errno)
 		journal_update_superblock(journal, 1);
-	unlock_kernel();
 }
 
 /**
@@ -1500,17 +1478,17 @@ void journal_abort (journal_t *journal, 
  * If the journal has been aborted on this mount time -EROFS will
  * be returned.
  */
-int journal_errno (journal_t *journal)
+int journal_errno(journal_t *journal)
 {
 	int err;
 
 	lock_journal(journal);
-	lock_kernel();
+	spin_lock(&journal->j_state_lock);
 	if (journal->j_flags & JFS_ABORT)
 		err = -EROFS;
 	else
 		err = journal->j_errno;
-	unlock_kernel();
+	spin_unlock(&journal->j_state_lock);
 	unlock_journal(journal);
 	return err;
 }
@@ -1523,17 +1501,17 @@ int journal_errno (journal_t *journal)
  * An error must be cleared or Acked to take a FS out of readonly
  * mode.
  */
-int journal_clear_err (journal_t *journal)
+int journal_clear_err(journal_t *journal)
 {
 	int err = 0;
 
 	lock_journal(journal);
-	lock_kernel();
+	spin_lock(&journal->j_state_lock);
 	if (journal->j_flags & JFS_ABORT)
 		err = -EROFS;
 	else
 		journal->j_errno = 0;
-	unlock_kernel();
+	spin_unlock(&journal->j_state_lock);
 	unlock_journal(journal);
 	return err;
 }
@@ -1545,13 +1523,13 @@ int journal_clear_err (journal_t *journa
  * An error must be cleared or Acked to take a FS out of readonly
  * mode.
  */
-void journal_ack_err (journal_t *journal)
+void journal_ack_err(journal_t *journal)
 {
 	lock_journal(journal);
-	lock_kernel();
+	spin_lock(&journal->j_state_lock);
 	if (journal->j_errno)
 		journal->j_flags |= JFS_ACK_ERR;
-	unlock_kernel();
+	spin_unlock(&journal->j_state_lock);
 	unlock_journal(journal);
 }
 
diff -puN include/linux/jbd.h~jbd-300-remove-lock_kernel include/linux/jbd.h
--- 25/include/linux/jbd.h~jbd-300-remove-lock_kernel	Thu Jun  5 15:14:29 2003
+++ 25-akpm/include/linux/jbd.h	Thu Jun  5 15:14:29 2003
@@ -623,7 +623,6 @@ struct transaction_s 
  *  a commit?
  * @j_commit_timer:  The timer used to wakeup the commit thread
  * @j_commit_timer_active: Timer flag
- * @j_all_journals:  Link all journals together - system-wide 
  * @j_revoke: The revoke table - maintains the list of revoked blocks in the
  *     current transaction.
  */
@@ -804,9 +803,6 @@ struct journal_s
 	struct timer_list	*j_commit_timer;
 	int			j_commit_timer_active;	/* [j_state_lock] */
 
-	/* Link all journals together - system-wide [lock_kernel] */
-	struct list_head	j_all_journals;
-
 	/*
 	 * The revoke table: maintains the list of revoked blocks in the
 	 * current transaction.  [j_revoke_lock]
diff -puN fs/jbd/transaction.c~jbd-300-remove-lock_kernel fs/jbd/transaction.c
--- 25/fs/jbd/transaction.c~jbd-300-remove-lock_kernel	Thu Jun  5 15:14:29 2003
+++ 25-akpm/fs/jbd/transaction.c	Thu Jun  5 15:14:29 2003
@@ -290,9 +290,7 @@ handle_t *journal_start(journal_t *journ
 
 	current->journal_info = handle;
 
-	lock_kernel();
 	err = start_this_handle(journal, handle);
-	unlock_kernel();
 	if (err < 0) {
 		jbd_free_handle(handle);
 		current->journal_info = NULL;
@@ -407,7 +405,6 @@ int journal_restart(handle_t *handle, in
 	J_ASSERT(transaction->t_updates > 0);
 	J_ASSERT(journal_current_handle() == handle);
 
-	lock_kernel();
 	spin_lock(&transaction->t_handle_lock);
 	transaction->t_outstanding_credits -= handle->h_buffer_credits;
 	transaction->t_updates--;
@@ -421,7 +418,6 @@ int journal_restart(handle_t *handle, in
 
 	handle->h_buffer_credits = nblocks;
 	ret = start_this_handle(journal, handle);
-	unlock_kernel();
 	return ret;
 }
 
@@ -845,10 +841,8 @@ int journal_get_create_access(handle_t *
 	 * which hits an assertion error.
 	 */
 	JBUFFER_TRACE(jh, "cancelling revoke");
-	lock_kernel();
 	journal_cancel_revoke(handle, jh);
 	journal_put_journal_head(jh);
-	unlock_kernel();
 out:
 	unlock_journal(journal);
 	return err;
@@ -1385,7 +1379,6 @@ int journal_stop(handle_t *handle)
 	}
 
 	current->journal_info = NULL;
-	lock_kernel();
 	spin_lock(&transaction->t_handle_lock);
 	transaction->t_outstanding_credits -= handle->h_buffer_credits;
 	transaction->t_updates--;
@@ -1431,7 +1424,6 @@ int journal_stop(handle_t *handle)
 		spin_unlock(&transaction->t_handle_lock);
 	}
 
-	unlock_kernel();
 	jbd_free_handle(handle);
 	return err;
 }
@@ -1448,16 +1440,13 @@ int journal_force_commit(journal_t *jour
 	handle_t *handle;
 	int ret;
 
-	lock_kernel();
 	handle = journal_start(journal, 1);
 	if (IS_ERR(handle)) {
 		ret = PTR_ERR(handle);
-		goto out;
+	} else {
+		handle->h_sync = 1;
+		ret = journal_stop(handle);
 	}
-	handle->h_sync = 1;
-	ret = journal_stop(handle);
-out:
-	unlock_kernel();
 	return ret;
 }
 

_