[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>
This commit is contained in:
Родитель
3fe5ae8b4c
Коммит
fdd46dcbe4
|
@ -627,8 +627,10 @@ static void __iscsi_block_session(struct work_struct *work)
|
||||||
spin_unlock_irqrestore(&session->lock, flags);
|
spin_unlock_irqrestore(&session->lock, flags);
|
||||||
scsi_target_block(&session->dev);
|
scsi_target_block(&session->dev);
|
||||||
ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n");
|
ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n");
|
||||||
queue_delayed_work(iscsi_eh_timer_workq, &session->recovery_work,
|
if (session->recovery_tmo >= 0)
|
||||||
session->recovery_tmo * HZ);
|
queue_delayed_work(iscsi_eh_timer_workq,
|
||||||
|
&session->recovery_work,
|
||||||
|
session->recovery_tmo * HZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
void iscsi_block_session(struct iscsi_cls_session *session)
|
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) {
|
switch (ev->u.set_param.param) {
|
||||||
case ISCSI_PARAM_SESS_RECOVERY_TMO:
|
case ISCSI_PARAM_SESS_RECOVERY_TMO:
|
||||||
sscanf(data, "%d", &value);
|
sscanf(data, "%d", &value);
|
||||||
if (value != 0)
|
session->recovery_tmo = value;
|
||||||
session->recovery_tmo = value;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
err = transport->set_param(conn, ev->u.set_param.param,
|
err = transport->set_param(conn, ev->u.set_param.param,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче