reiserfs: convert j_lock to mutex
Jeff Mahoney [Fri, 25 Jul 2008 08:46:38 +0000 (01:46 -0700)]
j_lock is a semaphore but uses it as if it were a mutex.  This patch converts
it to a mutex.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Edward Shishkin <edward.shishkin@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

fs/reiserfs/journal.c
include/linux/reiserfs_fs_sb.h

index e396b2f..0f7b1e8 100644 (file)
@@ -558,13 +558,13 @@ static inline void insert_journal_hash(struct reiserfs_journal_cnode **table,
 static inline void lock_journal(struct super_block *p_s_sb)
 {
        PROC_INFO_INC(p_s_sb, journal.lock_journal);
-       down(&SB_JOURNAL(p_s_sb)->j_lock);
+       mutex_lock(&SB_JOURNAL(p_s_sb)->j_mutex);
 }
 
 /* unlock the current transaction */
 static inline void unlock_journal(struct super_block *p_s_sb)
 {
-       up(&SB_JOURNAL(p_s_sb)->j_lock);
+       mutex_unlock(&SB_JOURNAL(p_s_sb)->j_mutex);
 }
 
 static inline void get_journal_list(struct reiserfs_journal_list *jl)
@@ -2837,7 +2837,7 @@ int journal_init(struct super_block *p_s_sb, const char *j_dev_name,
        journal->j_last = NULL;
        journal->j_first = NULL;
        init_waitqueue_head(&(journal->j_join_wait));
-       sema_init(&journal->j_lock, 1);
+       mutex_init(&journal->j_mutex);
        sema_init(&journal->j_flush_sem, 1);
 
        journal->j_trans_id = 10;
index 336ee43..49b639b 100644 (file)
@@ -193,7 +193,7 @@ struct reiserfs_journal {
        struct buffer_head *j_header_bh;
 
        time_t j_trans_start_time;      /* time this transaction started */
-       struct semaphore j_lock;
+       struct mutex j_mutex;
        struct semaphore j_flush_sem;
        wait_queue_head_t j_join_wait;  /* wait for current transaction to finish before starting new one */
        atomic_t j_jlock;       /* lock for j_join_wait */