Implement the designed locking around journal->j_head.



 fs/jbd/checkpoint.c |    0 
 fs/jbd/commit.c     |    0 
 fs/jbd/journal.c    |    4 +++-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff -puN fs/jbd/checkpoint.c~jbd-190-j_head-locking fs/jbd/checkpoint.c
diff -puN fs/jbd/commit.c~jbd-190-j_head-locking fs/jbd/commit.c
diff -puN fs/jbd/journal.c~jbd-190-j_head-locking fs/jbd/journal.c
--- 25/fs/jbd/journal.c~jbd-190-j_head-locking	2003-05-25 00:21:24.000000000 -0700
+++ 25-akpm/fs/jbd/journal.c	2003-05-25 00:21:24.000000000 -0700
@@ -507,6 +507,7 @@ int journal_next_log_block(journal_t *jo
 {
 	unsigned long blocknr;
 
+	spin_lock(&journal->j_state_lock);
 	J_ASSERT(journal->j_free > 1);
 
 	blocknr = journal->j_head;
@@ -514,6 +515,7 @@ int journal_next_log_block(journal_t *jo
 	journal->j_free--;
 	if (journal->j_head == journal->j_last)
 		journal->j_head = journal->j_first;
+	spin_unlock(&journal->j_state_lock);
 	return journal_bmap(journal, blocknr, retp);
 }
 
@@ -733,7 +735,7 @@ static void journal_fail_superblock (jou
  * subsequent use.
  */
 
-static int journal_reset (journal_t *journal)
+static int journal_reset(journal_t *journal)
 {
 	journal_superblock_t *sb = journal->j_superblock;
 	unsigned int first, last;

_