Messages in this thread | | | Date | Sat, 12 May 2007 18:18:13 +0400 | From | Oleg Nesterov <> | Subject | Re: [PATCH 1/7] Freezer: Read PF_BORROWED_MM in a nonracy way |
| |
On 05/12, Rafael J. Wysocki wrote: > > ... user space tasks that call deamonize() can also be frozen prematurely. > We didn't take this possibility into consideration before, which was obviously > wrong.
No, no, sorry for the confusion. User space tasks never call deamonize().
Kernel threads call daemonize, because when we are doing kernel_thread() on behalf of user-space task, the new kernel thread (child) shares its ->mm with the caller (parent). So it is considered as "is_user_space()" until it does daemonize().
Definitely, is_user_space() should have another name.
When a user space task exits, it does exit_mm() and becomes "a kernel thread" from the freezer POV. In its current from, freezer can do nothing with this. The exiting task won't call try_to_freeze() after that, so try_to_freeze_tasks() will wait until it dissapears (actually, until it calls exit_notify(), note the ->exit_state check in freezeable()).
I do not think we can improve things if exit_mm() clears TIF_FREEZING. We should clear TIF_FREEZING when we set PF_NOFREEZE, I think. This was discussed before iirc, but I forgot the result.
Oleg.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |