

We don't trust bh->b_page across all filesystems.


---

 25-akpm/fs/buffer.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)

diff -puN fs/buffer.c~blk_run_page-sync_buffer-revert fs/buffer.c
--- 25/fs/buffer.c~blk_run_page-sync_buffer-revert	2004-05-12 18:16:03.072229008 -0700
+++ 25-akpm/fs/buffer.c	2004-05-12 18:16:18.645861456 -0700
@@ -113,7 +113,12 @@ static int bh_wake_function(wait_queue_t
 
 static void sync_buffer(struct buffer_head *bh)
 {
-	blk_run_page(bh->b_page);
+	struct block_device *bd;
+
+	smp_mb();
+	bd = bh->b_bdev;
+	if (bd)
+		blk_run_address_space(bd->bd_inode->i_mapping);
 }
 
 void fastcall __lock_buffer(struct buffer_head *bh)

_
