FreeBSD/sys/geom/linux_lvm/g_linux_lvm.c
/*
 * GEOM .done handler
 * Can't use standard handler because one requested IO may
 * fork into additional data IOs
 */
GEOM .done handler
Can't use standard handler because one requested IO may
fork into additional data IOs
GEOM . done handler Can ' t use standard handler because one requested IO may fork into additional data IOs
static void
g_llvm_done(struct bio *b)
{
	struct bio *parent_b;
	parent_b = b->bio_parent;
	if (b->bio_error != 0) {
		G_LLVM_DEBUG(0, "Error %d for offset=%ju, length=%ju on %s",
		    b->bio_error, b->bio_offset, b->bio_length,
		    b->bio_to->name);
		if (parent_b->bio_error == 0)
			parent_b->bio_error = b->bio_error;
	}
	parent_b->bio_inbed++;
	parent_b->bio_completed += b->bio_completed;
	if (parent_b->bio_children == parent_b->bio_inbed) {
		parent_b->bio_completed = parent_b->bio_length;
		g_io_deliver(parent_b, parent_b->bio_error);
	}
	g_destroy_bio(b);
}
static void g_llvm_done ( struct bio * b ) { struct bio * parent_b ; parent_b = b -> bio_parent ; if ( b -> bio_error != 0 ) { G_LLVM_DEBUG ( 0 , " " , b -> bio_error , b -> bio_offset , b -> bio_length , b -> bio_to -> name ) ; if ( parent_b -> bio_error == 0 ) parent_b -> bio_error = b -> bio_error ; } parent_b -> bio_inbed ++ ; parent_b -> bio_completed += b -> bio_completed ; if ( parent_b -> bio_children == parent_b -> bio_inbed ) { parent_b -> bio_completed = parent_b -> bio_length ; g_io_deliver ( parent_b , parent_b -> bio_error ) ; } g_destroy_bio ( b ) ; }
GEOM .done handler
 Can't use standard handler because one requested IO may
 fork into additional data IOs
GEOM . done handler Can ' t use standard handler because one requested IO may fork into additional data IOs