scsi: libfc: Convert timers to use timer_setup()
Subsystems (2)
PATCH 1/1 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 <[email protected]>
Cc "James E.J. Bottomley" <[email protected]>
Cc "Martin K. Petersen" <[email protected]>
Signed-off-by Kees Cook <[email protected]>
--- drivers/scsi/libfc/fc_fcp.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-)
drivers/scsi/libfc/fc_fcp.c +10 -11
@@ -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_fcp_error (struct fc_fcp_pkt *,struct fc_frame *);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_error (struct fc_fcp_pkt *,struct fc_frame *);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) fsp->lp = lport; fsp->xfer_ddp =FC_XID_UNKNOWN ;refcount_set (&fsp->ref_cnt,1 ); -init_timer (&fsp->timer); - fsp->timer.data = (unsigned long )fsp; +timer_setup (&fsp->timer,NULL ,0 );INIT_LIST_HEAD (&fsp->list);spin_lock_init (&fsp->scsi_pkt_lock); }else {
@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, fsp->seq_ptr = seq;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 )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)* fc_lun_reset_send() - Send LUN reset command * @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;if (lport->tt.fcp_cmd_send (lport, fsp, fc_tm_done)) {
@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data)return ;if (fc_fcp_lock_pkt (fsp))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_unlock_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 ;init_completion (&fsp->tm_done); -fc_lun_reset_send ((unsigned long )fsp); +fc_lun_reset_send (&fsp->timer);/* * wait for completion of reset
@@ -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 * 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_libfc_priv *rpriv = rport->dd_data;
@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data)if (fsp->lp->qfull) {FC_FCP_DBG (fsp,"fcp timeout, resetting timer delay %d\n" , 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); goto unlock; }
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Kees,
Quoted 5 lines
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly. This removes several redundant setup calls in favor of just changing the timer function directly.
Looks OK to me.
Reviewed-by Martin K. Petersen <[email protected]>
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering
Looks good,
Signature · 6 lines
Johannes Thumshirn Storage [email protected] +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850