diff -urN 2.4.7pre5/drivers/block/ll_rw_blk.c end_buffer/drivers/block/ll_rw_blk.c --- 2.4.7pre5/drivers/block/ll_rw_blk.c Tue Jul 10 18:02:40 2001 +++ end_buffer/drivers/block/ll_rw_blk.c Tue Jul 10 20:25:23 2001 @@ -960,16 +960,6 @@ } } -/* - * Default IO end handler, used by "ll_rw_block()". - */ -static void end_buffer_io_sync(struct buffer_head *bh, int uptodate) -{ - mark_buffer_uptodate(bh, uptodate); - unlock_buffer(bh); - atomic_dec(&bh->b_count); -} - /** * ll_rw_block: low-level access to block devices * @rw: whether to %READ or %WRITE or maybe %READA (readahead) diff -urN 2.4.7pre5/fs/buffer.c end_buffer/fs/buffer.c --- 2.4.7pre5/fs/buffer.c Tue Jul 10 18:02:45 2001 +++ end_buffer/fs/buffer.c Tue Jul 10 20:25:39 2001 @@ -179,8 +179,11 @@ put_bh(bh); } -/* End-of-write handler.. Just mark it up-to-date and unlock the buffer. */ -static void end_buffer_write(struct buffer_head *bh, int uptodate) +/* + * Default IO end handler, used by "ll_rw_block()", in general buffer + * cache and async writes. + */ +void end_buffer_io_sync(struct buffer_head *bh, int uptodate) { mark_buffer_uptodate(bh, uptodate); __unlock_buffer(bh); @@ -201,7 +204,7 @@ get_bh(wait); do { struct buffer_head * bh = *array++; - bh->b_end_io = end_buffer_write; + bh->b_end_io = end_buffer_io_sync; submit_bh(WRITE, bh); } while (--count); wait_on_buffer(wait); diff -urN 2.4.7pre5/include/linux/fs.h end_buffer/include/linux/fs.h --- 2.4.7pre5/include/linux/fs.h Tue Jul 10 19:32:01 2001 +++ end_buffer/include/linux/fs.h Tue Jul 10 20:25:23 2001 @@ -1061,6 +1061,7 @@ /* reiserfs_writepage needs this */ extern void set_buffer_async_io(struct buffer_head *bh) ; +extern void end_buffer_io_sync(struct buffer_head *, int); #define BUF_CLEAN 0 #define BUF_LOCKED 1 /* Buffers scheduled for write */