Blob Blame History Raw
From: Lee Duncan <lduncan@suse.com>
Date: Sun 29 May 2022 09:55:25 AM PDT
Subject: [PATCH] kABI: fix removal of iscsi_destroy_conn
Patch-mainline: Never, kABI fix
References: bsc#1198410

Patch scsi-libiscsi-Teardown-iscsi_cls_conn-gracefully.patch removed
iscsi_destroy_conn() since it was no longer needed, but this patch
puts it back, in case any external module expects it to be present,
for kABI compatability.
---
 drivers/scsi/scsi_transport_iscsi.c |   23 +++++++++++++++++++++++
 include/scsi/scsi_transport_iscsi.h |    4 ++++
 2 files changed, 27 insertions(+)

--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -2517,6 +2517,29 @@ void iscsi_remove_conn(struct iscsi_cls_
 }
 EXPORT_SYMBOL_GPL(iscsi_remove_conn);
 
+/**
+ * iscsi_destroy_conn - destroy iscsi class connection
+ * @conn: iscsi cls session
+ *
+ * This can be called from a LLD or iscsi_transport.
+ *
+ * NOTE: This is here for kABI compatability
+ */
+int iscsi_destroy_conn(struct iscsi_cls_conn *conn)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&connlock, flags);
+	list_del(&conn->conn_list);
+	spin_unlock_irqrestore(&connlock, flags);
+
+	transport_unregister_device(&conn->dev);
+	ISCSI_DBG_TRANS_CONN(conn, "Completing conn destruction\n");
+	device_unregister(&conn->dev);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(iscsi_destroy_conn);
+
 void iscsi_put_conn(struct iscsi_cls_conn *conn)
 {
 	put_device(&conn->dev);
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -454,6 +454,10 @@ extern int iscsi_add_conn(struct iscsi_c
 extern void iscsi_remove_conn(struct iscsi_cls_conn *conn);
 extern void iscsi_put_conn(struct iscsi_cls_conn *conn);
 extern void iscsi_get_conn(struct iscsi_cls_conn *conn);
+
+/* this is here for kABI compatability */
+extern int iscsi_destroy_conn(struct iscsi_cls_conn *conn);
+
 extern void iscsi_unblock_session(struct iscsi_cls_session *session);
 extern void iscsi_block_session(struct iscsi_cls_session *session);
 extern int iscsi_scan_finished(struct Scsi_Host *shost, unsigned long time);