3rd party geom module on 10-STABLE cause panics in biodone()

Alexander Motin mav at FreeBSD.org
Tue Feb 25 22:16:38 UTC 2014


On 26.02.2014 00:01, Lev Serebryakov wrote:
>   My geom_raid5, which works rock-stable on 9-STABLE, causes panics in
> biodone() on 10-STABLE. It causes panic at line 3567,
>
> 3561    if ((bp->bio_flags & BIO_TRANSIENT_MAPPING) != 0) {
> 3562      bp->bio_flags &= ~BIO_TRANSIENT_MAPPING;
> 3563      bp->bio_flags |= BIO_UNMAPPED;
> 3564      start = trunc_page((vm_offset_t)bp->bio_data);
> 3565      end = round_page((vm_offset_t)bp->bio_data + bp->bio_length);
> 3566      pmap_qremove(start, OFF_TO_IDX(end - start));
> 3567      vmem_free(transient_arena, start, end - start);
> 3568      atomic_add_int(&inflight_transient_maps, -1);
> 3569    }
>
>   And these crashes are very bad: 9 of 10 times system could not make
> crashdump or reboot and 8 out of 10 times it shuts down video output (!).
>
>   I was lucky to get one crashdump to find this line...
>
>   What could I do wrong in my module?

IIRC I had problem with that part of code during my GEOM direct dispatch 
work when some requests were unmapped twice. At that time I've added 
restoring the flags at lines 3562-3563, and it helped in my case. Make 
sure that you are not have some unexpected requests reuse, etc, that may 
cause incorrect combination of BIO flags and addresses.

-- 
Alexander Motin


More information about the freebsd-geom mailing list