[DRBD-user] Kernel BUG at fs/bio.c while using drbd 8.0.1

Philipp Reisner philipp.reisner at linbit.com
Sat Apr 14 09:15:49 CEST 2007

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


Am Mittwoch, 11. April 2007 05:01 schrieb Rafał Kupka:
> On Mon, Apr 02, 2007 at 06:43:07PM +0200, Philipp Reisner wrote:
> Hello,
>
> > The purpose of the drbd_merge_bvec() function is to make sure
> > that this can not happen.
> >
> > Find out it drbd_merge_bvec() is called at all, and what it
> > returned for the call that correlates to the offending bio.
>
> It looks like drbd_merge_bvec isn't called on this struct bio.
>
> With patch attached to this message I got logs like:
>
> BUG: at /usr/src/modules/drbd/drbd/drbd_req.c:1118 drbd_make_request_26()
>
> Call Trace:
>  [<ffffffff88363df4>] :drbd:drbd_make_request_26+0x2f2/0x39a
>  [<ffffffff8021c8f2>] generic_make_request+0x13d/0x150
>  [<ffffffff8810017f>] :dm_mod:clone_bio+0x48/0x79
>  [<ffffffff88100d0a>] :dm_mod:__split_bio+0x161/0x372
>  [<ffffffff8020a90d>] kmem_cache_alloc+0x56/0x61
>  [<ffffffff8022405a>] mempool_alloc+0x24/0xda
>  [<ffffffff881016c4>] :dm_mod:dm_request+0x101/0x110
>  [<ffffffff8021c8f2>] generic_make_request+0x13d/0x150
>  [<ffffffff8810017f>] :dm_mod:clone_bio+0x48/0x79
>  [<ffffffff88100d0a>] :dm_mod:__split_bio+0x161/0x372
>  [<ffffffff8025cb1a>] thread_return+0x5d/0x108
>  [<ffffffff881016c4>] :dm_mod:dm_request+0x101/0x110
>  [<ffffffff8021c8f2>] generic_make_request+0x13d/0x150
>  [<ffffffff802334b4>] submit_bio+0xb4/0xbb
>  [<ffffffff8036e27d>] dispatch_rw_block_io+0x4b4/0x51b
>  [<ffffffff803970ac>] sock_alloc_send_skb+0x77/0x1d2
>  [<ffffffff881028ba>] :dm_mod:dm_table_unplug_all+0x33/0x41
>  [<ffffffff80209786>] __d_lookup+0xb0/0x100
>  [<ffffffff881028ba>] :dm_mod:dm_table_unplug_all+0x33/0x41
>  [<ffffffff8036e51f>] blkif_schedule+0x23b/0x328
>  [<ffffffff8028e55e>] autoremove_wake_function+0x0/0x2e
>  [<ffffffff8036e2e4>] blkif_schedule+0x0/0x328
>  [<ffffffff8028e3c6>] keventd_create_kthread+0x0/0x65
>  [<ffffffff80232aad>] kthread+0xd1/0x100
>  [<ffffffff8025af48>] child_rip+0xa/0x12
>  [<ffffffff8028e3c6>] keventd_create_kthread+0x0/0x65
>  [<ffffffff802329dc>] kthread+0x0/0x100
>  [<ffffffff8025af3e>] child_rip+0x0/0x12
>
> drbd_make_request_26: bio:ffff88000b9e5740 bvec:ffff88000a71e380
> bio_size:4096 bio_offset:1342405632
>
> No corresponding printk from drbd_merge_bvec().
>
> What I can do now?
>

Hi Rafał,

Then it is Xen that builds a bio without using bio_add_page() [ because
bio_add_page() uses the merge_bvec() function of the block device... ]

This is a bug in Xen. It must get fixed there.

This missbehaviour of Xen will not only trigger issues in DRBD but also
in other parts of the block-io-subsystem. (E.g. software raid comes to mind
next).

Currently my time is very limited, I am more out travelling than beeing in 
my office...I do not have the time to communicate with Xen people right now.

Please communicate this issue to the Xen people, you might get support from 
Jens Axboe. Jens is the author of the bio code, and he does not like it if
people misuse his stuff ;)

-Phil



More information about the drbd-user mailing list