diff options
author | Jeff Mahoney <jeffm@suse.com> | 2008-07-25 04:46:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-25 13:53:33 -0400 |
commit | afe70259076fff0446001eaa1a287f615241a357 (patch) | |
tree | d619c7f6235264a7b08aec16ba3563a686415079 | |
parent | f68215c4640a38d66429014e524a627bf572d26a (diff) |
reiserfs: convert j_flush_sem to mutex
j_flush_sem is a semaphore but uses it as if it were a mutex. This patch
converts it to a mutex.
[akpm@linux-foundation.org: fix mutex_trylock retval treatment]
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>
-rw-r--r-- | fs/reiserfs/journal.c | 14 | ||||
-rw-r--r-- | include/linux/reiserfs_fs_sb.h | 2 |
2 files changed, 8 insertions, 8 deletions
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c index 0f7b1e807e60..3cb4a562030e 100644 --- a/fs/reiserfs/journal.c +++ b/fs/reiserfs/journal.c | |||
@@ -1411,8 +1411,8 @@ static int flush_journal_list(struct super_block *s, | |||
1411 | 1411 | ||
1412 | /* if flushall == 0, the lock is already held */ | 1412 | /* if flushall == 0, the lock is already held */ |
1413 | if (flushall) { | 1413 | if (flushall) { |
1414 | down(&journal->j_flush_sem); | 1414 | mutex_lock(&journal->j_flush_mutex); |
1415 | } else if (!down_trylock(&journal->j_flush_sem)) { | 1415 | } else if (mutex_trylock(&journal->j_flush_mutex)) { |
1416 | BUG(); | 1416 | BUG(); |
1417 | } | 1417 | } |
1418 | 1418 | ||
@@ -1642,7 +1642,7 @@ static int flush_journal_list(struct super_block *s, | |||
1642 | jl->j_state = 0; | 1642 | jl->j_state = 0; |
1643 | put_journal_list(s, jl); | 1643 | put_journal_list(s, jl); |
1644 | if (flushall) | 1644 | if (flushall) |
1645 | up(&journal->j_flush_sem); | 1645 | mutex_unlock(&journal->j_flush_mutex); |
1646 | put_fs_excl(); | 1646 | put_fs_excl(); |
1647 | return err; | 1647 | return err; |
1648 | } | 1648 | } |
@@ -1772,12 +1772,12 @@ static int kupdate_transactions(struct super_block *s, | |||
1772 | struct reiserfs_journal *journal = SB_JOURNAL(s); | 1772 | struct reiserfs_journal *journal = SB_JOURNAL(s); |
1773 | chunk.nr = 0; | 1773 | chunk.nr = 0; |
1774 | 1774 | ||
1775 | down(&journal->j_flush_sem); | 1775 | mutex_lock(&journal->j_flush_mutex); |
1776 | if (!journal_list_still_alive(s, orig_trans_id)) { | 1776 | if (!journal_list_still_alive(s, orig_trans_id)) { |
1777 | goto done; | 1777 | goto done; |
1778 | } | 1778 | } |
1779 | 1779 | ||
1780 | /* we've got j_flush_sem held, nobody is going to delete any | 1780 | /* we've got j_flush_mutex held, nobody is going to delete any |
1781 | * of these lists out from underneath us | 1781 | * of these lists out from underneath us |
1782 | */ | 1782 | */ |
1783 | while ((num_trans && transactions_flushed < num_trans) || | 1783 | while ((num_trans && transactions_flushed < num_trans) || |
@@ -1812,7 +1812,7 @@ static int kupdate_transactions(struct super_block *s, | |||
1812 | } | 1812 | } |
1813 | 1813 | ||
1814 | done: | 1814 | done: |
1815 | up(&journal->j_flush_sem); | 1815 | mutex_unlock(&journal->j_flush_mutex); |
1816 | return ret; | 1816 | return ret; |
1817 | } | 1817 | } |
1818 | 1818 | ||
@@ -2838,7 +2838,7 @@ int journal_init(struct super_block *p_s_sb, const char *j_dev_name, | |||
2838 | journal->j_first = NULL; | 2838 | journal->j_first = NULL; |
2839 | init_waitqueue_head(&(journal->j_join_wait)); | 2839 | init_waitqueue_head(&(journal->j_join_wait)); |
2840 | mutex_init(&journal->j_mutex); | 2840 | mutex_init(&journal->j_mutex); |
2841 | sema_init(&journal->j_flush_sem, 1); | 2841 | mutex_init(&journal->j_flush_mutex); |
2842 | 2842 | ||
2843 | journal->j_trans_id = 10; | 2843 | journal->j_trans_id = 10; |
2844 | journal->j_mount_id = 10; | 2844 | journal->j_mount_id = 10; |
diff --git a/include/linux/reiserfs_fs_sb.h b/include/linux/reiserfs_fs_sb.h index 49b639b88bac..c0751724ee64 100644 --- a/include/linux/reiserfs_fs_sb.h +++ b/include/linux/reiserfs_fs_sb.h | |||
@@ -194,7 +194,7 @@ struct reiserfs_journal { | |||
194 | 194 | ||
195 | time_t j_trans_start_time; /* time this transaction started */ | 195 | time_t j_trans_start_time; /* time this transaction started */ |
196 | struct mutex j_mutex; | 196 | struct mutex j_mutex; |
197 | struct semaphore j_flush_sem; | 197 | struct mutex j_flush_mutex; |
198 | wait_queue_head_t j_join_wait; /* wait for current transaction to finish before starting new one */ | 198 | wait_queue_head_t j_join_wait; /* wait for current transaction to finish before starting new one */ |
199 | atomic_t j_jlock; /* lock for j_join_wait */ | 199 | atomic_t j_jlock; /* lock for j_join_wait */ |
200 | int j_list_bitmap_index; /* number of next list bitmap to use */ | 200 | int j_list_bitmap_index; /* number of next list bitmap to use */ |