lightnvm: Convert timers to use timer_setup()
PATCH 1/1 lightnvm: 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.
--- drivers/lightnvm/pblk-core.c | 4 ++-- drivers/lightnvm/pblk-gc.c | 6 +++--- drivers/lightnvm/pblk-init.c | 2 +- drivers/lightnvm/pblk-rl.c | 6 +++--- drivers/lightnvm/pblk.h | 2 +- drivers/lightnvm/rrpc.c | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-)
drivers/lightnvm/pblk-core.c +2 -2
@@ -229,9 +229,9 @@ static void pblk_write_kick(struct pblk *pblk)mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (1000 )); } -void pblk_write_timer_fn (unsigned long data) +void pblk_write_timer_fn (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, wtimer);/* kick the write thread every tick to flush outstanding data */ pblk_write_kick (pblk);
drivers/lightnvm/pblk-gc.c +3 -3
@@ -428,9 +428,9 @@ void pblk_gc_kick(struct pblk *pblk)mod_timer (&gc->gc_timer, jiffies +msecs_to_jiffies (GC_TIME_MSECS )); } -static void pblk_gc_timer (unsigned long data) +static void pblk_gc_timer (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, gc.gc_timer);pblk_gc_kick (pblk); }
@@ -569,7 +569,7 @@ int pblk_gc_init(struct pblk *pblk) goto fail_free_writer_kthread; } -setup_timer (&gc->gc_timer, pblk_gc_timer, (unsigned long )pblk); +timer_setup (&gc->gc_timer, pblk_gc_timer,0 );mod_timer (&gc->gc_timer, jiffies +msecs_to_jiffies (GC_TIME_MSECS )); gc->gc_active =0 ;
drivers/lightnvm/pblk-init.c +1 -1
@@ -833,7 +833,7 @@ static int pblk_lines_init(struct pblk *pblk)static int pblk_writer_init (struct pblk *pblk) { -setup_timer (&pblk->wtimer, pblk_write_timer_fn, (unsigned long )pblk); +timer_setup (&pblk->wtimer, pblk_write_timer_fn,0 );mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (100 )); pblk->writer_ts =kthread_create (pblk_write_ts, pblk,"pblk-writer-t" );
drivers/lightnvm/pblk-rl.c +3 -3
@@ -178,9 +178,9 @@ int pblk_rl_sysfs_rate_show(struct pblk_rl *rl)return rl->rb_user_max; } -static void pblk_rl_u_timer (unsigned long data) +static void pblk_rl_u_timer (struct timer_list *t) { -struct pblk_rl *rl = (struct pblk_rl *)data; +struct pblk_rl *rl =from_timer (rl, t, u_timer);/* Release user I/O state. Protect from GC */ smp_store_release (&rl->rb_user_active,0 );
@@ -221,7 +221,7 @@ void pblk_rl_init(struct pblk_rl *rl, int budget)atomic_set (&rl->rb_gc_cnt,0 );atomic_set (&rl->rb_space,-1 ); -setup_timer (&rl->u_timer, pblk_rl_u_timer, (unsigned long )rl); +timer_setup (&rl->u_timer, pblk_rl_u_timer,0 ); rl->rb_user_active =0 ; rl->rb_gc_active =0 ;
drivers/lightnvm/pblk.h +1 -1
@@ -789,7 +789,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry,* pblk write thread */ int pblk_write_ts (void *data); -void pblk_write_timer_fn (unsigned long data); +void pblk_write_timer_fn (struct timer_list *t);void pblk_write_should_kick (struct pblk *pblk);/*
drivers/lightnvm/rrpc.c +3 -3
@@ -267,9 +267,9 @@ static void rrpc_gc_kick(struct rrpc *rrpc)/* * timed GC every interval. */ -static void rrpc_gc_timer (unsigned long data) +static void rrpc_gc_timer (struct timer_list *t) { -struct rrpc *rrpc = (struct rrpc *)data; +struct rrpc *rrpc =from_timer (rrpc, t, gc_timer);rrpc_gc_kick (rrpc);mod_timer (&rrpc->gc_timer, jiffies +msecs_to_jiffies (10 ));
@@ -1063,7 +1063,7 @@ static int rrpc_gc_init(struct rrpc *rrpc)if (!rrpc->kgc_wq)return -ENOMEM ; -setup_timer (&rrpc->gc_timer, rrpc_gc_timer, (unsigned long )rrpc); +timer_setup (&rrpc->gc_timer, rrpc_gc_timer,0 );return 0 ; }
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Quoted 136 lines · Kees Cook
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.Cc Matias Bjorling <[email protected]>Signed-off-by Kees Cook <[email protected]>---
drivers/lightnvm/pblk-core.c | 4 ++-- drivers/lightnvm/pblk-gc.c | 6 +++--- drivers/lightnvm/pblk-init.c | 2 +- drivers/lightnvm/pblk-rl.c | 6 +++--- drivers/lightnvm/pblk.h | 2 +- drivers/lightnvm/rrpc.c | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-)drivers/lightnvm/pblk-core.c +2
-2@@ -229,9 +229,9 @@ static void pblk_write_kick(struct pblk *pblk)mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (1000 )); } -void pblk_write_timer_fn (unsigned long data) +void pblk_write_timer_fn (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, wtimer);/* kick the write thread every tick to flush outstanding data */ pblk_write_kick (pblk);drivers/lightnvm/pblk-gc.c +3
-3@@ -428,9 +428,9 @@ void pblk_gc_kick(struct pblk *pblk)mod_timer (&gc->gc_timer, jiffies +msecs_to_jiffies (GC_TIME_MSECS )); } -static void pblk_gc_timer (unsigned long data) +static void pblk_gc_timer (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, gc.gc_timer);pblk_gc_kick (pblk); }@@ -569,7 +569,7 @@ int pblk_gc_init(struct pblk *pblk) goto fail_free_writer_kthread; } -setup_timer (&gc->gc_timer, pblk_gc_timer, (unsigned long )pblk); +timer_setup (&gc->gc_timer, pblk_gc_timer,0 );mod_timer (&gc->gc_timer, jiffies +msecs_to_jiffies (GC_TIME_MSECS )); gc->gc_active =0 ;drivers/lightnvm/pblk-init.c +1
-1@@ -833,7 +833,7 @@ static int pblk_lines_init(struct pblk *pblk)static int pblk_writer_init (struct pblk *pblk) { -setup_timer (&pblk->wtimer, pblk_write_timer_fn, (unsigned long )pblk); +timer_setup (&pblk->wtimer, pblk_write_timer_fn,0 );mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (100 )); pblk->writer_ts =kthread_create (pblk_write_ts, pblk,"pblk-writer-t" );drivers/lightnvm/pblk-rl.c +3
-3@@ -178,9 +178,9 @@ int pblk_rl_sysfs_rate_show(struct pblk_rl *rl)return rl->rb_user_max; } -static void pblk_rl_u_timer (unsigned long data) +static void pblk_rl_u_timer (struct timer_list *t) { -struct pblk_rl *rl = (struct pblk_rl *)data; +struct pblk_rl *rl =from_timer (rl, t, u_timer);/* Release user I/O state. Protect from GC */ smp_store_release (&rl->rb_user_active,0 );@@ -221,7 +221,7 @@ void pblk_rl_init(struct pblk_rl *rl, int budget)atomic_set (&rl->rb_gc_cnt,0 );atomic_set (&rl->rb_space,-1 ); -setup_timer (&rl->u_timer, pblk_rl_u_timer, (unsigned long )rl); +timer_setup (&rl->u_timer, pblk_rl_u_timer,0 ); rl->rb_user_active =0 ; rl->rb_gc_active =0 ;drivers/lightnvm/pblk.h +1
-1@@ -789,7 +789,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry,* pblk write thread */ int pblk_write_ts (void *data); -void pblk_write_timer_fn (unsigned long data); +void pblk_write_timer_fn (struct timer_list *t);void pblk_write_should_kick (struct pblk *pblk);/* drivers/lightnvm/rrpc.c +3
-4@@ -267,9 +267,9 @@ static void rrpc_gc_kick(struct rrpc *rrpc)/* * timed GC every interval. */ -static void rrpc_gc_timer (unsigned long data) +static void rrpc_gc_timer (struct timer_list *t) { -struct rrpc *rrpc = (struct rrpc *)data; +struct rrpc *rrpc =from_timer (rrpc, t, gc_timer);rrpc_gc_kick (rrpc);mod_timer (&rrpc->gc_timer, jiffies +msecs_to_jiffies (10 ));@@ -1063,7 +1063,7 @@ static int rrpc_gc_init(struct rrpc *rrpc)if (!rrpc->kgc_wq)return -ENOMEM ; -setup_timer (&rrpc->gc_timer, rrpc_gc_timer, (unsigned long )rrpc); +timer_setup (&rrpc->gc_timer, rrpc_gc_timer,0 );return 0 ; } --
Quoted 2 lines
2.7.4
Looks good. I put it through our daily internal testing (on topof Linus' v4.14-rc6) and it does not seem to introduce any regressions.
One thing though: The patch does not apply on top of Jen's for-15/block. It is trivial, but here you have a version that applies.
--- drivers/lightnvm/pblk-core.c | 4 ++-- drivers/lightnvm/pblk-gc.c | 6 +++--- drivers/lightnvm/pblk-init.c | 2 +- drivers/lightnvm/pblk-rl.c | 6 +++--- drivers/lightnvm/pblk.h | 2 +- drivers/lightnvm/rrpc.c | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-)
drivers/lightnvm/pblk-core.c +2 -2
@@ -270,9 +270,9 @@ static void pblk_write_kick(struct pblk *pblk)mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (1000 )); } -void pblk_write_timer_fn (unsigned long data) +void pblk_write_timer_fn (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, wtimer);/* kick the write thread every tick to flush outstanding data */ pblk_write_kick (pblk);
drivers/lightnvm/pblk-gc.c +3 -3
@@ -442,9 +442,9 @@ static void pblk_gc_run(struct pblk *pblk) goto next_gc_group; } -static void pblk_gc_timer (unsigned long data) +static void pblk_gc_timer (struct timer_list *t) { -struct pblk *pblk = (struct pblk *)data; +struct pblk *pblk =from_timer (pblk, t, gc.gc_timer);pblk_gc_kick (pblk); }
@@ -601,7 +601,7 @@ int pblk_gc_init(struct pblk *pblk) goto fail_free_writer_kthread; } -setup_timer (&gc->gc_timer, pblk_gc_timer, (unsigned long )pblk); +timer_setup (&gc->gc_timer, pblk_gc_timer,0 );mod_timer (&gc->gc_timer, jiffies +msecs_to_jiffies (GC_TIME_MSECS )); gc->gc_active =0 ;
drivers/lightnvm/pblk-init.c +1 -1
@@ -866,7 +866,7 @@ static int pblk_lines_init(struct pblk *pblk)static int pblk_writer_init (struct pblk *pblk) { -setup_timer (&pblk->wtimer, pblk_write_timer_fn, (unsigned long )pblk); +timer_setup (&pblk->wtimer, pblk_write_timer_fn,0 );mod_timer (&pblk->wtimer, jiffies +msecs_to_jiffies (100 )); pblk->writer_ts =kthread_create (pblk_write_ts, pblk,"pblk-writer-t" );
drivers/lightnvm/pblk-rl.c +3 -3
@@ -158,9 +158,9 @@ int pblk_rl_max_io(struct pblk_rl *rl)return rl->rb_max_io; } -static void pblk_rl_u_timer (unsigned long data) +static void pblk_rl_u_timer (struct timer_list *t) { -struct pblk_rl *rl = (struct pblk_rl *)data; +struct pblk_rl *rl =from_timer (rl, t, u_timer);/* Release user I/O state. Protect from GC */ smp_store_release (&rl->rb_user_active,0 );
@@ -202,7 +202,7 @@ void pblk_rl_init(struct pblk_rl *rl, int budget)atomic_set (&rl->rb_gc_cnt,0 );atomic_set (&rl->rb_space,-1 ); -setup_timer (&rl->u_timer, pblk_rl_u_timer, (unsigned long )rl); +timer_setup (&rl->u_timer, pblk_rl_u_timer,0 ); rl->rb_user_active =0 ; rl->rb_gc_active =0 ;
drivers/lightnvm/pblk.h +1 -1
@@ -797,7 +797,7 @@ void pblk_map_rq(struct pblk *pblk, struct nvm_rq *rqd, unsigned int sentry,* pblk write thread */ int pblk_write_ts (void *data); -void pblk_write_timer_fn (unsigned long data); +void pblk_write_timer_fn (struct timer_list *t);void pblk_write_should_kick (struct pblk *pblk);/*
drivers/lightnvm/rrpc.c +3 -3
@@ -267,9 +267,9 @@ static void rrpc_gc_kick(struct rrpc *rrpc)/* * timed GC every interval. */ -static void rrpc_gc_timer (unsigned long data) +static void rrpc_gc_timer (struct timer_list *t) { -struct rrpc *rrpc = (struct rrpc *)data; +struct rrpc *rrpc =from_timer (rrpc, t, gc_timer);rrpc_gc_kick (rrpc);mod_timer (&rrpc->gc_timer, jiffies +msecs_to_jiffies (10 ));
@@ -1063,7 +1063,7 @@ static int rrpc_gc_init(struct rrpc *rrpc)if (!rrpc->kgc_wq)return -ENOMEM ; -setup_timer (&rrpc->gc_timer, rrpc_gc_timer, (unsigned long )rrpc); +timer_setup (&rrpc->gc_timer, rrpc_gc_timer,0 );return 0 ; }
--
2.7.4
Jens Axboe
maintainerQuoted 2 lines · Javier González
One thing though: The patch does not apply on top of Jen's for-15/block. It is trivial, but here you have a version that applies.
Jens's...
It won't work against that tree, as it doesn't have the necessary prep patch. We can do this after the merge window opens.
Signature · 1 line
Jens Axboe
Quoted 11 lines · Jens Axboe
=20
Quoted 3 lines · On 10/25/2017 01:53 AM, Javier Gonz=C3=A1lez wrote:
One thing though: The patch does not apply on top of Jen's for-15/block. It is trivial, but here you have a version that applies.
=20
Jens's...
=20
It won't work against that tree, as it doesn't have the necessary prep patch. We can do this after the merge window opens.
Yes, I had to pick the prep patch manually to test it. Just trying to help, s= ince I had already adapted the patch...
Javier.=20=