[SCSI] use a completion in scsi_send_eh_cmnd
scsi_send_eh_cmnd currently uses a semaphore and an overload of eh_timer to either get a completion for a command for a timeout. Switch to using a completion and wait_for_completion_timeout to simply the code and not having to deal with the races ourselves. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
262eef663b
commit
7dfdc9a52b
@@ -7,6 +7,7 @@
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct block_device;
|
||||
struct completion;
|
||||
struct module;
|
||||
struct scsi_cmnd;
|
||||
struct scsi_device;
|
||||
@@ -467,8 +468,8 @@ struct Scsi_Host {
|
||||
|
||||
struct list_head eh_cmd_q;
|
||||
struct task_struct * ehandler; /* Error recovery thread. */
|
||||
struct semaphore * eh_action; /* Wait for specific actions on the
|
||||
host. */
|
||||
struct completion * eh_action; /* Wait for specific actions on the
|
||||
host. */
|
||||
wait_queue_head_t host_wait;
|
||||
struct scsi_host_template *hostt;
|
||||
struct scsi_transport_template *transportt;
|
||||
|
Reference in New Issue
Block a user