Home
last modified time | relevance | path

Searched refs:sess (Results 1 – 25 of 57) sorted by relevance

123

/Linux-v4.19/drivers/target/tcm_fc/
Dtfc_sess.c174 struct ft_sess *sess; in ft_sess_get() local
185 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_get()
186 if (sess->port_id == port_id) { in ft_sess_get()
187 kref_get(&sess->kref); in ft_sess_get()
190 port_id, sess); in ft_sess_get()
191 return sess; in ft_sess_get()
204 struct ft_sess *sess = p; in ft_sess_alloc_cb() local
205 struct ft_tport *tport = sess->tport; in ft_sess_alloc_cb()
206 struct hlist_head *head = &tport->hash[ft_sess_hash(sess->port_id)]; in ft_sess_alloc_cb()
208 TFC_SESS_DBG(tport->lport, "port_id %x sess %p\n", sess->port_id, sess); in ft_sess_alloc_cb()
[all …]
Dtfc_cmd.c54 caller, cmd, cmd->sess, cmd->seq, se_cmd); in _ft_dump_cmd()
85 struct ft_sess *sess; in ft_free_cmd() local
89 sess = cmd->sess; in ft_free_cmd()
94 target_free_tag(sess->se_sess, &cmd->se_cmd); in ft_free_cmd()
95 ft_sess_put(sess); /* undo get from lookup at recv */ in ft_free_cmd()
336 ft_send_resp_status(cmd->sess->tport->lport, in ft_send_resp_code()
390 rc = target_submit_tmr(&cmd->se_cmd, cmd->sess->se_sess, in ft_send_tm()
445 static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp) in ft_recv_cmd() argument
448 struct fc_lport *lport = sess->tport->lport; in ft_recv_cmd()
449 struct se_session *se_sess = sess->se_sess; in ft_recv_cmd()
[all …]
/Linux-v4.19/drivers/target/iscsi/
Discsi_target_erl2.c49 conn->sess->sess_ops->MaxBurstLength) { in iscsit_create_conn_recovery_datain_values()
56 (conn->sess->sess_ops->MaxBurstLength - in iscsit_create_conn_recovery_datain_values()
74 if ((write_data_done + conn->sess->sess_ops->MaxBurstLength) <= in iscsit_create_conn_recovery_dataout_values()
76 write_data_done += conn->sess->sess_ops->MaxBurstLength; in iscsit_create_conn_recovery_dataout_values()
85 struct iscsi_session *sess, in iscsit_attach_active_connection_recovery_entry() argument
88 spin_lock(&sess->cr_a_lock); in iscsit_attach_active_connection_recovery_entry()
89 list_add_tail(&cr->cr_list, &sess->cr_active_list); in iscsit_attach_active_connection_recovery_entry()
90 spin_unlock(&sess->cr_a_lock); in iscsit_attach_active_connection_recovery_entry()
96 struct iscsi_session *sess, in iscsit_attach_inactive_connection_recovery_entry() argument
99 spin_lock(&sess->cr_i_lock); in iscsit_attach_inactive_connection_recovery_entry()
[all …]
Discsi_target_login.c143 struct iscsi_session *sess = NULL, *sess_p = NULL; in iscsi_check_for_session_reinstatement() local
171 if (!memcmp(sess_p->isid, conn->sess->isid, 6) && in iscsi_check_for_session_reinstatement()
180 sess = sess_p; in iscsi_check_for_session_reinstatement()
189 if (!sess) in iscsi_check_for_session_reinstatement()
194 "Discovery" : "Normal", sess->sid, in iscsi_check_for_session_reinstatement()
195 sess->sess_ops->InitiatorName); in iscsi_check_for_session_reinstatement()
197 spin_lock_bh(&sess->conn_lock); in iscsi_check_for_session_reinstatement()
198 if (sess->session_state == TARG_SESS_STATE_FAILED) { in iscsi_check_for_session_reinstatement()
199 spin_unlock_bh(&sess->conn_lock); in iscsi_check_for_session_reinstatement()
200 iscsit_dec_session_usage_count(sess); in iscsi_check_for_session_reinstatement()
[all …]
Discsi_target_erl0.c50 conn->sess->sess_ops->FirstBurstLength); in iscsit_set_dataout_sequence_values()
54 if (!conn->sess->sess_ops->DataSequenceInOrder) in iscsit_set_dataout_sequence_values()
60 conn->sess->sess_ops->MaxBurstLength) ? in iscsit_set_dataout_sequence_values()
62 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length; in iscsit_set_dataout_sequence_values()
66 conn->sess->sess_ops->MaxBurstLength) >= in iscsit_set_dataout_sequence_values()
69 conn->sess->sess_ops->MaxBurstLength); in iscsit_set_dataout_sequence_values()
93 if (conn->sess->sess_ops->DataSequenceInOrder) { in iscsit_dataout_within_command_recovery_check()
111 if (conn->sess->sess_ops->DataPDUInOrder) { in iscsit_dataout_within_command_recovery_check()
161 if (first_burst_len > conn->sess->sess_ops->FirstBurstLength) { in iscsit_dataout_check_unsolicited_sequence()
164 first_burst_len, conn->sess->sess_ops->FirstBurstLength); in iscsit_dataout_check_unsolicited_sequence()
[all …]
Discsi_target_util.c181 struct se_session *se_sess = conn->sess->se_sess; in iscsit_allocate_cmd()
264 static inline int iscsit_check_received_cmdsn(struct iscsi_session *sess, u32 cmdsn) in iscsit_check_received_cmdsn() argument
275 max_cmdsn = atomic_read(&sess->max_cmd_sn); in iscsit_check_received_cmdsn()
281 } else if (cmdsn == sess->exp_cmd_sn) { in iscsit_check_received_cmdsn()
282 sess->exp_cmd_sn++; in iscsit_check_received_cmdsn()
285 sess->exp_cmd_sn); in iscsit_check_received_cmdsn()
288 } else if (iscsi_sna_gt(cmdsn, sess->exp_cmd_sn)) { in iscsit_check_received_cmdsn()
291 cmdsn, sess->exp_cmd_sn); in iscsit_check_received_cmdsn()
297 sess->exp_cmd_sn); in iscsit_check_received_cmdsn()
315 mutex_lock(&conn->sess->cmdsn_mutex); in iscsit_sequence_cmd()
[all …]
Discsi_target_erl1.c56 if (conn->sess->sess_ops->RDMAExtensions) in iscsit_dump_data_payload()
213 conn->sess->sess_ops->MaxBurstLength) { in iscsit_create_recovery_datain_values_datasequenceinorder_yes()
220 (conn->sess->sess_ops->MaxBurstLength - in iscsit_create_recovery_datain_values_datasequenceinorder_yes()
229 if (!conn->sess->sess_ops->DataPDUInOrder) { in iscsit_create_recovery_datain_values_datasequenceinorder_yes()
330 if (conn->sess->sess_ops->DataPDUInOrder) { in iscsit_create_recovery_datain_values_datasequenceinorder_no()
393 (conn->sess->sess_ops->DataPDUInOrder) ? "Yes" : "No"); in iscsit_create_recovery_datain_values_datasequenceinorder_no()
625 if (conn->sess->sess_ops->DataSequenceInOrder) { in iscsit_dataout_datapduinorder_no_fbit()
699 if (conn->sess->sess_ops->DataSequenceInOrder) { in iscsit_recalculate_dataout_values()
702 if (conn->sess->sess_ops->DataPDUInOrder) { in iscsit_recalculate_dataout_values()
749 if (conn->sess->sess_ops->DataPDUInOrder) in iscsit_recalculate_dataout_values()
[all …]
Discsi_target_device.c28 void iscsit_determine_maxcmdsn(struct iscsi_session *sess) in iscsit_determine_maxcmdsn() argument
38 if (sess->sess_ops->SessionType) in iscsit_determine_maxcmdsn()
41 se_nacl = sess->se_sess->se_node_acl; in iscsit_determine_maxcmdsn()
49 sess->cmdsn_window = se_nacl->queue_depth; in iscsit_determine_maxcmdsn()
50 atomic_add(se_nacl->queue_depth - 1, &sess->max_cmd_sn); in iscsit_determine_maxcmdsn()
53 void iscsit_increment_maxcmdsn(struct iscsi_cmd *cmd, struct iscsi_session *sess) in iscsit_increment_maxcmdsn() argument
62 max_cmd_sn = atomic_inc_return(&sess->max_cmd_sn); in iscsit_increment_maxcmdsn()
Discsi_target.c951 if (conn->sess->sess_ops->RDMAExtensions) in iscsit_ack_from_expstatsn()
995 atomic_long_inc(&conn->sess->cmd_pdus); in iscsit_setup_scsi_cmd()
1053 if (payload_length && !conn->sess->sess_ops->ImmediateData) { in iscsit_setup_scsi_cmd()
1085 if (payload_length > conn->sess->sess_ops->FirstBurstLength) { in iscsit_setup_scsi_cmd()
1088 payload_length, conn->sess->sess_ops->FirstBurstLength); in iscsit_setup_scsi_cmd()
1126 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; in iscsit_setup_scsi_cmd()
1128 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); in iscsit_setup_scsi_cmd()
1135 if (!conn->sess->sess_ops->RDMAExtensions && in iscsit_setup_scsi_cmd()
1151 conn->sess->se_sess, be32_to_cpu(hdr->data_length), in iscsit_setup_scsi_cmd()
1437 atomic_long_add(payload_length, &conn->sess->rx_data_octets); in __iscsit_check_dataout_hdr()
[all …]
Discsi_target_tmr.c52 return (iscsi_sna_gte(be32_to_cpu(hdr->refcmdsn), conn->sess->exp_cmd_sn) && in iscsit_tmr_abort_task()
53 iscsi_sna_lte(be32_to_cpu(hdr->refcmdsn), (u32) atomic_read(&conn->sess->max_cmd_sn))) ? in iscsit_tmr_abort_task()
78 struct iscsi_session *sess = conn->sess; in iscsit_tmr_task_warm_reset() local
79 struct iscsi_node_attrib *na = iscsit_tpg_get_node_attrib(sess); in iscsit_tmr_task_warm_reset()
84 sess->se_sess->se_node_acl->initiatorname); in iscsit_tmr_task_warm_reset()
98 struct iscsi_session *sess = conn->sess; in iscsit_tmr_task_cold_reset() local
99 struct iscsi_node_attrib *na = iscsit_tpg_get_node_attrib(sess); in iscsit_tmr_task_cold_reset()
104 sess->se_sess->se_node_acl->initiatorname); in iscsit_tmr_task_cold_reset()
129 if (conn->sess->sess_ops->ErrorRecoveryLevel != 2) { in iscsit_tmr_task_reassign()
135 ret = iscsit_find_cmd_for_recovery(conn->sess, &ref_cmd, &cr, hdr->rtt); in iscsit_tmr_task_reassign()
[all …]
Discsi_target_stat.c611 struct iscsi_session *sess; in iscsi_stat_sess_node_show() local
618 sess = se_sess->fabric_sess_ptr; in iscsi_stat_sess_node_show()
619 if (sess) in iscsi_stat_sess_node_show()
621 sess->sess_ops->SessionType ? 0 : ISCSI_NODE_INDEX); in iscsi_stat_sess_node_show()
632 struct iscsi_session *sess; in iscsi_stat_sess_indx_show() local
639 sess = se_sess->fabric_sess_ptr; in iscsi_stat_sess_indx_show()
640 if (sess) in iscsi_stat_sess_indx_show()
642 sess->session_index); in iscsi_stat_sess_indx_show()
654 struct iscsi_session *sess; in iscsi_stat_sess_cmd_pdus_show() local
661 sess = se_sess->fabric_sess_ptr; in iscsi_stat_sess_cmd_pdus_show()
[all …]
Discsi_target_seq_pdu_list.c233 conn->sess->sess_ops->FirstBurstLength); in iscsit_determine_counts_for_list()
255 >= conn->sess->sess_ops->FirstBurstLength) { in iscsit_determine_counts_for_list()
257 (conn->sess->sess_ops->FirstBurstLength - in iscsit_determine_counts_for_list()
259 offset += (conn->sess->sess_ops->FirstBurstLength - in iscsit_determine_counts_for_list()
275 conn->sess->sess_ops->MaxBurstLength) { in iscsit_determine_counts_for_list()
276 offset += (conn->sess->sess_ops->MaxBurstLength - in iscsit_determine_counts_for_list()
309 datapduinorder = conn->sess->sess_ops->DataPDUInOrder; in iscsit_do_build_pdu_and_seq_lists()
310 datasequenceinorder = conn->sess->sess_ops->DataSequenceInOrder; in iscsit_do_build_pdu_and_seq_lists()
319 conn->sess->sess_ops->FirstBurstLength); in iscsit_do_build_pdu_and_seq_lists()
373 conn->sess->sess_ops->FirstBurstLength) { in iscsit_do_build_pdu_and_seq_lists()
[all …]
Discsi_target_datain_values.c119 (read_data_left <= (conn->sess->sess_ops->MaxBurstLength - in iscsit_set_datain_values_yes_and_yes()
124 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) in iscsit_set_datain_values_yes_and_yes()
129 conn->sess->sess_ops->MaxBurstLength) { in iscsit_set_datain_values_yes_and_yes()
134 datain->length = (conn->sess->sess_ops->MaxBurstLength - in iscsit_set_datain_values_yes_and_yes()
139 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) in iscsit_set_datain_values_yes_and_yes()
234 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) in iscsit_set_datain_values_no_and_yes()
242 conn->sess->sess_ops->MaxBurstLength) { in iscsit_set_datain_values_no_and_yes()
249 datain->length = (conn->sess->sess_ops->MaxBurstLength - in iscsit_set_datain_values_no_and_yes()
254 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) in iscsit_set_datain_values_no_and_yes()
344 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) in iscsit_set_datain_values_yes_and_no()
[all …]
Discsi_target_configfs.c455 struct iscsi_session *sess; \
465 sess = se_sess->fabric_sess_ptr; \
467 (u32)sess->sess_ops->name); \
510 struct iscsi_session *sess; in lio_target_nacl_info_show() local
522 sess = se_sess->fabric_sess_ptr; in lio_target_nacl_info_show()
525 sess->sess_ops->InitiatorName); in lio_target_nacl_info_show()
527 sess->sess_ops->InitiatorAlias); in lio_target_nacl_info_show()
531 sess->sid, sess->isid, sess->tsih); in lio_target_nacl_info_show()
533 (sess->sess_ops->SessionType) ? in lio_target_nacl_info_show()
536 switch (sess->session_state) { in lio_target_nacl_info_show()
[all …]
Discsi_target_nodeattrib.c107 struct iscsi_session *sess; in iscsit_na_nopin_timeout() local
136 sess = se_sess->fabric_sess_ptr; in iscsit_na_nopin_timeout()
138 spin_lock(&sess->conn_lock); in iscsit_na_nopin_timeout()
139 list_for_each_entry(conn, &sess->sess_conn_list, in iscsit_na_nopin_timeout()
149 spin_unlock(&sess->conn_lock); in iscsit_na_nopin_timeout()
Discsi_target_nego.c114 struct iscsi_session *sess = conn->sess; in iscsi_handle_authentication() local
120 if (!sess->sess_ops->SessionType) { in iscsi_handle_authentication()
124 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_handle_authentication()
157 strcpy(conn->sess->auth_type, "CHAP"); in iscsi_handle_authentication()
159 strcpy(conn->sess->auth_type, NONE); in iscsi_handle_authentication()
317 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_target_check_first_request()
358 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); in iscsi_target_do_tx_login_io()
359 login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn)); in iscsi_target_do_tx_login_io()
1010 login->tsih = conn->sess->tsih; in iscsi_target_do_login()
1064 struct iscsi_session *sess = conn->sess; in iscsi_target_locate_portal() local
[all …]
/Linux-v4.19/drivers/target/sbp/
Dsbp_target.c94 struct sbp_session *sess, *found = NULL; in sbp_session_find_by_guid() local
98 sess = se_sess->fabric_sess_ptr; in sbp_session_find_by_guid()
99 if (sess->guid == guid) in sbp_session_find_by_guid()
100 found = sess; in sbp_session_find_by_guid()
128 struct sbp_session *sess; in sbp_login_count_all_by_lun() local
134 sess = se_sess->fabric_sess_ptr; in sbp_login_count_all_by_lun()
136 spin_lock_bh(&sess->lock); in sbp_login_count_all_by_lun()
137 list_for_each_entry(login, &sess->login_list, link) { in sbp_login_count_all_by_lun()
144 spin_unlock_bh(&sess->lock); in sbp_login_count_all_by_lun()
155 struct sbp_session *sess; in sbp_login_find_by_id() local
[all …]
/Linux-v4.19/drivers/scsi/qla2xxx/
Dqla_target.c123 static int qlt_issue_task_mgmt(struct fc_port *sess, u64 lun,
139 void qlt_unreg_sess(struct fc_port *sess);
732 struct fc_port *sess = fcport; in qlt_fc_port_added() local
749 if (!sess->se_sess) { in qlt_fc_port_added()
753 sess = qlt_create_sess(vha, fcport, false); in qlt_fc_port_added()
763 if (!kref_get_unless_zero(&sess->sess_kref)) { in qlt_fc_port_added()
766 __func__, sess->port_name); in qlt_fc_port_added()
774 sess->local ? "local " : "", sess->port_name, sess->loop_id); in qlt_fc_port_added()
777 "Reappeared sess %p\n", sess); in qlt_fc_port_added()
779 ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, in qlt_fc_port_added()
[all …]
Dtcm_qla2xxx.c342 struct fc_port *sess = container_of(kref, in tcm_qla2xxx_release_session() local
345 qlt_unreg_sess(sess); in tcm_qla2xxx_release_session()
348 static void tcm_qla2xxx_put_sess(struct fc_port *sess) in tcm_qla2xxx_put_sess() argument
350 if (!sess) in tcm_qla2xxx_put_sess()
353 assert_spin_locked(&sess->vha->hw->tgt.sess_lock); in tcm_qla2xxx_put_sess()
354 kref_put(&sess->sess_kref, tcm_qla2xxx_release_session); in tcm_qla2xxx_put_sess()
359 struct fc_port *sess = se_sess->fabric_sess_ptr; in tcm_qla2xxx_close_session() local
363 BUG_ON(!sess); in tcm_qla2xxx_close_session()
364 vha = sess->vha; in tcm_qla2xxx_close_session()
368 tcm_qla2xxx_put_sess(sess); in tcm_qla2xxx_close_session()
[all …]
/Linux-v4.19/drivers/target/
Dtarget_core_tmr.c96 struct se_session *sess = se_cmd->se_sess; in __target_check_io_state() local
98 assert_spin_locked(&sess->sess_cmd_lock); in __target_check_io_state()
126 if (sess->sess_tearing_down) { in __target_check_io_state()
199 struct se_session *sess; in core_tmr_drain_tmr_list() local
225 sess = cmd->se_sess; in core_tmr_drain_tmr_list()
226 if (WARN_ON_ONCE(!sess)) in core_tmr_drain_tmr_list()
229 spin_lock(&sess->sess_cmd_lock); in core_tmr_drain_tmr_list()
234 spin_unlock(&sess->sess_cmd_lock); in core_tmr_drain_tmr_list()
239 spin_unlock(&sess->sess_cmd_lock); in core_tmr_drain_tmr_list()
242 if (sess->sess_tearing_down) { in core_tmr_drain_tmr_list()
[all …]
Dtarget_core_ua.c42 struct se_session *sess = cmd->se_sess; in target_scsi3_ua_check() local
45 if (!sess) in target_scsi3_ua_check()
48 nacl = sess->se_node_acl; in target_scsi3_ua_check()
211 struct se_session *sess = cmd->se_sess; in core_scsi3_ua_for_check_condition() local
216 if (WARN_ON_ONCE(!sess)) in core_scsi3_ua_for_check_condition()
219 nacl = sess->se_node_acl; in core_scsi3_ua_for_check_condition()
283 struct se_session *sess = cmd->se_sess; in core_scsi3_ua_clear_for_request_sense() local
288 if (!sess) in core_scsi3_ua_clear_for_request_sense()
291 nacl = sess->se_node_acl; in core_scsi3_ua_clear_for_request_sense()
/Linux-v4.19/drivers/tee/optee/
Dcall.c115 struct optee_session *sess; in find_session() local
117 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in find_session()
118 if (sess->session_id == session_id) in find_session()
119 return sess; in find_session()
225 struct optee_session *sess = NULL; in optee_open_session() local
251 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in optee_open_session()
252 if (!sess) { in optee_open_session()
264 sess->session_id = msg_arg->session; in optee_open_session()
266 list_add(&sess->list_node, &ctxdata->sess_list); in optee_open_session()
269 kfree(sess); in optee_open_session()
[all …]
/Linux-v4.19/drivers/scsi/qla4xxx/
Dql4_os.c138 static void qla4xxx_session_destroy(struct iscsi_cls_session *sess);
805 struct iscsi_session *sess; in __qla4xxx_is_chap_active() local
812 sess = cls_session->dd_data; in __qla4xxx_is_chap_active()
813 ddb_entry = sess->dd_data; in __qla4xxx_is_chap_active()
1781 struct iscsi_session *sess; in qla4xxx_conn_get_stats() local
1791 sess = cls_sess->dd_data; in qla4xxx_conn_get_stats()
1792 ddb_entry = sess->dd_data; in qla4xxx_conn_get_stats()
1849 struct iscsi_session *sess; in qla4xxx_eh_cmd_timed_out() local
1854 sess = session->dd_data; in qla4xxx_eh_cmd_timed_out()
2820 struct iscsi_session *sess = cls_sess->dd_data; in qla4xxx_session_get_param() local
[all …]
Dql4_mbx.c1990 struct iscsi_session *sess; in qla4xxx_set_param_ddbentry() local
2015 sess = conn->session; in qla4xxx_set_param_ddbentry()
2028 *ptid = cpu_to_le16((uint16_t)ddb_entry->sess->target_id); in qla4xxx_set_param_ddbentry()
2037 if (sess->targetname != NULL) { in qla4xxx_set_param_ddbentry()
2038 memcpy(fw_ddb_entry->iscsi_name, sess->targetname, in qla4xxx_set_param_ddbentry()
2039 min(strlen(sess->targetname), in qla4xxx_set_param_ddbentry()
2076 if (sess->username != NULL && sess->password != NULL) { in qla4xxx_set_param_ddbentry()
2077 if (strlen(sess->username) && strlen(sess->password)) { in qla4xxx_set_param_ddbentry()
2080 rval = qla4xxx_get_chap_index(ha, sess->username, in qla4xxx_set_param_ddbentry()
2081 sess->password, in qla4xxx_set_param_ddbentry()
[all …]
Dql4_init.c1022 ddb_entry->unblock_sess(ddb_entry->sess); in qla4xxx_ddb_change()
1042 iscsi_session_failure(ddb_entry->sess->dd_data, in qla4xxx_ddb_change()
1056 ddb_entry->unblock_sess(ddb_entry->sess); in qla4xxx_ddb_change()
1061 iscsi_session_failure(ddb_entry->sess->dd_data, in qla4xxx_ddb_change()
1115 ddb_entry->unblock_sess(ddb_entry->sess); in qla4xxx_flash_ddb_change()
1120 iscsi_block_session(ddb_entry->sess); in qla4xxx_flash_ddb_change()
1130 iscsi_block_session(ddb_entry->sess); in qla4xxx_flash_ddb_change()
1140 ddb_entry->unblock_sess(ddb_entry->sess); in qla4xxx_flash_ddb_change()
1206 struct iscsi_session *sess; in qla4xxx_login_flash_ddb() local
1214 sess = cls_session->dd_data; in qla4xxx_login_flash_ddb()
[all …]

123