diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2016-02-10 22:25:02 -0800 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2016-02-10 22:44:26 -0800 |
commit | 6a5fb531b333bb42114666d92f7fe6681f249c03 (patch) | |
tree | 204d1122a7522efa70c714293acaa6df4030af40 | |
parent | 2e498f25b0daa9dec761e3e880024ff7417f2445 (diff) | |
download | target-pending-debug-for-himanshu.tar.gz |
target: Add debug for remote LUN_RESET + session resetdebug-for-himanshu
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r-- | drivers/target/target_core_tmr.c | 18 | ||||
-rw-r--r-- | drivers/target/target_core_transport.c | 20 |
2 files changed, 24 insertions, 14 deletions
diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c index 82a663ba98009f..29debe911c6ea5 100644 --- a/drivers/target/target_core_tmr.c +++ b/drivers/target/target_core_tmr.c @@ -128,13 +128,13 @@ static bool __target_check_io_state(struct se_cmd *se_cmd, */ spin_lock(&se_cmd->t_state_lock); if (se_cmd->transport_state & (CMD_T_COMPLETE | CMD_T_FABRIC_STOP)) { - pr_debug("Attempted to abort io tag: %llu already complete or" + printk_ratelimited("Attempted to abort io tag: %llu already complete or" " fabric stop, skipping\n", se_cmd->tag); spin_unlock(&se_cmd->t_state_lock); return false; } if (sess->sess_tearing_down || se_cmd->cmd_wait_set) { - pr_debug("Attempted to abort io tag: %llu already shutdown," + printk_ratelimited("Attempted to abort io tag: %llu already shutdown," " skipping\n", se_cmd->tag); spin_unlock(&se_cmd->t_state_lock); return false; @@ -279,7 +279,7 @@ static void core_tmr_drain_tmr_list( list_del_init(&tmr_p->tmr_list); cmd = tmr_p->task_cmd; - pr_debug("LUN_RESET: %s releasing TMR %p Function: 0x%02x," + printk_ratelimited("LUN_RESET: %s releasing TMR %p Function: 0x%02x," " Response: 0x%02x, t_state: %d\n", (preempt_and_abort_list) ? "Preempt" : "", tmr_p, tmr_p->function, tmr_p->response, cmd->t_state); @@ -361,14 +361,14 @@ static void core_tmr_drain_state_list( cmd = list_entry(drain_task_list.next, struct se_cmd, state_list); list_del_init(&cmd->state_list); - pr_debug("LUN_RESET: %s cmd: %p" + printk_ratelimited("LUN_RESET: %s cmd: %p" " ITT/CmdSN: 0x%08llx/0x%08x, i_state: %d, t_state: %d" "cdb: 0x%02x\n", (preempt_and_abort_list) ? "Preempt" : "", cmd, cmd->tag, 0, cmd->se_tfo->get_cmd_state(cmd), cmd->t_state, cmd->t_task_cdb[0]); - pr_debug("LUN_RESET: ITT[0x%08llx] - pr_res_key: 0x%016Lx" + printk_ratelimited("LUN_RESET: ITT[0x%08llx] - pr_res_key: 0x%016Lx" " -- CMD_T_ACTIVE: %d" " CMD_T_STOP: %d CMD_T_SENT: %d\n", cmd->tag, cmd->pr_res_key, @@ -422,13 +422,13 @@ int core_tmr_lun_reset( tmr_nacl = tmr_sess->se_node_acl; tmr_tpg = tmr_sess->se_tpg; if (tmr_nacl && tmr_tpg) { - pr_debug("LUN_RESET: TMR caller fabric: %s" + printk_ratelimited("LUN_RESET: TMR caller fabric: %s" " initiator port %s\n", tmr_tpg->se_tpg_tfo->get_fabric_name(), tmr_nacl->initiatorname); } } - pr_debug("LUN_RESET: %s starting for [%s], tas: %d\n", + printk_ratelimited("LUN_RESET: %s starting for [%s], tas: %d\n", (preempt_and_abort_list) ? "Preempt" : "TMR", dev->transport->name, tas); @@ -446,12 +446,12 @@ int core_tmr_lun_reset( dev->dev_reserved_node_acl = NULL; dev->dev_reservation_flags &= ~DRF_SPC2_RESERVATIONS; spin_unlock(&dev->dev_reservation_lock); - pr_debug("LUN_RESET: SCSI-2 Released reservation\n"); + printk_ratelimited("LUN_RESET: SCSI-2 Released reservation\n"); } atomic_long_inc(&dev->num_resets); - pr_debug("LUN_RESET: %s for [%s] Complete\n", + printk_ratelimited("LUN_RESET: %s for [%s] Complete\n", (preempt_and_abort_list) ? "Preempt" : "TMR", dev->transport->name); return 0; diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index d92cb644d8f93f..ecec03cd708bc6 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -576,7 +576,7 @@ static int transport_cmd_check_stop(struct se_cmd *cmd, bool remove_from_lists, * this command for frontend exceptions. */ if (cmd->transport_state & CMD_T_STOP) { - pr_debug("%s:%d CMD_T_STOP for ITT: 0x%08llx\n", + printk_ratelimited("%s:%d CMD_T_STOP for ITT: 0x%08llx\n", __func__, __LINE__, cmd->tag); spin_unlock_irqrestore(&cmd->t_state_lock, flags); @@ -2568,6 +2568,11 @@ void target_sess_cmd_list_set_waiting(struct se_session *se_sess) list_for_each_entry(se_cmd, &se_sess->sess_wait_list, se_cmd_list) { rc = kref_get_unless_zero(&se_cmd->cmd_kref); if (rc) { + printk_ratelimited("Setting cmd_wait_set=1 for" + " se_cmd: %p t_state: %d, fabric state:" + " %d\n", se_cmd, se_cmd->t_state, + se_cmd->se_tfo->get_cmd_state(se_cmd)); + se_cmd->cmd_wait_set = 1; spin_lock(&se_cmd->t_state_lock); se_cmd->transport_state |= CMD_T_FABRIC_STOP; @@ -2592,7 +2597,7 @@ void target_wait_for_sess_cmds(struct se_session *se_sess) &se_sess->sess_wait_list, se_cmd_list) { list_del_init(&se_cmd->se_cmd_list); - pr_debug("Waiting for se_cmd: %p t_state: %d, fabric state:" + printk_ratelimited("Waiting for se_cmd: %p t_state: %d, fabric state:" " %d\n", se_cmd, se_cmd->t_state, se_cmd->se_tfo->get_cmd_state(se_cmd)); @@ -2601,12 +2606,17 @@ void target_wait_for_sess_cmds(struct se_session *se_sess) spin_unlock_irqrestore(&se_cmd->t_state_lock, flags); if (!target_put_sess_cmd(se_cmd)) { + printk_ratelimited("Zero put_sess_cmd: se_cmd: %p t_state: %d" + " fabric state: %d krefcount %d\n", se_cmd, se_cmd->t_state, + se_cmd->se_tfo->get_cmd_state(se_cmd), + atomic_read(&se_cmd->cmd_kref.refcount)); + if (tas) target_put_sess_cmd(se_cmd); } wait_for_completion(&se_cmd->cmd_wait_comp); - pr_debug("After cmd_wait_comp: se_cmd: %p t_state: %d" + printk_ratelimited("After cmd_wait_comp: se_cmd: %p t_state: %d" " fabric state: %d\n", se_cmd, se_cmd->t_state, se_cmd->se_tfo->get_cmd_state(se_cmd)); @@ -2661,7 +2671,7 @@ __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop, cmd->transport_state |= CMD_T_STOP; - pr_debug("wait_for_tasks: Stopping %p ITT: 0x%08llx i_state: %d," + printk_ratelimited("wait_for_tasks: Stopping %p ITT: 0x%08llx i_state: %d," " t_state: %d, CMD_T_STOP\n", cmd, cmd->tag, cmd->se_tfo->get_cmd_state(cmd), cmd->t_state); @@ -2672,7 +2682,7 @@ __transport_wait_for_tasks(struct se_cmd *cmd, bool fabric_stop, spin_lock_irqsave(&cmd->t_state_lock, *flags); cmd->transport_state &= ~(CMD_T_ACTIVE | CMD_T_STOP); - pr_debug("wait_for_tasks: Stopped wait_for_completion(&cmd->" + printk_ratelimited("wait_for_tasks: Stopped wait_for_completion(&cmd->" "t_transport_stop_comp) for ITT: 0x%08llx\n", cmd->tag); return true; |