On Mon, Feb 11, 2019 at 10:58:04AM -0500, J. Bruce Fields wrote: > On Sat, Feb 09, 2019 at 07:43:54AM -0500, Jeff Layton wrote: > > On Fri, 2019-02-08 at 15:10 -0500, J. Bruce Fields wrote: > > > From: "J. Bruce Fields" <bfields@xxxxxxxxxx> > > > > > > These patches allow NFSv4 clients holding delegations to keep them when > > > the operation that would break a delegation comes from the same client. > > > > > > To do that, we somehow need to pass the identity of the > > > delegation-breaker down through the VFS. > > > > > > This series uses the tgid, a solution suggested by Trond. To do that we > > > need nfsd tasks to share the same tgid. I do that by extending the > > > kthread code slightly to allow knfsd to run the kthreadd main loop in a > > > task of its own, and spawn its server threads off of that task. > ... > > Nice work! I like the basic idea, the changes seem to be well-organized, > > and the tgid semantics are clear and make sense. > > > > Would this preclude us from moving to a workqueue-based model for knfsd > > later? It's likely to still be worth it, but it'd be good to understand > > the potential drawbacks. > > I was wondering about that too, but I haven't looked into it yet. > Workqueues look a lot more complicated than kthreads. I spent some time staring, and... I still don't really understand the workqueue code. But if this kthread_group[*] code is acceptable than I can't see why it shouldn't be possible to create a workqueue whose work items are all handled by threads spawned form the same kthread_group. --b. [*] Open to suggestions of better names.