[dm-devel] [PATCH UPDATED 4/5] dm: implement REQ_FLUSH/FUA support for request-based dm

Mikulas Patocka mpatocka at redhat.com
Wed Sep 1 15:35:26 UTC 2010



On Wed, 1 Sep 2010, Mike Snitzer wrote:

> On Wed, Sep 01 2010 at  8:12am -0400,
> Mikulas Patocka <mpatocka at redhat.com> wrote:
> 
> > On Wed, 1 Sep 2010, Tejun Heo wrote:
> > 
> > > Hello,
> > > 
> > > On 09/01/2010 12:31 PM, Mikulas Patocka wrote:
> > > > My recommended approach to this (on non-request-based dm) is to simply let 
> > > > the current barrier infrastructure be as it is --- you don't need to 
> > > > change it now, you can simply map FUA write to barrier write and FLUSH to 
> > > > zero-data barrier --- and it won't cause any data corruption. It will just 
> > > > force unneeded I/O queue draining.
> > > > 
> > > > Once FLUSH+FUA interface is finalized and committed upstream, we can 
> > > > remove that I/O queue draining from dm to improve performance.
> > > 
> > > Unfortunately, it doesn't work that way.  The current dm
> > > implementation depends on block layer holding the queue while a
> > > barrier sequence is in progress which the new implementation doesn't
> > > do anymore (the whole point of this conversion BTW).
> > 
> > That may be true for request-based dm (I don't know).
> > 
> > But bio-based dm doesn't depend on it, I wrote it and I didn't rely on 
> > that.
> 
> Mikulas,
> 
> Current bio-based barrier support also defers IO if a flush is in
> progress.  See _dm_request:

I know. But it doesn't hurt with flush/fua requests. It just lowers 
performance (it defers i/os when it doesn't have to) but doesn't damage 
data.

So I think that we can let it be this way until flush/fua patch is 
finalized.

Mikulas

> 	/*
> 	 * If we're suspended or the thread is processing barriers
> 	 * we have to queue this io for later.
> 	 */
> 
> Tejun also shared the following:
> 
> "bio based implementation also uses dm_wait_for_completion() and
> DMF_QUEUE_IO_TO_THREAD to plug all the follow up bio's while flush is in
> progress, which sucks for throughput but successfully avoids starvation."
> 
> here:
> https://www.redhat.com/archives/dm-devel/2010-August/msg00174.html
> 




More information about the dm-devel mailing list