Commit 3328333b authored by Mike Christie's avatar Mike Christie Committed by Martin K. Petersen
Browse files

scsi: iscsi: Allow iscsi_if_stop_conn() to be called from kernel

iscsi_if_stop_conn() is only called from the userspace interface but in a
subsequent commit we will want to call it from the kernel interface to
allow drivers like qedi to remove sessions from inside the kernel during
shutdown. This removes the iscsi_uevent code from iscsi_if_stop_conn() so we
can call it in a new helper.

Link: https://lore.kernel.org/r/20220616222738.5722-3-michael.christie@oracle.com


Tested-by: default avatarNilesh Javali <njavali@marvell.com>
Reviewed-by: default avatarNilesh Javali <njavali@marvell.com>
Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent c577ab7b
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -2257,16 +2257,8 @@ static void iscsi_if_disconnect_bound_ep(struct iscsi_cls_conn *conn,
	}
}

static int iscsi_if_stop_conn(struct iscsi_transport *transport,
			      struct iscsi_uevent *ev)
static int iscsi_if_stop_conn(struct iscsi_cls_conn *conn, int flag)
{
	int flag = ev->u.stop_conn.flag;
	struct iscsi_cls_conn *conn;

	conn = iscsi_conn_lookup(ev->u.stop_conn.sid, ev->u.stop_conn.cid);
	if (!conn)
		return -EINVAL;

	ISCSI_DBG_TRANS_CONN(conn, "iscsi if conn stop.\n");
	/*
	 * If this is a termination we have to call stop_conn with that flag
@@ -3713,7 +3705,12 @@ static int iscsi_if_transport_conn(struct iscsi_transport *transport,
	case ISCSI_UEVENT_DESTROY_CONN:
		return iscsi_if_destroy_conn(transport, ev);
	case ISCSI_UEVENT_STOP_CONN:
		return iscsi_if_stop_conn(transport, ev);
		conn = iscsi_conn_lookup(ev->u.stop_conn.sid,
					 ev->u.stop_conn.cid);
		if (!conn)
			return -EINVAL;

		return iscsi_if_stop_conn(conn, ev->u.stop_conn.flag);
	}

	/*