diff options
author | Jan Kara <jack@suse.cz> | 2011-09-02 17:04:10 -0600 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2011-09-02 17:17:02 -0600 |
commit | 09f40f98bfa2ac22a332a713629a2f8f92896834 (patch) | |
tree | 92fac9d374b195845cd859206c7dfd110fce21fb | |
parent | 5a042aa4b8e994a15d2c2ee750219971f0ab3905 (diff) |
mm: Add comment explaining task state setting in bdi_forker_thread()
CC: Wu Fengguang <fengguang.wu@intel.com>
CC: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
-rw-r--r-- | mm/backing-dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 94a047bb6c39..a87da524a4a0 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -401,6 +401,13 @@ static int bdi_forker_thread(void *ptr) } spin_lock_bh(&bdi_lock); + /* + * In the following loop we are going to check whether we have + * some work to do without any synchronization with tasks + * waking us up to do work for them. So we have to set task + * state already here so that we don't miss wakeups coming + * after we verify some condition. + */ set_current_state(TASK_INTERRUPTIBLE); list_for_each_entry(bdi, &bdi_list, bdi_list) { |