Re: [PATCH 00/14] Refactor SUNRPC svc thread code, and use llist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 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






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux