[dm-devel] Barriers still not passing on simple dm devices...

Bodo Eggert 7eggert at gmx.de
Thu Mar 26 15:26:53 UTC 2009


Chris Mason <chris.mason at oracle.com> wrote:
> On Wed, 2009-03-25 at 18:39 -0400, Mikulas Patocka wrote:

>> > The error handling is complex, no doubt
>> > about that. But the trial barrier test is pretty trivial and even could
>> > be easily abstracted out. If a later barrier write fails, then that's
>> > really no different than if a normal write fails. Error handling is not
>> > easy in that case.
>> 
>> I had a discussion with Andi about it some times ago. The conclusion was
>> that all the current filesystems handle barriers failing in the middle of
>> the operation without functionality loss, but it makes barriers useless
>> for any performance-sensitive tasks (commits that wouldn't block
>> concurrent activity). Non-blocking commits could only be implemented if
>> barriers don't fail.
>> 
> 
> If a barrier fails at runtime, the filesystems do fall back to not doing
> barriers without real problems.

That's because there are no real problems in not honoring barriers - unless
your system crashes.

> But, that's because they don't actually 
> rely on the barriers to decide if an async commit is a good idea.

As long as they cannot rely on barriers - how should they?

[...]
> In general, async commits happen with threads and they aren't related to
> barriers.

If my filesystem said "First update b, then let a point to b", where the H
is the thread?

> Barriers don't really give us error handling,

Each request should give you error handling, but you are right: The whole
queue after the barrier must be aborted, too. (Or better: The part depending
on the barrier.)

> and they are at  
> the very end of a long chain of technical problems around commits that
> don't block concurrent activity.

You lost me here, but I guess the end will be a major rewrite.




More information about the dm-devel mailing list