--- /opt/kernel/linux-2.4.2-ac8/drivers/block/loop.c Fri Mar 2 14:48:24 2001 +++ drivers/block/loop.c Fri Mar 2 16:27:31 2001 @@ -307,6 +307,7 @@ lo->lo_bh = lo->lo_bhtail = bh; spin_unlock_irqrestore(&lo->lo_lock, flags); + atomic_inc(&lo->lo_pending); up(&lo->lo_bh_mutex); } @@ -404,7 +405,6 @@ spin_lock_irq(&lo->lo_lock); if (lo->lo_state != Lo_bound) goto inactive; - atomic_inc(&lo->lo_pending); spin_unlock_irq(&lo->lo_lock); if (rw == WRITE) { @@ -452,8 +452,6 @@ return 0; err: - if (atomic_dec_and_test(&lo->lo_pending)) - up(&lo->lo_bh_mutex); loop_put_buffer(bh); out: buffer_IO_error(rbh);