[Drbd-dev] DRBD8: Split-brain false positive on
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
> 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
> 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'...
More information about the drbd-dev