- hiroyasu ohyama
I think it doesn't have to initialize function callback function which is member of pdflush_work discripter twice and It should do that in head of in infinity loop before calling schedule(). Because the latter initialization which is executed at the 143th line of the mm/pdflush.c has done in order to be reused. And I think if it initialize that in the head of loop, the former which is initialized at the 96th line can omit doing that.
---
*** mm/pdflush_bck.c 2007-10-28 15:51:08.000000000 +0900
--- mm/pdflush.c 2007-10-28 15:51:28.000000000 +0900
***************
*** 93,99 ****
{
current->flags |= PF_FLUSHER | PF_SWAPWRITE;
set_freezable();
- my_work->fn = NULL;
my_work->who = current;
INIT_LIST_HEAD(&my_work->list);
--- 93,98 ----
***************
*** 102,107 ****
--- 101,107 ----
for ( ; ; ) {
struct pdflush_work *pdf;
+ my_work->fn = NULL;
set_current_state(TASK_INTERRUPTIBLE);
list_move(&my_work->list, &pdflush_list);
my_work->when_i_went_to_sleep = jiffies;
***************
*** 140,146 ****
}
spin_lock_irq(&pdflush_lock);
- my_work->fn = NULL;
/*
* Thread destruction: For how long has the sleepiest
--- 140,145 ----