|
@@ -1393,8 +1393,9 @@ static int ibmvfc_map_sg_data(struct scsi_cmnd *scmd,
|
|
|
*
|
|
|
* Called when an internally generated command times out
|
|
|
**/
|
|
|
-static void ibmvfc_timeout(struct ibmvfc_event *evt)
|
|
|
+static void ibmvfc_timeout(struct timer_list *t)
|
|
|
{
|
|
|
+ struct ibmvfc_event *evt = from_timer(evt, t, timer);
|
|
|
struct ibmvfc_host *vhost = evt->vhost;
|
|
|
dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt);
|
|
|
ibmvfc_reset_host(vhost);
|
|
@@ -1424,12 +1425,10 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt,
|
|
|
BUG();
|
|
|
|
|
|
list_add_tail(&evt->queue, &vhost->sent);
|
|
|
- init_timer(&evt->timer);
|
|
|
+ timer_setup(&evt->timer, ibmvfc_timeout, 0);
|
|
|
|
|
|
if (timeout) {
|
|
|
- evt->timer.data = (unsigned long) evt;
|
|
|
evt->timer.expires = jiffies + (timeout * HZ);
|
|
|
- evt->timer.function = (void (*)(unsigned long))ibmvfc_timeout;
|
|
|
add_timer(&evt->timer);
|
|
|
}
|
|
|
|
|
@@ -3692,8 +3691,9 @@ static void ibmvfc_tgt_adisc_cancel_done(struct ibmvfc_event *evt)
|
|
|
* out, reset the CRQ. When the ADISC comes back as cancelled,
|
|
|
* log back into the target.
|
|
|
**/
|
|
|
-static void ibmvfc_adisc_timeout(struct ibmvfc_target *tgt)
|
|
|
+static void ibmvfc_adisc_timeout(struct timer_list *t)
|
|
|
{
|
|
|
+ struct ibmvfc_target *tgt = from_timer(tgt, t, timer);
|
|
|
struct ibmvfc_host *vhost = tgt->vhost;
|
|
|
struct ibmvfc_event *evt;
|
|
|
struct ibmvfc_tmf *tmf;
|
|
@@ -3778,9 +3778,7 @@ static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt)
|
|
|
if (timer_pending(&tgt->timer))
|
|
|
mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ));
|
|
|
else {
|
|
|
- tgt->timer.data = (unsigned long) tgt;
|
|
|
tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ);
|
|
|
- tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout;
|
|
|
add_timer(&tgt->timer);
|
|
|
}
|
|
|
|
|
@@ -3912,7 +3910,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id)
|
|
|
tgt->vhost = vhost;
|
|
|
tgt->need_login = 1;
|
|
|
tgt->cancel_key = vhost->task_set++;
|
|
|
- init_timer(&tgt->timer);
|
|
|
+ timer_setup(&tgt->timer, ibmvfc_adisc_timeout, 0);
|
|
|
kref_init(&tgt->kref);
|
|
|
ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout);
|
|
|
spin_lock_irqsave(vhost->host->host_lock, flags);
|