[DRBD-user] oops on 2.6.5-rc3-bk2 + drbd-0.7-cvs

Philipp Reisner philipp.reisner at linbit.com
Tue Apr 6 16:34:06 CEST 2004

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


On Tuesday 06 April 2004 15:53, Andreas Schultz wrote:
> On Tuesday 06 April 2004 15:13, Philipp Reisner wrote:
>
> [...]
>
> > How old is your CVS checkout ?
>
> it's current, from this morning
>
> > Yes, I can remember that this line:
> >
> > 		q->queue_lock = &mdev->req_lock; // needed since we use
> >
> > was missing. But it is fixed since weeks.
>
> this line is there, but the queue in question is *NOT* the drbd queue, but
> the queue of the device mapper device. I've added some debug output to
> drbd_md_sync_page_io() in drbd_actlog.c and this is the output:
>
> Apr  6 14:22:50 sdev01 kernel: drbd: mdev: f734f000
> Apr  6 14:22:50 sdev01 kernel: drbd: mdev bdev: f7c54040 (dm-3)
>                                                           ^^^^
> Apr  6 14:22:50 sdev01 kernel: drbd: queue: f7858000
> Apr  6 14:22:50 sdev01 kernel: drbd: queue lock: 00000000
>
>
> diff -u -r1.1.2.82 drbd_actlog.c
> --- drbd_actlog.c       29 Mar 2004 16:15:57 -0000      1.1.2.82
> +++ drbd_actlog.c       6 Apr 2004 13:48:50 -0000
> @@ -64,6 +64,24 @@
>         struct bio_vec vec;
>         struct completion event;
>
> +       char b[BDEVNAME_SIZE];
> +
> +       request_queue_t *q = bdev_get_queue(mdev->md_bdev);
> +       if (!q) {
> +               printk(KERN_ERR
> +                      "drbd_md_sync_page_io: Trying to access "
> +                      "nonexistent block-device %s\n",
> +                      bdevname(mdev->md_bdev, b));
> +               return -ENODEV;
> +       }
> +
> +       printk(KERN_DEBUG "drbd: mdev: %p\n", mdev);
> +       printk(KERN_DEBUG "drbd: mdev bdev: %p (%s)\n",
> +              mdev->md_bdev,
> +              bdevname(mdev->md_bdev, b));
> +       printk(KERN_DEBUG "drbd: queue: %p\n", q);
> +       printk(KERN_DEBUG "drbd: queue lock: %p\n", q->queue_lock);
> +
>         bio_init(&bio);
>         bio.bi_io_vec = &vec;
>         vec.bv_page = mdev->md_io_page;
> @@ -78,7 +96,8 @@
>         bio.bi_private = &event;
>         bio.bi_end_io = drbd_md_io_complete;
>         submit_bio(rw, &bio);
> -       blk_run_queue(bdev_get_queue(mdev->md_bdev));
> +
> +       blk_run_queue(q);
>         wait_for_completion(&event);
>
>         return test_bit(BIO_UPTODATE, &bio.bi_flags);
>

Hmmm, 

It seems that we are not expected to call blk_run_queue() of a 
pure "mapping" device, such as a dm target. 
... will try to understand that ...


-philipp
-- 
: Dipl-Ing Philipp Reisner                      Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH          Fax +43-1-8178292-82 :
: Schönbrunnerstr 244, 1120 Vienna, Austria    http://www.linbit.com :



More information about the drbd-user mailing list