> On Jul 18, 2023, at 2:38 AM, NeilBrown <neilb@xxxxxxx> wrote: > > This code .... grew a bit since my previous pencil-sketch code. > > The goal is really the final patch: using a llist without spinlocks to > handle dispatch of idle threads. To get there I found it necessary - or > at least helpful - to do a lot of refactoring. > > This code passes some basic tests, but I haven't push it hard yet. > > Even if other aren't convinced that llists are the best solution, I > think a lot of the refactoring is this valuable. Some of these are indeed immediately appealing. Let's work on getting those into the code base before we decide on the scheduler changes. > Comments welcome, > Thanks, > NeilBrown > > --- > > NeilBr own (14): > lockd: remove SIGKILL handling. > nfsd: don't allow nfsd threads to be signalled. > SUNRPC: call svc_process() from svc_recv(). > SUNRPC: change svc_recv() to return void. > SUNRPC: remove timeout arg from svc_recv() > SUNRPC: change various server-side #defines to enum > SUNRPC: refactor svc_recv() > SUNRPC: integrate back-channel processing with svc_recv() and svc_process() > SUNRPC: change how svc threads are asked to exit. > SUNRPC: change svc_pool_wake_idle_thread() to return nothing. > SUNRPC: add list of idle threads > SUNRPC: discard SP_CONGESTED > SUNRPC: change service idle list to be an llist > SUNRPC: only have one thread waking up at a time > > > fs/lockd/svc.c | 49 ++----- > fs/lockd/svclock.c | 9 +- > fs/nfs/callback.c | 59 +------- > fs/nfsd/nfs4proc.c | 10 +- > fs/nfsd/nfssvc.c | 22 +-- > include/linux/llist.h | 2 + > include/linux/lockd/lockd.h | 4 +- > include/linux/sunrpc/cache.h | 11 +- > include/linux/sunrpc/svc.h | 87 +++++++++--- > include/linux/sunrpc/svc_xprt.h | 39 +++--- > include/linux/sunrpc/svcauth.h | 29 ++-- > include/linux/sunrpc/svcsock.h | 2 +- > include/linux/sunrpc/xprtsock.h | 25 ++-- > include/trace/events/sunrpc.h | 5 +- > lib/llist.c | 27 ++++ > net/sunrpc/backchannel_rqst.c | 8 +- > net/sunrpc/svc.c | 71 ++++------ > net/sunrpc/svc_xprt.c | 226 ++++++++++++++++-------------- > net/sunrpc/xprtrdma/backchannel.c | 2 +- > 19 files changed, 347 insertions(+), 340 deletions(-) > > -- > Signature > -- Chuck Lever