Add int (*iscsit_validate_params)() to
struct iscsit_transport, iscsi-target
uses this callback for validating
conn operational parameters.

Signed-off-by: Varun Prakash <va...@chelsio.com>
---
 drivers/target/iscsi/iscsi_target_login.c | 10 ++++++++++
 include/target/iscsi/iscsi_transport.h    |  1 +
 2 files changed, 11 insertions(+)

diff --git a/drivers/target/iscsi/iscsi_target_login.c 
b/drivers/target/iscsi/iscsi_target_login.c
index 8436d56..83574eea 100644
--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -1387,6 +1387,16 @@ static int __iscsi_target_login_thread(struct iscsi_np 
*np)
                        goto old_sess_out;
        }
 
+       if (conn->conn_transport->iscsit_validate_params) {
+               ret = conn->conn_transport->iscsit_validate_params(conn);
+               if (ret < 0) {
+                       if (zero_tsih)
+                               goto new_sess_out;
+                       else
+                               goto old_sess_out;
+               }
+       }
+
        ret = iscsi_target_start_negotiation(login, conn);
        if (ret < 0)
                goto new_sess_out;
diff --git a/include/target/iscsi/iscsi_transport.h 
b/include/target/iscsi/iscsi_transport.h
index 1f63d8c..dbef892 100644
--- a/include/target/iscsi/iscsi_transport.h
+++ b/include/target/iscsi/iscsi_transport.h
@@ -31,6 +31,7 @@ struct iscsit_transport {
                                      struct iscsi_datain *);
        void (*iscsit_release_cmd)(struct iscsi_conn *, struct iscsi_cmd *);
        void (*iscsit_get_rx_pdu)(struct iscsi_conn *);
+       int (*iscsit_validate_params)(struct iscsi_conn *);
        enum target_prot_op (*iscsit_get_sup_prot_ops)(struct iscsi_conn *);
 };
 
-- 
2.0.2

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to