23 #include <linux/export.h>
35 #ifndef INITIAL_JIFFIES
36 #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
40 #define ISCSI_INST_NUM_NODES 1
41 #define ISCSI_INST_DESCR "Storage Engine Target"
42 #define ISCSI_INST_LAST_FAILURE_TYPE 0
43 #define ISCSI_DISCONTINUITY_TIME 0
45 #define ISCSI_NODE_INDEX 1
47 #define ISPRINT(a) ((a >= ' ') && (a <= '~'))
56 #define ISCSI_STAT_INSTANCE_ATTR(_name, _mode) \
57 static struct iscsi_stat_instance_attribute \
58 iscsi_stat_instance_##_name = \
59 __CONFIGFS_EATTR(_name, _mode, \
60 iscsi_stat_instance_show_attr_##_name, \
61 iscsi_stat_instance_store_attr_##_name);
63 #define ISCSI_STAT_INSTANCE_ATTR_RO(_name) \
64 static struct iscsi_stat_instance_attribute \
65 iscsi_stat_instance_##_name = \
66 __CONFIGFS_EATTR_RO(_name, \
67 iscsi_stat_instance_show_attr_##_name);
69 static ssize_t iscsi_stat_instance_show_attr_inst(
79 static ssize_t iscsi_stat_instance_show_attr_min_ver(
86 static ssize_t iscsi_stat_instance_show_attr_max_ver(
93 static ssize_t iscsi_stat_instance_show_attr_portals(
103 static ssize_t iscsi_stat_instance_show_attr_nodes(
110 static ssize_t iscsi_stat_instance_show_attr_sessions(
120 static ssize_t iscsi_stat_instance_show_attr_fail_sess(
128 spin_lock_bh(&sess_err->
lock);
132 spin_unlock_bh(&sess_err->
lock);
138 static ssize_t iscsi_stat_instance_show_attr_fail_type(
150 static ssize_t iscsi_stat_instance_show_attr_fail_rem_name(
163 static ssize_t iscsi_stat_instance_show_attr_disc_time(
170 static ssize_t iscsi_stat_instance_show_attr_description(
177 static ssize_t iscsi_stat_instance_show_attr_vendor(
184 static ssize_t iscsi_stat_instance_show_attr_version(
192 iscsi_instance_group);
195 &iscsi_stat_instance_inst.attr,
196 &iscsi_stat_instance_min_ver.attr,
197 &iscsi_stat_instance_max_ver.attr,
198 &iscsi_stat_instance_portals.attr,
199 &iscsi_stat_instance_nodes.attr,
200 &iscsi_stat_instance_sessions.attr,
201 &iscsi_stat_instance_fail_sess.attr,
202 &iscsi_stat_instance_fail_type.attr,
203 &iscsi_stat_instance_fail_rem_name.attr,
204 &iscsi_stat_instance_disc_time.attr,
205 &iscsi_stat_instance_description.attr,
206 &iscsi_stat_instance_vendor.attr,
207 &iscsi_stat_instance_version.attr,
212 .show_attribute = iscsi_stat_instance_attr_show,
213 .store_attribute = iscsi_stat_instance_attr_store,
217 .ct_item_ops = &iscsi_stat_instance_item_ops,
218 .ct_attrs = iscsi_stat_instance_attrs,
226 #define ISCSI_STAT_SESS_ERR_ATTR(_name, _mode) \
227 static struct iscsi_stat_sess_err_attribute \
228 iscsi_stat_sess_err_##_name = \
229 __CONFIGFS_EATTR(_name, _mode, \
230 iscsi_stat_sess_err_show_attr_##_name, \
231 iscsi_stat_sess_err_store_attr_##_name);
233 #define ISCSI_STAT_SESS_ERR_ATTR_RO(_name) \
234 static struct iscsi_stat_sess_err_attribute \
235 iscsi_stat_sess_err_##_name = \
236 __CONFIGFS_EATTR_RO(_name, \
237 iscsi_stat_sess_err_show_attr_##_name);
239 static ssize_t iscsi_stat_sess_err_show_attr_inst(
249 static ssize_t iscsi_stat_sess_err_show_attr_digest_errors(
260 static ssize_t iscsi_stat_sess_err_show_attr_cxn_errors(
271 static ssize_t iscsi_stat_sess_err_show_attr_format_errors(
283 iscsi_sess_err_group);
286 &iscsi_stat_sess_err_inst.attr,
287 &iscsi_stat_sess_err_digest_errors.attr,
288 &iscsi_stat_sess_err_cxn_errors.attr,
289 &iscsi_stat_sess_err_format_errors.attr,
294 .show_attribute = iscsi_stat_sess_err_attr_show,
295 .store_attribute = iscsi_stat_sess_err_attr_store,
299 .ct_item_ops = &iscsi_stat_sess_err_item_ops,
300 .ct_attrs = iscsi_stat_sess_err_attrs,
308 #define ISCSI_STAT_TGT_ATTR(_name, _mode) \
309 static struct iscsi_stat_tgt_attr_attribute \
310 iscsi_stat_tgt_attr_##_name = \
311 __CONFIGFS_EATTR(_name, _mode, \
312 iscsi_stat_tgt-attr_show_attr_##_name, \
313 iscsi_stat_tgt_attr_store_attr_##_name);
315 #define ISCSI_STAT_TGT_ATTR_RO(_name) \
316 static struct iscsi_stat_tgt_attr_attribute \
317 iscsi_stat_tgt_attr_##_name = \
318 __CONFIGFS_EATTR_RO(_name, \
319 iscsi_stat_tgt_attr_show_attr_##_name);
321 static ssize_t iscsi_stat_tgt_attr_show_attr_inst(
331 static ssize_t iscsi_stat_tgt_attr_show_attr_indx(
338 static ssize_t iscsi_stat_tgt_attr_show_attr_login_fails(
346 spin_lock(&lstat->
lock);
350 spin_unlock(&lstat->
lock);
356 static ssize_t iscsi_stat_tgt_attr_show_attr_last_fail_time(
364 spin_lock(&lstat->
lock);
368 spin_unlock(&lstat->
lock);
374 static ssize_t iscsi_stat_tgt_attr_show_attr_last_fail_type(
382 spin_lock(&lstat->
lock);
384 spin_unlock(&lstat->
lock);
390 static ssize_t iscsi_stat_tgt_attr_show_attr_fail_intr_name(
396 unsigned char buf[224];
398 spin_lock(&lstat->
lock);
401 spin_unlock(&lstat->
lock);
407 static ssize_t iscsi_stat_tgt_attr_show_attr_fail_intr_addr_type(
413 unsigned char buf[8];
415 spin_lock(&lstat->
lock);
418 spin_unlock(&lstat->
lock);
424 static ssize_t iscsi_stat_tgt_attr_show_attr_fail_intr_addr(
430 unsigned char buf[32];
432 spin_lock(&lstat->
lock);
437 spin_unlock(&lstat->
lock);
444 iscsi_tgt_attr_group);
447 &iscsi_stat_tgt_attr_inst.attr,
448 &iscsi_stat_tgt_attr_indx.attr,
449 &iscsi_stat_tgt_attr_login_fails.attr,
450 &iscsi_stat_tgt_attr_last_fail_time.attr,
451 &iscsi_stat_tgt_attr_last_fail_type.attr,
452 &iscsi_stat_tgt_attr_fail_intr_name.attr,
453 &iscsi_stat_tgt_attr_fail_intr_addr_type.attr,
454 &iscsi_stat_tgt_attr_fail_intr_addr.attr,
459 .show_attribute = iscsi_stat_tgt_attr_attr_show,
460 .store_attribute = iscsi_stat_tgt_attr_attr_store,
464 .ct_item_ops = &iscsi_stat_tgt_attr_item_ops,
465 .ct_attrs = iscsi_stat_tgt_attr_attrs,
473 #define ISCSI_STAT_LOGIN(_name, _mode) \
474 static struct iscsi_stat_login_attribute \
475 iscsi_stat_login_##_name = \
476 __CONFIGFS_EATTR(_name, _mode, \
477 iscsi_stat_login_show_attr_##_name, \
478 iscsi_stat_login_store_attr_##_name);
480 #define ISCSI_STAT_LOGIN_RO(_name) \
481 static struct iscsi_stat_login_attribute \
482 iscsi_stat_login_##_name = \
483 __CONFIGFS_EATTR_RO(_name, \
484 iscsi_stat_login_show_attr_##_name);
486 static ssize_t iscsi_stat_login_show_attr_inst(
496 static ssize_t iscsi_stat_login_show_attr_indx(
503 static ssize_t iscsi_stat_login_show_attr_accepts(
511 spin_lock(&lstat->
lock);
513 spin_unlock(&lstat->
lock);
519 static ssize_t iscsi_stat_login_show_attr_other_fails(
527 spin_lock(&lstat->
lock);
529 spin_unlock(&lstat->
lock);
535 static ssize_t iscsi_stat_login_show_attr_redirects(
543 spin_lock(&lstat->
lock);
545 spin_unlock(&lstat->
lock);
551 static ssize_t iscsi_stat_login_show_attr_authorize_fails(
559 spin_lock(&lstat->
lock);
561 spin_unlock(&lstat->
lock);
567 static ssize_t iscsi_stat_login_show_attr_authenticate_fails(
575 spin_lock(&lstat->
lock);
577 spin_unlock(&lstat->
lock);
583 static ssize_t iscsi_stat_login_show_attr_negotiate_fails(
591 spin_lock(&lstat->
lock);
593 spin_unlock(&lstat->
lock);
600 iscsi_login_stats_group);
603 &iscsi_stat_login_inst.attr,
604 &iscsi_stat_login_indx.attr,
605 &iscsi_stat_login_accepts.attr,
606 &iscsi_stat_login_other_fails.attr,
607 &iscsi_stat_login_redirects.attr,
608 &iscsi_stat_login_authorize_fails.attr,
609 &iscsi_stat_login_authenticate_fails.attr,
610 &iscsi_stat_login_negotiate_fails.attr,
615 .show_attribute = iscsi_stat_login_attr_show,
616 .store_attribute = iscsi_stat_login_attr_store,
620 .ct_item_ops = &iscsi_stat_login_stats_item_ops,
621 .ct_attrs = iscsi_stat_login_stats_attrs,
630 #define ISCSI_STAT_LOGOUT(_name, _mode) \
631 static struct iscsi_stat_logout_attribute \
632 iscsi_stat_logout_##_name = \
633 __CONFIGFS_EATTR(_name, _mode, \
634 iscsi_stat_logout_show_attr_##_name, \
635 iscsi_stat_logout_store_attr_##_name);
637 #define ISCSI_STAT_LOGOUT_RO(_name) \
638 static struct iscsi_stat_logout_attribute \
639 iscsi_stat_logout_##_name = \
640 __CONFIGFS_EATTR_RO(_name, \
641 iscsi_stat_logout_show_attr_##_name);
643 static ssize_t iscsi_stat_logout_show_attr_inst(
653 static ssize_t iscsi_stat_logout_show_attr_indx(
660 static ssize_t iscsi_stat_logout_show_attr_normal_logouts(
671 static ssize_t iscsi_stat_logout_show_attr_abnormal_logouts(
683 iscsi_logout_stats_group);
686 &iscsi_stat_logout_inst.attr,
687 &iscsi_stat_logout_indx.attr,
688 &iscsi_stat_logout_normal_logouts.attr,
689 &iscsi_stat_logout_abnormal_logouts.attr,
694 .show_attribute = iscsi_stat_logout_attr_show,
695 .store_attribute = iscsi_stat_logout_attr_store,
699 .ct_item_ops = &iscsi_stat_logout_stats_item_ops,
700 .ct_attrs = iscsi_stat_logout_stats_attrs,
709 #define ISCSI_STAT_SESS(_name, _mode) \
710 static struct iscsi_stat_sess_attribute \
711 iscsi_stat_sess_##_name = \
712 __CONFIGFS_EATTR(_name, _mode, \
713 iscsi_stat_sess_show_attr_##_name, \
714 iscsi_stat_sess_store_attr_##_name);
716 #define ISCSI_STAT_SESS_RO(_name) \
717 static struct iscsi_stat_sess_attribute \
718 iscsi_stat_sess_##_name = \
719 __CONFIGFS_EATTR_RO(_name, \
720 iscsi_stat_sess_show_attr_##_name);
722 static ssize_t iscsi_stat_sess_show_attr_inst(
735 static ssize_t iscsi_stat_sess_show_attr_node(
759 static ssize_t iscsi_stat_sess_show_attr_indx(
783 static ssize_t iscsi_stat_sess_show_attr_cmd_pdus(
806 static ssize_t iscsi_stat_sess_show_attr_rsp_pdus(
829 static ssize_t iscsi_stat_sess_show_attr_txdata_octs(
853 static ssize_t iscsi_stat_sess_show_attr_rxdata_octs(
877 static ssize_t iscsi_stat_sess_show_attr_conn_digest_errors(
901 static ssize_t iscsi_stat_sess_show_attr_conn_timeout_errors(
926 iscsi_sess_stats_group);
929 &iscsi_stat_sess_inst.attr,
930 &iscsi_stat_sess_node.attr,
931 &iscsi_stat_sess_indx.attr,
932 &iscsi_stat_sess_cmd_pdus.attr,
933 &iscsi_stat_sess_rsp_pdus.attr,
934 &iscsi_stat_sess_txdata_octs.attr,
935 &iscsi_stat_sess_rxdata_octs.attr,
936 &iscsi_stat_sess_conn_digest_errors.attr,
937 &iscsi_stat_sess_conn_timeout_errors.attr,
942 .show_attribute = iscsi_stat_sess_attr_show,
943 .store_attribute = iscsi_stat_sess_attr_store,
947 .ct_item_ops = &iscsi_stat_sess_stats_item_ops,
948 .ct_attrs = iscsi_stat_sess_stats_attrs,