[Drbd-dev] DRBD Bug Report

Lars Ellenberg lars.ellenberg at linbit.com
Mon Oct 31 11:58:52 CET 2016


On Tue, Oct 25, 2016 at 01:23:42AM +0000, Guo, Lei wrote:
> Version:9.0.5/9.0.4
> File:drbd_state.c
> 
> Two nodes are setup, Node 1 is primary, node 2 is secondary.
> On node 2 , command “drbdadm down r0” returns error.
> 
> [error] Failed to disconnected or detach the r0.
>                                                  cmd_result=[11], cmd_output=[r0: State change failed: (-10) State change was refused by peer node
>                                                  additional info from kernel:failed to disconnect
> 
> 
> The possible bug is as follows.
> static enum outdate_what outdate_on_disconnect(struct drbd_connection *connection)
> {
>         struct drbd_resource *resource = connection->resource;
> 
>         if (connection->fencing_policy >= FP_RESOURCE &&
>             resource->role[NOW] != connection->peer_role[NOW]) {
>                 if (resource->role[NOW] == R_PRIMARY)
>                         return OUTDATE_PEER_DISKS;
>                 if (connection->peer_role[NOW] != R_PRIMARY)           <--------- should be “if (connection->peer_role[NOW] == R_PRIMARY)”

Yes.
And I thought I fixed that some weeks ago.
But apparently I did not push a test case,
and it got lost during the last merge/release cycle.
Pushed now.

Note though that this is by far not the only thing
that is broken with enabled fencing-policies on DRBD 9.

I was operating on the assumption that there had been only a few missing
missing parts regarding pacemaker (and other) integration.  Turned out I
was wrong, and DRBD 9 + fencing policies is pretty much completely
broken in the module itself still.  We are working on it.

-- 
: Lars Ellenberg
: LINBIT | Keeping the Digital World Running
: DRBD -- Heartbeat -- Corosync -- Pacemaker
: R&D, Integration, Ops, Consulting, Support

DRBD® and LINBIT® are registered trademarks of LINBIT


More information about the drbd-dev mailing list