lkml.org 
[lkml]   [2001]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: report bug: System reboots when accessing a loop-device over a second loop-device with 2.4.2-ac7
On Fri, Mar 02 2001, Mario Hermann wrote:
> There is another small bug with the loop over loop problem. Now it works
> fine for
> files but not for Devices:
>
> losetup /dev/loop0 /dev/sr1
> losetup /dev/loop1 /dev/loop0
> dd if=/dev/loop1 of=test.dat bs=2048 count=1024

Pending miscount, this should fix it.

--
Jens Axboe

--- /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);
\
 
 \ /
  Last update: 2005-03-22 13:29    [W:0.086 / U:0.228 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site