Commit 9a5d04fc authored by Kees Cook's avatar Kees Cook

scsi: ibmvscsi: Convert timers to use timer_setup()

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
Cc: linux-scsi@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Acked-by: default avatarTyrel Datwyler <tyreld@linux.vnet.ibm.com>
parent cd07f958
...@@ -1393,8 +1393,9 @@ static int ibmvfc_map_sg_data(struct scsi_cmnd *scmd, ...@@ -1393,8 +1393,9 @@ static int ibmvfc_map_sg_data(struct scsi_cmnd *scmd,
* *
* Called when an internally generated command times out * 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; struct ibmvfc_host *vhost = evt->vhost;
dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt); dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt);
ibmvfc_reset_host(vhost); ibmvfc_reset_host(vhost);
...@@ -1424,12 +1425,10 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt, ...@@ -1424,12 +1425,10 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt,
BUG(); BUG();
list_add_tail(&evt->queue, &vhost->sent); list_add_tail(&evt->queue, &vhost->sent);
init_timer(&evt->timer); timer_setup(&evt->timer, ibmvfc_timeout, 0);
if (timeout) { if (timeout) {
evt->timer.data = (unsigned long) evt;
evt->timer.expires = jiffies + (timeout * HZ); evt->timer.expires = jiffies + (timeout * HZ);
evt->timer.function = (void (*)(unsigned long))ibmvfc_timeout;
add_timer(&evt->timer); add_timer(&evt->timer);
} }
...@@ -3692,8 +3691,9 @@ static void ibmvfc_tgt_adisc_cancel_done(struct ibmvfc_event *evt) ...@@ -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, * out, reset the CRQ. When the ADISC comes back as cancelled,
* log back into the target. * 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_host *vhost = tgt->vhost;
struct ibmvfc_event *evt; struct ibmvfc_event *evt;
struct ibmvfc_tmf *tmf; struct ibmvfc_tmf *tmf;
...@@ -3778,9 +3778,7 @@ static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt) ...@@ -3778,9 +3778,7 @@ static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt)
if (timer_pending(&tgt->timer)) if (timer_pending(&tgt->timer))
mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ)); mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ));
else { else {
tgt->timer.data = (unsigned long) tgt;
tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ); tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ);
tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout;
add_timer(&tgt->timer); add_timer(&tgt->timer);
} }
...@@ -3912,7 +3910,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id) ...@@ -3912,7 +3910,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id)
tgt->vhost = vhost; tgt->vhost = vhost;
tgt->need_login = 1; tgt->need_login = 1;
tgt->cancel_key = vhost->task_set++; tgt->cancel_key = vhost->task_set++;
init_timer(&tgt->timer); timer_setup(&tgt->timer, ibmvfc_adisc_timeout, 0);
kref_init(&tgt->kref); kref_init(&tgt->kref);
ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout);
spin_lock_irqsave(vhost->host->host_lock, flags); spin_lock_irqsave(vhost->host->host_lock, flags);
......
...@@ -837,8 +837,9 @@ static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata) ...@@ -837,8 +837,9 @@ static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata)
* *
* Called when an internally generated command times out * Called when an internally generated command times out
*/ */
static void ibmvscsi_timeout(struct srp_event_struct *evt_struct) static void ibmvscsi_timeout(struct timer_list *t)
{ {
struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer);
struct ibmvscsi_host_data *hostdata = evt_struct->hostdata; struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n", dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n",
...@@ -927,11 +928,9 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct, ...@@ -927,11 +928,9 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,
*/ */
list_add_tail(&evt_struct->list, &hostdata->sent); list_add_tail(&evt_struct->list, &hostdata->sent);
init_timer(&evt_struct->timer); timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0);
if (timeout) { if (timeout) {
evt_struct->timer.data = (unsigned long) evt_struct;
evt_struct->timer.expires = jiffies + (timeout * HZ); evt_struct->timer.expires = jiffies + (timeout * HZ);
evt_struct->timer.function = (void (*)(unsigned long))ibmvscsi_timeout;
add_timer(&evt_struct->timer); add_timer(&evt_struct->timer);
} }
......
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