Date: Wed, 26 Feb 2014 00:16:32 +0200 From: Alexander Motin <mav@FreeBSD.org> To: lev@FreeBSD.org, freebsd-geom@freebsd.org Subject: Re: 3rd party geom module on 10-STABLE cause panics in biodone() Message-ID: <530D1640.3050104@FreeBSD.org> In-Reply-To: <585146922.20140226020105@serebryakov.spb.ru> References: <585146922.20140226020105@serebryakov.spb.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?530D1640.3050104>