[Drbd-dev] syncsource -> sync completed ack lost

Petrakis, Peter Peter.Petrakis at stratus.com
Wed Jan 6 15:51:23 CET 2010


> 8.2 is obsolete.
> it has been superseeded by 8.3

I know we're behind, such is the life of a vendor branch :)
> if you can reproduce with 8.3,
> we will certainly look into this.

I can re-run the tests but in general we have a difficult time
reproducing these bugs. Do you know of a way I could "stage" the
state transitions so to make it more reproducable?
> but I think we fix a few things that would match your symptoms in 8.3.
> we are currently (well, tomorrow) at 8.3.7 rc2

That's promising.
> > Jan  5 14:36:18 node1 kernel: drbd5: helper command:
> > /usr/lib/spine/bin/avance_drbd_helper after-resync-target minor-5
> I'd be interessted in this /usr/lib/spine/bin/avance_drbd_helper.
> what does it do, compared with drbdadm?

Sure, we wrote our own drbd management daemon which is part of our
cluster manager. The DRBD resources are constructed as a consequence 
of VM provisioning, using drbdsetup. So we already have a config to 
reference, however to make use of the fencing handler we would also
have maintain the drbd.conf file, which after much consideration it was
determined as being too fragile for our environment: Should one part of
the config file become inconsistent then all resources are affected.

avance_drbd_helper will dispatch only the events we care to handle to
our other custom handlers which will communicate to our management
directly using XML-RPC. So I have access to not only what would
be found normally in the drbd.conf to make decisions, but the entire
of the cluster.

$cat avance_drbd_helper


$0 = 'avance_drbd_helper'

require 'base/extensions'
require 'syslog'

$syslog = Syslog.open($0, Syslog::LOG_NDELAY, Syslog::LOG_DAEMON)
$syslog.notice "invoking #{$0}"

usage = <<-EOF
        This is a pass-thru helper for drbd. We execute processes on
        behalf and return the exit status back to the khelper.
        avance_drbd_helper  <action> <arguments>

puts usage unless ARGV.length > 0

# see drbd_khelper for argument list passed to userspace
khelper  = ARGV[0] # 'outdate-peer'
resource = ARGV[1] # 'minor-5'

# the config file is no longer necessary, add all calls to
# khelpers here instead.
if khelper == 'outdate-peer' || khelper == 'fence-peer'
    %x{/usr/lib/spine/bin/drbd_outdate_peer drbd#{$1}}
    exit $?.exitstatus

    ARGV.each_with_index do |arg, idx|
        $syslog.notice "arg[#{idx}]='#{arg}'"

# safe default value for the rest of the handlers e.g.
exit 0
# vim: ts=4:sw=4:ai:expandtab

Should anyone else want to use this, just remove any references to
and "require 'base/extensions'". We override the default implementation


> --
> : Lars Ellenberg
> : LINBIT | Your Way to High Availability
> : DRBD/HA support and consulting http://www.linbit.com
> DRBD(r) and LINBIT(r) are registered trademarks of LINBIT, Austria.
> _______________________________________________
> drbd-dev mailing list
> drbd-dev at lists.linbit.com
> http://lists.linbit.com/mailman/listinfo/drbd-dev

More information about the drbd-dev mailing list