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 _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-geom To unsubscribe, send any mail to "[email protected]"
