Gitweb:
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=54af6233d1cb84cdfaa6ea44ea0db0bcf518baac
Commit: 54af6233d1cb84cdfaa6ea44ea0db0bcf518baac
Parent: 67e6682f18b3bf812a994ae027ff87174a297ae8
Author: Nick Piggin <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 26 14:58:10 2007 -0600
Committer: Dave Kleikamp <[EMAIL PROTECTED]>
CommitDate: Thu Jan 3 13:11:44 2008 -0600
JFS is missing a memory barrier
JFS is missing a memory barrier needed to close the critical section before
clearing the lock bit. Use lock bitops for this.
unlock_page() has a second barrier after clearing the lock, which is
required because it checks whether the waitqueue is active without locks.
Such a barrier is not required here because the waitqueue spinlock is
always taken (something to think about if performance is an issue).
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Signed-off-by: Dave Kleikamp <[EMAIL PROTECTED]>
---
fs/jfs/jfs_metapage.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c
index b27fa11..1dfaae5 100644
--- a/fs/jfs/jfs_metapage.c
+++ b/fs/jfs/jfs_metapage.c
@@ -39,11 +39,11 @@ static struct {
#endif
#define metapage_locked(mp) test_bit(META_locked, &(mp)->flag)
-#define trylock_metapage(mp) test_and_set_bit(META_locked, &(mp)->flag)
+#define trylock_metapage(mp) test_and_set_bit_lock(META_locked, &(mp)->flag)
static inline void unlock_metapage(struct metapage *mp)
{
- clear_bit(META_locked, &mp->flag);
+ clear_bit_unlock(META_locked, &mp->flag);
wake_up(&mp->wait);
}
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html