diff -urN async-io_get_bh-ref/fs/buffer.c async-io_get_bh/fs/buffer.c --- async-io_get_bh-ref/fs/buffer.c Thu Jul 19 19:36:12 2001 +++ async-io_get_bh/fs/buffer.c Thu Jul 19 19:36:22 2001 @@ -828,7 +828,6 @@ /* OK, the async IO on this page is complete. */ spin_unlock_irqrestore(&page_uptodate_lock, flags); - put_bh(bh); /* * if none of the buffers had errors then we can set the @@ -848,7 +847,6 @@ return; still_busy: - put_bh(bh); spin_unlock_irqrestore(&page_uptodate_lock, flags); return; } @@ -1546,7 +1544,6 @@ do { lock_buffer(bh); set_buffer_async_io(bh); - get_bh(bh); set_bit(BH_Uptodate, &bh->b_state); clear_bit(BH_Dirty, &bh->b_state); bh = bh->b_this_page; @@ -1748,7 +1745,6 @@ struct buffer_head * bh = arr[i]; lock_buffer(bh); set_buffer_async_io(bh); - get_bh(bh); } /* Stage 3: start the IO */ @@ -2193,7 +2189,6 @@ bh->b_blocknr = *(b++); set_bit(BH_Mapped, &bh->b_state); set_buffer_async_io(bh); - get_bh(bh); bh = bh->b_this_page; } while (bh != head); diff -urN async-io_get_bh-ref/fs/reiserfs/inode.c async-io_get_bh/fs/reiserfs/inode.c --- async-io_get_bh-ref/fs/reiserfs/inode.c Thu Jul 19 04:03:20 2001 +++ async-io_get_bh/fs/reiserfs/inode.c Thu Jul 19 19:36:42 2001 @@ -1790,7 +1790,6 @@ for(i = 0 ; i < nr ; i++) { bh = bhp[i] ; lock_buffer(bh) ; - get_bh(bh) ; /* async end_io handler puts this */ set_buffer_async_io(bh) ; /* submit_bh doesn't care if the buffer is dirty, but nobody ** later on in the call chain will be cleaning it. So, we