[dm-devel] Re: [PATCH 12/17] bottom-layer barrier support

Mikulas Patocka mpatocka at redhat.com
Mon Apr 27 23:09:32 UTC 2009



On Mon, 27 Apr 2009, Alasdair G Kergon wrote:

> On Mon, Apr 27, 2009 at 10:48:37PM +0100, Alasdair G Kergon wrote:
> > On Mon, Apr 20, 2009 at 04:01:11AM -0400, Mikulas Patocka wrote:
> > > Flush supoprt for dm-delay target.
> > > @@ -281,6 +282,8 @@ static int delay_map(struct dm_target *t
> > >  		bio->bi_sector = dc->start_write +
> > >  				 (bio->bi_sector - ti->begin);
> 
> In fact, does bi_sector have a meaningful value within
> the context of a specific target any more when processing
> a barrier flush, or is it a bug if a target attempts to access it?
> (For example, it could be set to ti->begin or 0.)
> 
> I think the situation deserves defining in a comment.
> 
> (Maybe we will remove "- ti->begin" from all the mapping functions one day.
> Not mixed in with this patch set though.)

The code is correct as it is.

For example, if you have first 10 sectors mapped on linear target and next 
sectors mapped on delay target, you must subtract 10 from the value 
(-ti->begin) and add the start offset dc->start_write.

If you map the whole device as one target, this is meaningless. But if you 
map more targets into one table, this arithmetics is required.

The difference is the zero-barrier flush request --- it should have 
bi_sector always 0.

Mikulas

> Alasdair
> -- 
> agk at redhat.com
> 




More information about the dm-devel mailing list