diff options
| author | Mike Christie <michaelc@cs.wisc.edu> | 2009-11-11 16:34:34 -0600 | 
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 12:01:37 -0600 | 
| commit | fdd46dcbe4468a1f47a2cc9be442d11c3d21dd68 (patch) | |
| tree | a8404ea68065de3bd3b26b159db3650d463e23ab /drivers/scsi/scsi_transport_iscsi.c | |
| parent | 3fe5ae8b4c4d3a82c755074878da7ddb9dde381e (diff) | |
[SCSI] iscsi class: modify handling of replacement timeout
This patch modifies the replacement/recovery_timeout so it works
more like the fc fast io fail tmo.
If userspace tries to set the replacement/recovery_timeout to less than
zero, we will turn off the forced recovery cleanup.
If userspace sets the value to 0 then we will force the recovery
cleanup immediately.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/scsi_transport_iscsi.c')
| -rw-r--r-- | drivers/scsi/scsi_transport_iscsi.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index dc04ca124a69..ea3892e7e0f7 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c @@ -627,8 +627,10 @@ static void __iscsi_block_session(struct work_struct *work)  	spin_unlock_irqrestore(&session->lock, flags);  	scsi_target_block(&session->dev);  	ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n"); -	queue_delayed_work(iscsi_eh_timer_workq, &session->recovery_work, -			   session->recovery_tmo * HZ); +	if (session->recovery_tmo >= 0) +		queue_delayed_work(iscsi_eh_timer_workq, +				   &session->recovery_work, +				   session->recovery_tmo * HZ);  }  void iscsi_block_session(struct iscsi_cls_session *session) @@ -1348,8 +1350,7 @@ iscsi_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)  	switch (ev->u.set_param.param) {  	case ISCSI_PARAM_SESS_RECOVERY_TMO:  		sscanf(data, "%d", &value); -		if (value != 0) -			session->recovery_tmo = value; +		session->recovery_tmo = value;  		break;  	default:  		err = transport->set_param(conn, ev->u.set_param.param, | 
