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

Commit 0b2dafcd authored by Philipp Reisner's avatar Philipp Reisner Committed by Jens Axboe
Browse files

drbd: drop now useless duplicate state request from invalidate



Patch best viewed with git diff --ignore-space-change.

Now that we attempt the fallback to local bitmap operation
only when disconnected, we can safely drop the extra "silent"
state request from both invalidate and invalidate-remote.

Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 5c4f13d9
Loading
Loading
Loading
Loading
+28 −34
Original line number Diff line number Diff line
@@ -2446,16 +2446,10 @@ int drbd_adm_invalidate(struct sk_buff *skb, struct genl_info *info)
	wait_event(mdev->misc_wait, !test_bit(BITMAP_IO, &mdev->flags));
	drbd_flush_workqueue(mdev);

	retcode = _drbd_request_state(mdev, NS(conn, C_STARTING_SYNC_T), CS_ORDERED);

	/* If that did not work, try again,
	 * but log failures this time (implicit CS_VERBOSE).
	 *
	 * If we happen to be C_STANDALONE R_SECONDARY,
	 * just change to D_INCONSISTENT, and set all bits in the bitmap.
	 * Otherwise, we just fail, to avoid races with the resync handshake.
	/* If we happen to be C_STANDALONE R_SECONDARY, just change to
	 * D_INCONSISTENT, and set all bits in the bitmap.  Otherwise,
	 * try to start a resync handshake as sync target for full sync.
	 */
	if (retcode < SS_SUCCESS) {
	if (mdev->state.conn == C_STANDALONE && mdev->state.role == R_SECONDARY) {
		retcode = drbd_request_state(mdev, NS(disk, D_INCONSISTENT));
		if (retcode >= SS_SUCCESS) {
@@ -2465,7 +2459,6 @@ int drbd_adm_invalidate(struct sk_buff *skb, struct genl_info *info)
		}
	} else
		retcode = drbd_request_state(mdev, NS(conn, C_STARTING_SYNC_T));
	}
	drbd_resume_io(mdev);

out:
@@ -2519,8 +2512,10 @@ int drbd_adm_invalidate_peer(struct sk_buff *skb, struct genl_info *info)
	wait_event(mdev->misc_wait, !test_bit(BITMAP_IO, &mdev->flags));
	drbd_flush_workqueue(mdev);

	retcode = _drbd_request_state(mdev, NS(conn, C_STARTING_SYNC_S), CS_ORDERED);
	if (retcode < SS_SUCCESS) {
	/* If we happen to be C_STANDALONE R_PRIMARY, just set all bits
	 * in the bitmap.  Otherwise, try to start a resync handshake
	 * as sync source for full sync.
	 */
	if (mdev->state.conn == C_STANDALONE && mdev->state.role == R_PRIMARY) {
		/* The peer will get a resync upon connect anyways. Just make that
		   into a full resync. */
@@ -2533,7 +2528,6 @@ int drbd_adm_invalidate_peer(struct sk_buff *skb, struct genl_info *info)
		}
	} else
		retcode = drbd_request_state(mdev, NS(conn, C_STARTING_SYNC_S));
	}
	drbd_resume_io(mdev);

out: