mirror of https://gitee.com/openkylin/linux.git
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: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
506afb6248
commit
2f2abeae3c
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue