From: Chris Mason <mason@suse.com>

unlock_buffer() needs a barrier before the waitqueue_active() optimisation.




 25-akpm/fs/buffer.c |    1 +
 1 files changed, 1 insertion(+)

diff -puN fs/buffer.c~unlock_buffer-barrier fs/buffer.c
--- 25/fs/buffer.c~unlock_buffer-barrier	Fri Jul 18 14:50:28 2003
+++ 25-akpm/fs/buffer.c	Fri Jul 18 14:50:28 2003
@@ -91,6 +91,7 @@ void wake_up_buffer(struct buffer_head *
 {
 	wait_queue_head_t *wq = bh_waitq_head(bh);
 
+	smp_mb();
 	if (waitqueue_active(wq))
 		wake_up_all(wq);
 }

_