summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2011-09-03 01:04:10 +0200
committerJens Axboe <jaxboe@fusionio.com>2011-09-03 01:17:02 +0200
commit09f40f98bfa2ac22a332a713629a2f8f92896834 (patch)
tree92fac9d374b195845cd859206c7dfd110fce21fb
parentmm: Cleanup clearing of BDI_pending bit in bdi_forker_thread() (diff)
downloadlinux-09f40f98bfa2ac22a332a713629a2f8f92896834.tar.xz
linux-09f40f98bfa2ac22a332a713629a2f8f92896834.zip
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.c7
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) {