Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
Lars Ellenberg wrote:
>/ 2006-04-11 15:51:18 +0100
> \ Langemeyer, Werner (IBW):
>> Lars,
>>
>> the patch is really in use. Information below, what would you like me to
>> do?
>
> comment out the call to blk_run_queu in drbd_bitmap.c drbd_bm_rw(),
> and see what happens.
I have added some debug code instead of uncommenting the blk_run_queue call
(see diffs below). Just before the oops, I get these messages:
drbd1: going to call drbd_blk_run_queue
drbd1: in drbd_blk_run_queue
drbd1: #q != NULL
Unable to handle kernel NULL pointer dereference at virtual address 00000004
...
So the result of bdev_get_queue is actually not NULL. Instead there must be
something else that's NULL, but not the queue itself.
Is there something else to try?
Best Regards,
Michael Paesold
diff -urNp drbd-8.0-pre2/drbd/drbd_bitmap.c
drbd-8.0-pre2a/drbd/drbd_bitmap.c
--- drbd-8.0-pre2/drbd/drbd_bitmap.c 2006-04-12 16:15:00.000000000 +0200
+++ drbd-8.0-pre2a/drbd/drbd_bitmap.c 2006-04-12 16:06:52.000000000 +0200
@@ -758,6 +758,7 @@ STATIC void drbd_bm_rw(struct Drbd_Conf
drbd_bm_page_io_async(mdev,b,i,rw);
}
+ WARN("going to call drbd_blk_run_queue\n");
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",
diff -urNp drbd-8.0-pre2/drbd/drbd_int.h drbd-8.0-pre2a/drbd/drbd_int.h
--- drbd-8.0-pre2/drbd/drbd_int.h 2006-04-12 16:15:00.000000000 +0200
+++ drbd-8.0-pre2a/drbd/drbd_int.h 2006-04-12 16:08:19.000000000 +0200
@@ -1674,7 +1674,11 @@ static inline int drbd_queue_order_type(
#define drbd_blk_run_queue(q) do { \
request_queue_t *_q = (q); \
- if (_q) blk_run_queue(_q); \
+ WARN("in drbd_blk_run_queue\n");\
+ if (_q) { \
+ WARN("#q != NULL\n"); \
+ blk_run_queue(_q); \
+ } \
else { \
WARN(#q "== NULL??\n"); \
}; \