[DRBD-user] kernel oops drbd 8.0_pre2 on Fedora Core 5 and RHEL4

Lars Ellenberg Lars.Ellenberg at linbit.com
Tue Apr 11 12:07:43 CEST 2006

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


/ 2006-04-10 14:35:01 +0100
\ Langemeyer, Werner (IBW):
> Dear drbd-user,
> 
> I could not get the drbd version 8 up and running on RHEL4, FC5 as well as on Vmware Workstation 5.5.1 with RHEL4 and FC5 installed.

> Call Trace:
>  [<c02dc5cc>] _spin_lock_irqsave+0x9/0xd     [<c01b7892>] blk_run_queue+0xf/0x37
>  [<d09db7df>] drbd_bm_rw+0x16f/0x3bf [drbd]     [<d09eb966>] drbd_al_shrink+0x19

try the patch below.
I assumed that any block device need to have a queue, or that the
blk_run_queue would if (NULL=q) return; or something like that.
right now, I assumed that would be illegal.


Index: drbd_bitmap.c
===================================================================
--- drbd_bitmap.c	(revision 2143)
+++ drbd_bitmap.c	(working copy)
@@ -758,7 +758,7 @@
 		drbd_bm_page_io_async(mdev,b,i,rw);
 	}
 
-	blk_run_queue(bdev_get_queue(mdev->bc->md_bdev));
+	drbd_blk_run_queue(bdev_get_queue(mdev->bc->md_bdev));
 	wait_event(b->bm_io_wait, atomic_read(&b->bm_async_io) == 0);
 	INFO("%s of bitmap took %lu jiffies\n", 
 	     rw == READ ? "reading" : "writing", jiffies - now);
Index: drbd_int.h
===================================================================
--- drbd_int.h	(revision 2143)
+++ drbd_int.h	(working copy)
@@ -1671,3 +1671,11 @@
 #endif
 	return rv;
 }
+
+#define drbd_blk_run_queue(q) do {	\
+	request_queue_t *_q = (q);	\
+	if (_q) blk_run_queue(_q);	\
+	else {				\
+		WARN(#q "== NULL??\n");	\
+	};				\
+} while (0)



More information about the drbd-user mailing list