aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_transport_iscsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_transport_iscsi.c')
-rw-r--r--drivers/scsi/scsi_transport_iscsi.c39
1 files changed, 25 insertions, 14 deletions
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 5ec2fbea8937..341d4fb5c6f8 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -30,7 +30,7 @@
30#include <scsi/scsi_transport_iscsi.h> 30#include <scsi/scsi_transport_iscsi.h>
31#include <scsi/iscsi_if.h> 31#include <scsi/iscsi_if.h>
32 32
33#define ISCSI_SESSION_ATTRS 11 33#define ISCSI_SESSION_ATTRS 15
34#define ISCSI_CONN_ATTRS 11 34#define ISCSI_CONN_ATTRS 11
35#define ISCSI_HOST_ATTRS 2 35#define ISCSI_HOST_ATTRS 2
36#define ISCSI_TRANSPORT_VERSION "2.0-724" 36#define ISCSI_TRANSPORT_VERSION "2.0-724"
@@ -1196,30 +1196,37 @@ iscsi_conn_attr(address, ISCSI_PARAM_CONN_ADDRESS);
1196/* 1196/*
1197 * iSCSI session attrs 1197 * iSCSI session attrs
1198 */ 1198 */
1199#define iscsi_session_attr_show(param) \ 1199#define iscsi_session_attr_show(param, perm) \
1200static ssize_t \ 1200static ssize_t \
1201show_session_param_##param(struct class_device *cdev, char *buf) \ 1201show_session_param_##param(struct class_device *cdev, char *buf) \
1202{ \ 1202{ \
1203 struct iscsi_cls_session *session = iscsi_cdev_to_session(cdev); \ 1203 struct iscsi_cls_session *session = iscsi_cdev_to_session(cdev); \
1204 struct iscsi_transport *t = session->transport; \ 1204 struct iscsi_transport *t = session->transport; \
1205 \
1206 if (perm && !capable(CAP_SYS_ADMIN)) \
1207 return -EACCES; \
1205 return t->get_session_param(session, param, buf); \ 1208 return t->get_session_param(session, param, buf); \
1206} 1209}
1207 1210
1208#define iscsi_session_attr(field, param) \ 1211#define iscsi_session_attr(field, param, perm) \
1209 iscsi_session_attr_show(param) \ 1212 iscsi_session_attr_show(param, perm) \
1210static ISCSI_CLASS_ATTR(sess, field, S_IRUGO, show_session_param_##param, \ 1213static ISCSI_CLASS_ATTR(sess, field, S_IRUGO, show_session_param_##param, \
1211 NULL); 1214 NULL);
1212 1215
1213iscsi_session_attr(targetname, ISCSI_PARAM_TARGET_NAME); 1216iscsi_session_attr(targetname, ISCSI_PARAM_TARGET_NAME, 0);
1214iscsi_session_attr(initial_r2t, ISCSI_PARAM_INITIAL_R2T_EN); 1217iscsi_session_attr(initial_r2t, ISCSI_PARAM_INITIAL_R2T_EN, 0);
1215iscsi_session_attr(max_outstanding_r2t, ISCSI_PARAM_MAX_R2T); 1218iscsi_session_attr(max_outstanding_r2t, ISCSI_PARAM_MAX_R2T, 0);
1216iscsi_session_attr(immediate_data, ISCSI_PARAM_IMM_DATA_EN); 1219iscsi_session_attr(immediate_data, ISCSI_PARAM_IMM_DATA_EN, 0);
1217iscsi_session_attr(first_burst_len, ISCSI_PARAM_FIRST_BURST); 1220iscsi_session_attr(first_burst_len, ISCSI_PARAM_FIRST_BURST, 0);
1218iscsi_session_attr(max_burst_len, ISCSI_PARAM_MAX_BURST); 1221iscsi_session_attr(max_burst_len, ISCSI_PARAM_MAX_BURST, 0);
1219iscsi_session_attr(data_pdu_in_order, ISCSI_PARAM_PDU_INORDER_EN); 1222iscsi_session_attr(data_pdu_in_order, ISCSI_PARAM_PDU_INORDER_EN, 0);
1220iscsi_session_attr(data_seq_in_order, ISCSI_PARAM_DATASEQ_INORDER_EN); 1223iscsi_session_attr(data_seq_in_order, ISCSI_PARAM_DATASEQ_INORDER_EN, 0);
1221iscsi_session_attr(erl, ISCSI_PARAM_ERL); 1224iscsi_session_attr(erl, ISCSI_PARAM_ERL, 0);
1222iscsi_session_attr(tpgt, ISCSI_PARAM_TPGT); 1225iscsi_session_attr(tpgt, ISCSI_PARAM_TPGT, 0);
1226iscsi_session_attr(username, ISCSI_PARAM_USERNAME, 1);
1227iscsi_session_attr(username_in, ISCSI_PARAM_USERNAME_IN, 1);
1228iscsi_session_attr(password, ISCSI_PARAM_PASSWORD, 1);
1229iscsi_session_attr(password_in, ISCSI_PARAM_PASSWORD_IN, 1);
1223 1230
1224#define iscsi_priv_session_attr_show(field, format) \ 1231#define iscsi_priv_session_attr_show(field, format) \
1225static ssize_t \ 1232static ssize_t \
@@ -1433,6 +1440,10 @@ iscsi_register_transport(struct iscsi_transport *tt)
1433 SETUP_SESSION_RD_ATTR(erl, ISCSI_ERL); 1440 SETUP_SESSION_RD_ATTR(erl, ISCSI_ERL);
1434 SETUP_SESSION_RD_ATTR(targetname, ISCSI_TARGET_NAME); 1441 SETUP_SESSION_RD_ATTR(targetname, ISCSI_TARGET_NAME);
1435 SETUP_SESSION_RD_ATTR(tpgt, ISCSI_TPGT); 1442 SETUP_SESSION_RD_ATTR(tpgt, ISCSI_TPGT);
1443 SETUP_SESSION_RD_ATTR(password, ISCSI_USERNAME);
1444 SETUP_SESSION_RD_ATTR(password_in, ISCSI_USERNAME_IN);
1445 SETUP_SESSION_RD_ATTR(username, ISCSI_PASSWORD);
1446 SETUP_SESSION_RD_ATTR(username_in, ISCSI_PASSWORD_IN);
1436 SETUP_PRIV_SESSION_RD_ATTR(recovery_tmo); 1447 SETUP_PRIV_SESSION_RD_ATTR(recovery_tmo);
1437 1448
1438 BUG_ON(count > ISCSI_SESSION_ATTRS); 1449 BUG_ON(count > ISCSI_SESSION_ATTRS);