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

Commit 2561b9c1 authored by Philipp Reisner's avatar Philipp Reisner
Browse files

drbd: --force option for disconnect



As the network connection can be lost at any time, a --force option
for disconnect is just a matter of completeness.

Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
parent 42ff269d
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1531,6 +1531,21 @@ static int drbd_nl_disconnect(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nl
			      struct drbd_nl_cfg_reply *reply)
{
	int retcode;
	struct disconnect dc;

	memset(&dc, 0, sizeof(struct disconnect));
	if (!disconnect_from_tags(mdev, nlp->tag_list, &dc)) {
		retcode = ERR_MANDATORY_TAG;
		goto fail;
	}

	if (dc.force) {
		spin_lock_irq(&mdev->req_lock);
		if (mdev->state.conn >= C_WF_CONNECTION)
			_drbd_set_state(_NS(mdev, conn, C_DISCONNECTING), CS_HARD, NULL);
		spin_unlock_irq(&mdev->req_lock);
		goto done;
	}

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

+3 −1
Original line number Diff line number Diff line
@@ -69,7 +69,9 @@ NL_PACKET(net_conf, 5,
	NL_BIT(		70,	T_MANDATORY,	dry_run)
)

NL_PACKET(disconnect, 6, )
NL_PACKET(disconnect, 6,
	NL_BIT(		84,	T_MAY_IGNORE,	force)
)

NL_PACKET(resize, 7,
	NL_INT64(		29,	T_MAY_IGNORE,	resize_size)