mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 05:44:31 +08:00
drbd: Now we need to handle the ed_uuid of an diskless, unconnected primary correctly
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
894c6a9461
commit
18a50fa213
@ -1297,8 +1297,10 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ns.pdsk < D_INCONSISTENT && get_ldev(mdev)) {
|
if (ns.pdsk < D_INCONSISTENT && get_ldev(mdev)) {
|
||||||
if (ns.peer == R_PRIMARY && mdev->ldev->md.uuid[UI_BITMAP] == 0)
|
if (ns.peer == R_PRIMARY && mdev->ldev->md.uuid[UI_BITMAP] == 0) {
|
||||||
drbd_uuid_new_current(mdev);
|
drbd_uuid_new_current(mdev);
|
||||||
|
drbd_send_uuids(mdev);
|
||||||
|
}
|
||||||
|
|
||||||
/* D_DISKLESS Peer becomes secondary */
|
/* D_DISKLESS Peer becomes secondary */
|
||||||
if (os.peer == R_PRIMARY && ns.peer == R_SECONDARY)
|
if (os.peer == R_PRIMARY && ns.peer == R_SECONDARY)
|
||||||
|
@ -3104,6 +3104,11 @@ static int receive_uuids(struct drbd_conf *mdev, struct p_header *h)
|
|||||||
drbd_md_sync(mdev);
|
drbd_md_sync(mdev);
|
||||||
}
|
}
|
||||||
put_ldev(mdev);
|
put_ldev(mdev);
|
||||||
|
} else if (mdev->state.disk < D_INCONSISTENT &&
|
||||||
|
mdev->state.role == R_PRIMARY) {
|
||||||
|
/* I am a diskless primary, the peer just created a new current UUID
|
||||||
|
for me. */
|
||||||
|
drbd_set_ed_uuid(mdev, p_uuid[UI_CURRENT]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Before we test for the disk state, we should wait until an eventually
|
/* Before we test for the disk state, we should wait until an eventually
|
||||||
|
Loading…
Reference in New Issue
Block a user