Commit 1f0849da authored by Kees Cook's avatar Kees Cook

scsi: libfc: 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. This removes several redundant setup
calls in favor of just changing the timer function directly.

Cc: Johannes Thumshirn <jth@kernel.org>
Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: fcoe-devel@open-fcoe.org
Cc: linux-scsi@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Acked-by: default avatarJohannes Thumshirn <jth@kernel.org>
parent b0a2dc66
...@@ -97,7 +97,7 @@ static void fc_fcp_complete_locked(struct fc_fcp_pkt *); ...@@ -97,7 +97,7 @@ static void fc_fcp_complete_locked(struct fc_fcp_pkt *);
static void fc_tm_done(struct fc_seq *, struct fc_frame *, void *); static void fc_tm_done(struct fc_seq *, struct fc_frame *, void *);
static void fc_fcp_error(struct fc_fcp_pkt *, struct fc_frame *); static void fc_fcp_error(struct fc_fcp_pkt *, struct fc_frame *);
static void fc_fcp_recovery(struct fc_fcp_pkt *, u8 code); static void fc_fcp_recovery(struct fc_fcp_pkt *, u8 code);
static void fc_fcp_timeout(unsigned long); static void fc_fcp_timeout(struct timer_list *);
static void fc_fcp_rec(struct fc_fcp_pkt *); static void fc_fcp_rec(struct fc_fcp_pkt *);
static void fc_fcp_rec_error(struct fc_fcp_pkt *, struct fc_frame *); static void fc_fcp_rec_error(struct fc_fcp_pkt *, struct fc_frame *);
static void fc_fcp_rec_resp(struct fc_seq *, struct fc_frame *, void *); static void fc_fcp_rec_resp(struct fc_seq *, struct fc_frame *, void *);
...@@ -155,8 +155,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp) ...@@ -155,8 +155,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp)
fsp->lp = lport; fsp->lp = lport;
fsp->xfer_ddp = FC_XID_UNKNOWN; fsp->xfer_ddp = FC_XID_UNKNOWN;
refcount_set(&fsp->ref_cnt, 1); refcount_set(&fsp->ref_cnt, 1);
init_timer(&fsp->timer); timer_setup(&fsp->timer, NULL, 0);
fsp->timer.data = (unsigned long)fsp;
INIT_LIST_HEAD(&fsp->list); INIT_LIST_HEAD(&fsp->list);
spin_lock_init(&fsp->scsi_pkt_lock); spin_lock_init(&fsp->scsi_pkt_lock);
} else { } else {
...@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, ...@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
fsp->seq_ptr = seq; fsp->seq_ptr = seq;
fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */ fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */
setup_timer(&fsp->timer, fc_fcp_timeout, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED) if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED)
fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
...@@ -1298,9 +1297,9 @@ static int fc_fcp_pkt_abort(struct fc_fcp_pkt *fsp) ...@@ -1298,9 +1297,9 @@ static int fc_fcp_pkt_abort(struct fc_fcp_pkt *fsp)
* fc_lun_reset_send() - Send LUN reset command * fc_lun_reset_send() - Send LUN reset command
* @data: The FCP packet that identifies the LUN to be reset * @data: The FCP packet that identifies the LUN to be reset
*/ */
static void fc_lun_reset_send(unsigned long data) static void fc_lun_reset_send(struct timer_list *t)
{ {
struct fc_fcp_pkt *fsp = (struct fc_fcp_pkt *)data; struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
struct fc_lport *lport = fsp->lp; struct fc_lport *lport = fsp->lp;
if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) {
...@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data) ...@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data)
return; return;
if (fc_fcp_lock_pkt(fsp)) if (fc_fcp_lock_pkt(fsp))
return; return;
setup_timer(&fsp->timer, fc_lun_reset_send, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_lun_reset_send;
fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
fc_fcp_unlock_pkt(fsp); fc_fcp_unlock_pkt(fsp);
} }
...@@ -1334,7 +1333,7 @@ static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, ...@@ -1334,7 +1333,7 @@ static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
fsp->wait_for_comp = 1; fsp->wait_for_comp = 1;
init_completion(&fsp->tm_done); init_completion(&fsp->tm_done);
fc_lun_reset_send((unsigned long)fsp); fc_lun_reset_send(&fsp->timer);
/* /*
* wait for completion of reset * wait for completion of reset
...@@ -1431,9 +1430,9 @@ static void fc_fcp_cleanup(struct fc_lport *lport) ...@@ -1431,9 +1430,9 @@ static void fc_fcp_cleanup(struct fc_lport *lport)
* received we see if data was received recently. If it has been then we * received we see if data was received recently. If it has been then we
* continue waiting, otherwise, we abort the command. * continue waiting, otherwise, we abort the command.
*/ */
static void fc_fcp_timeout(unsigned long data) static void fc_fcp_timeout(struct timer_list *t)
{ {
struct fc_fcp_pkt *fsp = (struct fc_fcp_pkt *)data; struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
struct fc_rport *rport = fsp->rport; struct fc_rport *rport = fsp->rport;
struct fc_rport_libfc_priv *rpriv = rport->dd_data; struct fc_rport_libfc_priv *rpriv = rport->dd_data;
...@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data) ...@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data)
if (fsp->lp->qfull) { if (fsp->lp->qfull) {
FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n", FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n",
fsp->timer_delay); fsp->timer_delay);
setup_timer(&fsp->timer, fc_fcp_timeout, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
fc_fcp_timer_set(fsp, fsp->timer_delay); fc_fcp_timer_set(fsp, fsp->timer_delay);
goto unlock; goto unlock;
} }
......
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