Re: [PATCH 02/10] writeback: switch to per-bdi threads for flushingdata

From: Artem Bityutskiy
Date: Wed Jul 08 2009 - 00:48:32 EST


Zhang, Yanmin wrote:
+ list_for_each_entry_safe(bdi, tmp, &bdi_list, bdi_list) {
+ if (bdi->task || !bdi_has_dirty_io(bdi))
+ continue;
+
+ bdi_add_default_flusher_task(bdi);
+ }
+
+ set_current_state(TASK_INTERRUPTIBLE);
+
What happens if we are preempted here? Since we have TASK_INTERRUPTIBLE
state, we will not come back unless some other task wakes us up. Who
would wake us up in this case?
If it's preempted (CONFIG_PREEMPT=y), it will stay in runqueue. Only when
it calls schedule initiatively or calls schedule when exiting to user space,
it will be moved out of runqueue if its state isn't TASK_RUNNING.

See flag PREEMPT_ACTIVE.

OK, thanks for the hint!

--
Best Regards,
Artem Bityutskiy (ÐÑÑÑÐ ÐÐÑÑÑÐÐÐ)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/