Commit d17203c4 authored by Bart Van Assche's avatar Bart Van Assche Committed by Nicholas Bellinger

target/tcm_loop: Replace a waitqueue and a counter by a completion

This patch simplifies the implementation of the tcm_loop driver
but does not change its behavior.
Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.com>
Cc: David Disseldorp <ddiss@suse.de>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 4d3895d5
......@@ -239,7 +239,7 @@ static int tcm_loop_issue_tmr(struct tcm_loop_tpg *tl_tpg,
return ret;
}
init_waitqueue_head(&tl_cmd->tl_tmr_wait);
init_completion(&tl_cmd->tmr_done);
se_cmd = &tl_cmd->tl_se_cmd;
se_tpg = &tl_tpg->tl_se_tpg;
......@@ -270,7 +270,7 @@ static int tcm_loop_issue_tmr(struct tcm_loop_tpg *tl_tpg,
* tcm_loop_queue_tm_rsp() to wake us up.
*/
transport_generic_handle_tmr(se_cmd);
wait_event(tl_cmd->tl_tmr_wait, atomic_read(&tl_cmd->tmr_complete));
wait_for_completion(&tl_cmd->tmr_done);
/*
* The TMR LUN_RESET has completed, check the response status and
* then release allocations.
......@@ -665,12 +665,8 @@ static void tcm_loop_queue_tm_rsp(struct se_cmd *se_cmd)
struct tcm_loop_cmd *tl_cmd = container_of(se_cmd,
struct tcm_loop_cmd, tl_se_cmd);
/*
* The SCSI EH thread will be sleeping on se_tmr->tl_tmr_wait, go ahead
* and wake up the wait_queue_head_t in tcm_loop_device_reset()
*/
atomic_set(&tl_cmd->tmr_complete, 1);
wake_up(&tl_cmd->tl_tmr_wait);
/* Wake up tcm_loop_issue_tmr(). */
complete(&tl_cmd->tmr_done);
}
static void tcm_loop_aborted_task(struct se_cmd *se_cmd)
......
......@@ -16,8 +16,7 @@ struct tcm_loop_cmd {
/* The TCM I/O descriptor that is accessed via container_of() */
struct se_cmd tl_se_cmd;
struct work_struct work;
atomic_t tmr_complete;
wait_queue_head_t tl_tmr_wait;
struct completion tmr_done;
/* Sense buffer that will be mapped into outgoing status */
unsigned char tl_sense_buf[TRANSPORT_SENSE_BUFFER];
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment