From: "J. Bruce Fields" <bfields@xxxxxxxxxx> These patches allow a caller to create its own kthreadd. The motivation is file delegations: currently any write operation from a client breaks all delegations, even delegations held by the same client. To fix that, we need to know which client is performing a given operation. So, we let nfsd put all the nfsd threads into the same thread group (by spawning them from its own private kthreadd), then patch the delegation code to treat delegation breaks from the same thread group as not conflicting, and then leave it to nfsd to sort out conflicts among its own clients. Those patches are in: git://linux-nfs.org/~bfields/linux.git deleg-fix-self-conflicts This was an idea from Trond. Part of his motivation was that it could work for userspace servers (like Ganesha and Samba) as well. (We don't currently let them request delegations, but probably will some day--it shouldn't be difficult.) Previously I considered instead adding a new field somewhere in the struct task. That might require a new system call to expose to user space. Or we might be able to put this in a keyring, if David Howells thought that would work. Before that I tried passing the identity of the breaker explicitly, but that looks like it would require passing the new argument around to huge swaths of the VFS. Anyway, does this multiple kthreadd approach look reasonable? (If so, who should handle the patches?) --b. J. Bruce Fields (4): kthreads: minor kthreadd refactoring kthreads: Simplify tsk_fork_get_node kthreads: allow multiple kthreadd's kthreads: allow cloning threads with different flags include/linux/kthread.h | 21 +++++- init/init_task.c | 3 + init/main.c | 4 +- kernel/fork.c | 4 ++ kernel/kthread.c | 140 +++++++++++++++++++++++++++++----------- 5 files changed, 132 insertions(+), 40 deletions(-) -- 2.26.2