Hi,
I've got a simple and stupid patch.
It revives loopback devices but can lead to more serious problems
because of IRQ playing.
You may try it if you're a brave person.
--- linux.orig/drivers/block/loop.c Sat May 16 16:16:51 1998
+++ linux/drivers/block/loop.c Thu Jun 11 16:30:05 1998
@@ -187,11 +187,15 @@
struct loop_device *lo;
struct buffer_head *bh;
struct request *current_request;
+ unsigned long flags;
+ save_flags(flags);
repeat:
INIT_REQUEST;
current_request=CURRENT;
CURRENT=current_request->next;
+ spin_unlock_irqrestore(&io_request_lock,flags);
+ __sti();
if (MINOR(current_request->rq_dev) >= MAX_LOOP)
goto error_out;
lo = &loop_dev[MINOR(current_request->rq_dev)];
@@ -274,11 +278,13 @@
offset = 0;
block++;
}
+ spin_lock_irq(&io_request_lock);
current_request->next=CURRENT;
CURRENT=current_request;
end_request(1);
goto repeat;
error_out:
+ spin_lock_irq(&io_request_lock);
current_request->next=CURRENT;
CURRENT=current_request;
end_request(0);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu