[dm-devel] Re: [PATCH 7/17] bottom-layer barrier support (fwd)

Alasdair G Kergon agk at redhat.com
Mon Apr 27 18:11:53 UTC 2009


On Mon, Apr 20, 2009 at 03:57:43AM -0400, Mikulas Patocka wrote:
> +static int __clone_and_map_empty_barrier(struct clone_info *ci)
> +{
> +	unsigned i, j, n;
> +	n = dm_table_get_num_targets(ci->map);
> +	for (i = 0; i < n; i++) {
> +		struct bio *clone;
> +		struct dm_target *ti = dm_table_get_target(ci->map, i);
> +		for (j = 0; j < ti->num_flush_requests; j++) {
> +			struct dm_target_io *tio = alloc_tio(ci->md);
> +			tio->io = ci->io;
> +			tio->ti = ti;
> +			memset(&tio->info, 0, sizeof(tio->info));
> +			tio->info.flush_request = j;
> +
> +			clone = bio_alloc_bioset(GFP_NOIO, 0, ci->md->bs);
> +			__bio_clone(clone, ci->bio);
> +			clone->bi_destructor = dm_bio_destructor;
> +
> +			__map_bio(ti, clone, tio);

I'm editing this one a bit, splitting that middle section out into a separate
function to improve readability.  (The compiler can optimise it back if it wants.)

Alasdair
-- 
agk at redhat.com




More information about the dm-devel mailing list