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>
