fs/nilfs2: Convert timers to use timer_setup()
PATCH 1/1 fs/nilfs2: 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 requires adding a pointer to hold the timer's target task, as the lifetime of sc_task doesn't appear to match the timer's task.
--- fs/nilfs2/segment.c | 11 +++++------ fs/nilfs2/segment.h | 1 + 2 files changed, 6 insertions(+), 6 deletions(-)
fs/nilfs2/segment.c +5 -6
@@ -2404,11 +2404,11 @@ static int nilfs_segctor_construct(struct nilfs_sc_info *sci, int mode)return err; } -static void nilfs_construction_timeout (unsigned long data) +static void nilfs_construction_timeout (struct timer_list *t) { -struct task_struct *p = (struct task_struct *)data; +struct nilfs_sc_info *sci =from_timer (sci, t, sc_timer); -wake_up_process (p); +wake_up_process (sci->sc_timer_task); } static void
@@ -2546,8 +2546,7 @@ static int nilfs_segctor_thread(void *arg)struct the_nilfs *nilfs = sci->sc_super->s_fs_info;int timeout =0 ; - sci->sc_timer.data = (unsigned long )current; - sci->sc_timer.function = nilfs_construction_timeout; + sci->sc_timer_task = current;/* start sync. */ sci->sc_task = current;
@@ -2678,7 +2677,7 @@ static struct nilfs_sc_info *nilfs_segctor_new(struct super_block *sb,INIT_LIST_HEAD (&sci->sc_gc_inodes);INIT_LIST_HEAD (&sci->sc_iput_queue);INIT_WORK (&sci->sc_iput_work, nilfs_iput_work_func); -init_timer (&sci->sc_timer); +timer_setup (&sci->sc_timer, nilfs_construction_timeout,0 ); sci->sc_interval =HZ *NILFS_SC_DEFAULT_TIMEOUT ; sci->sc_mjcp_freq =HZ *NILFS_SC_DEFAULT_SR_FREQ ;
fs/nilfs2/segment.h +1 -0
@@ -180,6 +180,7 @@ struct nilfs_sc_info {unsigned long sc_watermark;struct timer_list sc_timer; +struct task_struct *sc_timer_task;struct task_struct *sc_task; };
Signature · 10 lines
2.7.4 -- Kees Cook Pixel Security -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
2017-10-17 8:59 GMT+09:00 Kees Cook <[email protected]>:
Quoted 9 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 requires adding a pointer to hold the timer's target task, as the lifetime ofsc_taskdoesn't appear to match the timer's task.Cc Ryusuke Konishi <[email protected]>Signed-off-by Kees Cook <[email protected]>
Looks good.
Thanks,
Ryusuke Konishi
Quoted 59 lines
--- fs/nilfs2/segment.c | 11 +++++------ fs/nilfs2/segment.h | 1 + 2 files changed, 6 insertions(+), 6 deletions(-)fs/nilfs2/segment.c +5
-6@@ -2404,11 +2404,11 @@ static int nilfs_segctor_construct(struct nilfs_sc_info *sci, int mode)return err; } -static void nilfs_construction_timeout (unsigned long data) +static void nilfs_construction_timeout (struct timer_list *t) { -struct task_struct *p = (struct task_struct *)data; +struct nilfs_sc_info *sci =from_timer (sci, t, sc_timer); -wake_up_process (p); +wake_up_process (sci->sc_timer_task); } static void@@ -2546,8 +2546,7 @@ static int nilfs_segctor_thread(void *arg)struct the_nilfs *nilfs = sci->sc_super->s_fs_info;int timeout =0 ; - sci->sc_timer.data = (unsigned long )current; - sci->sc_timer.function = nilfs_construction_timeout; + sci->sc_timer_task = current;/* start sync. */ sci->sc_task = current;@@ -2678,7 +2677,7 @@ static struct nilfs_sc_info *nilfs_segctor_new(struct super_block *sb,INIT_LIST_HEAD (&sci->sc_gc_inodes);INIT_LIST_HEAD (&sci->sc_iput_queue);INIT_WORK (&sci->sc_iput_work, nilfs_iput_work_func); -init_timer (&sci->sc_timer); +timer_setup (&sci->sc_timer, nilfs_construction_timeout,0 ); sci->sc_interval =HZ *NILFS_SC_DEFAULT_TIMEOUT ; sci->sc_mjcp_freq =HZ *NILFS_SC_DEFAULT_SR_FREQ ;fs/nilfs2/segment.h +1
-1@@ -180,6 +180,7 @@ struct nilfs_sc_info {unsigned long sc_watermark;struct timer_list sc_timer; +struct task_struct *sc_timer_task;struct task_struct *sc_task; }; --2.7.4
Quoted 3 lines
--
Kees Cook
Pixel Security
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html