--- ./fs/reiserfs/inode.c.~1~ Wed Jul 4 04:03:46 2001 +++ ./fs/reiserfs/inode.c Tue Jul 10 17:16:06 2001 @@ -1814,7 +1814,6 @@ for(i = 0 ; i < nr ; i++) { bh = bhp[i] ; lock_buffer(bh) ; - atomic_inc(&bh->b_count) ; /* async end_io handler decs 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 --- ./fs/buffer.c.~1~ Tue Jul 10 17:12:15 2001 +++ ./fs/buffer.c Tue Jul 10 17:16:26 2001 @@ -838,7 +838,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 @@ -858,7 +857,6 @@ return; still_busy: - put_bh(bh); spin_unlock_irqrestore(&page_uptodate_lock, flags); return; } @@ -1556,7 +1554,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; @@ -1758,7 +1755,6 @@ struct buffer_head * bh = arr[i]; lock_buffer(bh); set_buffer_async_io(bh); - get_bh(bh); } /* Stage 3: start the IO */ @@ -2203,7 +2199,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);