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]"

Reply via email to