[Drbd-dev] DRBD8: An attach after a disk fault on the sync target causes a deadlock in WFBitMapT

Montrose, Ernest Ernest.Montrose at stratus.com
Tue Jul 10 16:05:39 CEST 2007


Phil,
OK..Interesting..I'll have to fully understand the explanation later :)
Let me test the fix first. I'll let you know if anything bad happens.  

Thanks!

EM--

-----Original Message-----
From: Philipp Reisner [mailto:philipp.reisner at linbit.com] 
Sent: Tuesday, July 10, 2007 9:48 AM
To: drbd-dev at linbit.com
Cc: Montrose, Ernest
Subject: Re: [Drbd-dev] DRBD8: An attach after a disk fault on the sync
target causes a deadlock in WFBitMapT

On Monday 09 July 2007 17:25:08 Montrose, Ernest wrote:
> Hi all,
> We are seeing a problem where while syncing if the sync target
detaches
> then attempts to attach, both nodes end up in cs:WABitMapT state.
This
> happens if both nodes where in Secondary/Secondary state and the
dettach
> happened on the SyncTarget.
>

Hi Ernest,

Thanks for pointing this out.

The cause for this was that the UUIDs...

Node1:       C:0:H:H
Node2:       C:0:H:H

upon start of resync an "S" gets created.

sync target: S:0:C:H
sync source: C:S:H:H

but it should be

sync target: S:0:H:H
sync source: C:S:H:H

On the sync target side we got S left of C while on the sync 
source side we had C left of S. This was bad. The should not
appear in different order!

C should be left of S on sync source, and nowhere on the sync
target. (= even further left = in the future )

Ok, I guess the explanation is sufficient incomprehensible ;)


Index: drbd_receiver.c
===================================================================
--- drbd_receiver.c     (revision 2965)
+++ drbd_receiver.c     (revision 2966)
@@ -2474,7 +2474,9 @@
        if (drbd_recv(mdev, h->payload, h->length) != h->length)
                return FALSE;

-       drbd_uuid_set(mdev,Current,be64_to_cpu(p->uuid));
+       /* Here the _drbd_uuid_ functions are right, current should
+          _not_ be rotated into the history */
+       _drbd_uuid_set(mdev,Current,be64_to_cpu(p->uuid));
        _drbd_uuid_set(mdev,Bitmap,0UL);

        drbd_start_resync(mdev,SyncTarget);

-Phil
-- 
: Dipl-Ing Philipp Reisner                      Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH          Fax +43-1-8178292-82 :
: Vivenotgasse 48, 1120 Vienna, Austria        http://www.linbit.com :


More information about the drbd-dev mailing list