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)