On Thu, 16 Aug 2012 15:10:18 -0400 "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote: > On Thu, Aug 02, 2012 at 10:04:05AM +1000, NeilBrown wrote: > > I never liked that fact that stopping the last thread did something extra. > > So when I added the ability to control the number of threads via sysfs I made > > (You meant nfsd, not sysfs, right? Or is there some interface I'm > overlooking?) Right. > > > sure that it *only* controlled the number of threads. However I kept the > > legacy behaviour that sending SIGKILL to the nfsd threads would also unexport > > things. Obviously I should have documented this better. > > > > The more I think out it, the more I'd really like to go back to that. It > > really is the *right* thing to do. > ... > > > > 1/ iterate through all no-sleeping threads setting a flag an increasing a > > > > counter. > > > > 2/ when a thread completes current request, if test_and_clear the flag, it > > > > atomic_dec_and_test the counter and then wakes up some wait_queue_head. > > > > 3/ 'flush'ing thread waits on the waut_queue_head for the counter to be 0. > > > > > > > > If you don't hate it I could possibly even provide some code. > > By the way, are you still looking into one of those approaches? Not yet. Other things got in the way. I made a note to remind me when room appears in my schedule. :-) NeilBrown
Attachment:
signature.asc
Description: PGP signature