Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f2abeae authored by Lars Ellenberg's avatar Lars Ellenberg Committed by Philipp Reisner
Browse files

drbd: clear CRASHED_PRIMARY only after successful resync



If we lost a disk during the first resync after primary crash,
we could have prematurely cleared the CRASHED_PRIMARY flag.
Testing on C_CONNECTED is not what we meant there,
but testing for both peers to become D_UP_TO_DATE.

Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
parent 506afb62
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -1238,7 +1238,8 @@ static void after_state_ch(struct drbd_device *device, union drbd_state os,
	sib.os = os;
	sib.os = os;
	sib.ns = ns;
	sib.ns = ns;


	if (os.conn != C_CONNECTED && ns.conn == C_CONNECTED) {
	if ((os.disk != D_UP_TO_DATE || os.pdsk != D_UP_TO_DATE)
	&&  (ns.disk == D_UP_TO_DATE && ns.pdsk == D_UP_TO_DATE)) {
		clear_bit(CRASHED_PRIMARY, &device->flags);
		clear_bit(CRASHED_PRIMARY, &device->flags);
		if (device->p_uuid)
		if (device->p_uuid)
			device->p_uuid[UI_FLAGS] &= ~((u64)2);
			device->p_uuid[UI_FLAGS] &= ~((u64)2);