Implement the designed locking around journal->j_head. 25-akpm/fs/jbd/journal.c | 4 +++- fs/jbd/checkpoint.c | 0 fs/jbd/commit.c | 0 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 Thu Jun 5 15:14:26 2003 +++ 25-akpm/fs/jbd/journal.c Thu Jun 5 15:14:26 2003 @@ -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; _