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 :