[Drbd-dev] DRBD8: Split-brain false positive on Primary/primarypotential patch

Graham, Simon Simon.Graham at stratus.com
Fri Nov 17 15:28:50 CET 2006


> I agree here.
> But see below why I still think Philipp is "right", too :)
> 
>   But I think the provided patch (doing it only in al_begin_io) is
> wrong.
>   actually it needs to be done as soon as the bitmap is touched,
>   so it needs be done in "set_out_of_sync", which may be called in the
>   cleanup code after connection loss, too, and will be, typically, on
> the
>   actually active node.
> 

Yes, you are, of course, quite right -- any modification should result
in the UUID update and not just updates by the file system above DRBD.

> one alternative would be to update the uuids where it is done now,
>   but only if we have been opened RW (we have that information anyways
>   somewhere), and do it again (unless already done) as soon as we are
>   opened rw. that would be correct, I think, and easy.

I agree - that's actually a much better solution that is more in line
with Phil's desire to protect against mounting a 1-node fs on both
nodes; this decouples primaryness from the reality of which nodes are
_actually_ using the volume.

We can rework the patch to do it this way if this is acceptable.

> 
> Why we could leave the code as is, anyways:
> 
>   we can leave it like it is right now, because the "after split brain
>   recovery" strategy "discard least changes" would do the same thing:
>   your assumtion was that the "inactive" node does no changes.
>   zero is less than anything else...
> 

Yes - if this is actually possible in a 2p case then it would work - I
see that the current behavior of this setting is based on bit-0 of the
current UUID which is set based on primaryness; since in a 2p case both
will have the bit set I don't think this works. I'm not sure how you
would track updates to be able to calculate 'least changes'...

Simon


More information about the drbd-dev mailing list