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

Commit 21423fa7 authored by Philipp Reisner's avatar Philipp Reisner
Browse files

drbd: Fixed state transitions after async outdate-peer-handler returned

parent fa7d9396
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -272,9 +272,22 @@ static int _try_outdate_peer_async(void *data)
{
	struct drbd_conf *mdev = (struct drbd_conf *)data;
	enum drbd_disk_state nps;
	union drbd_state ns;

	nps = drbd_try_outdate_peer(mdev);

	/* Not using
	   drbd_request_state(mdev, NS(pdsk, nps));
	   here, because we might were able to re-establish the connection in the
	   meantime.
	*/
	spin_lock_irq(&mdev->req_lock);
	ns = mdev->state;
	if (ns.conn < C_WF_REPORT_PARAMS) {
		ns.pdsk = nps;
		_drbd_set_state(mdev, ns, CS_VERBOSE, NULL);
	}
	spin_unlock_irq(&mdev->req_lock);

	return 0;
}