mbox series

[00/19,v2] SUNRPC: clean up server thread management

Message ID 163763078330.7284.10141477742275086758.stgit@noble.brown (mailing list archive)
Headers show
Series SUNRPC: clean up server thread management | expand

Message

NeilBrown Nov. 23, 2021, 1:29 a.m. UTC
This is a revision of my series for cleaning up server thread
management.
Currently lockd, nfsd, and nfs-callback all manage threads slightly
differently.  This series unifies them.

Changes since first series include:
  - minor bug fixes
  - kernel-doc comments for new functions
  - split first patch into 3, and make the bugfix a separate patch
  - fix management of pool_maps so lockd can usse svc_set_num_threads
    safely
  - switch nfs-callback to not request a 'pooled' service.

NeilBrown


---

NeilBrown (19):
      SUNRPC/NFSD: clean up get/put functions.
      NFSD: handle error better in write_ports_addfd()
      SUNRPC: stop using ->sv_nrthreads as a refcount
      nfsd: make nfsd_stats.th_cnt atomic_t
      SUNRPC: use sv_lock to protect updates to sv_nrthreads.
      NFSD: narrow nfsd_mutex protection in nfsd thread
      NFSD: Make it possible to use svc_set_num_threads_sync
      SUNRPC: discard svo_setup and rename svc_set_num_threads_sync()
      NFSD: simplify locking for network notifier.
      lockd: introduce nlmsvc_serv
      lockd: simplify management of network status notifiers
      lockd: move lockd_start_svc() call into lockd_create_svc()
      lockd: move svc_exit_thread() into the thread
      lockd: introduce lockd_put()
      lockd: rename lockd_create_svc() to lockd_get()
      SUNRPC: move the pool_map definitions (back) into svc.c
      SUNRPC: always treat sv_nrpools==1 as "not pooled"
      lockd: use svc_set_num_threads() for thread start and stop
      NFS: switch the callback service back to non-pooled.


 fs/lockd/svc.c             | 194 ++++++++++++-------------------------
 fs/nfs/callback.c          |  12 +--
 fs/nfsd/netns.h            |  13 +--
 fs/nfsd/nfsctl.c           |  24 ++---
 fs/nfsd/nfssvc.c           | 139 +++++++++++++-------------
 fs/nfsd/stats.c            |   2 +-
 fs/nfsd/stats.h            |   4 +-
 include/linux/sunrpc/svc.h |  58 ++++-------
 net/sunrpc/svc.c           | 166 ++++++++++++++-----------------
 9 files changed, 248 insertions(+), 364 deletions(-)

--
Signature

Comments

J. Bruce Fields Nov. 23, 2021, 2:49 p.m. UTC | #1
On Tue, Nov 23, 2021 at 12:29:35PM +1100, NeilBrown wrote:
> This is a revision of my series for cleaning up server thread
> management.

For what it's worth, this version now passes my usual regression tests.

--b.

> Currently lockd, nfsd, and nfs-callback all manage threads slightly
> differently.  This series unifies them.
> 
> Changes since first series include:
>   - minor bug fixes
>   - kernel-doc comments for new functions
>   - split first patch into 3, and make the bugfix a separate patch
>   - fix management of pool_maps so lockd can usse svc_set_num_threads
>     safely
>   - switch nfs-callback to not request a 'pooled' service.
> 
> NeilBrown
> 
> 
> ---
> 
> NeilBrown (19):
>       SUNRPC/NFSD: clean up get/put functions.
>       NFSD: handle error better in write_ports_addfd()
>       SUNRPC: stop using ->sv_nrthreads as a refcount
>       nfsd: make nfsd_stats.th_cnt atomic_t
>       SUNRPC: use sv_lock to protect updates to sv_nrthreads.
>       NFSD: narrow nfsd_mutex protection in nfsd thread
>       NFSD: Make it possible to use svc_set_num_threads_sync
>       SUNRPC: discard svo_setup and rename svc_set_num_threads_sync()
>       NFSD: simplify locking for network notifier.
>       lockd: introduce nlmsvc_serv
>       lockd: simplify management of network status notifiers
>       lockd: move lockd_start_svc() call into lockd_create_svc()
>       lockd: move svc_exit_thread() into the thread
>       lockd: introduce lockd_put()
>       lockd: rename lockd_create_svc() to lockd_get()
>       SUNRPC: move the pool_map definitions (back) into svc.c
>       SUNRPC: always treat sv_nrpools==1 as "not pooled"
>       lockd: use svc_set_num_threads() for thread start and stop
>       NFS: switch the callback service back to non-pooled.
> 
> 
>  fs/lockd/svc.c             | 194 ++++++++++++-------------------------
>  fs/nfs/callback.c          |  12 +--
>  fs/nfsd/netns.h            |  13 +--
>  fs/nfsd/nfsctl.c           |  24 ++---
>  fs/nfsd/nfssvc.c           | 139 +++++++++++++-------------
>  fs/nfsd/stats.c            |   2 +-
>  fs/nfsd/stats.h            |   4 +-
>  include/linux/sunrpc/svc.h |  58 ++++-------
>  net/sunrpc/svc.c           | 166 ++++++++++++++-----------------
>  9 files changed, 248 insertions(+), 364 deletions(-)
> 
> --
> Signature
Chuck Lever Nov. 24, 2021, 6:42 p.m. UTC | #2
> On Nov 23, 2021, at 9:49 AM, J. Bruce Fields <bfields@fieldses.org> wrote:
> 
> On Tue, Nov 23, 2021 at 12:29:35PM +1100, NeilBrown wrote:
>> This is a revision of my series for cleaning up server thread
>> management.
> 
> For what it's worth, this version now passes my usual regression tests.

Likewise, I tested with both TCP and RDMA.


> --b.
> 
>> Currently lockd, nfsd, and nfs-callback all manage threads slightly
>> differently.  This series unifies them.
>> 
>> Changes since first series include:
>>  - minor bug fixes
>>  - kernel-doc comments for new functions
>>  - split first patch into 3, and make the bugfix a separate patch
>>  - fix management of pool_maps so lockd can usse svc_set_num_threads
>>    safely
>>  - switch nfs-callback to not request a 'pooled' service.
>> 
>> NeilBrown
>> 
>> 
>> ---
>> 
>> NeilBrown (19):
>>      SUNRPC/NFSD: clean up get/put functions.
>>      NFSD: handle error better in write_ports_addfd()
>>      SUNRPC: stop using ->sv_nrthreads as a refcount
>>      nfsd: make nfsd_stats.th_cnt atomic_t
>>      SUNRPC: use sv_lock to protect updates to sv_nrthreads.
>>      NFSD: narrow nfsd_mutex protection in nfsd thread
>>      NFSD: Make it possible to use svc_set_num_threads_sync
>>      SUNRPC: discard svo_setup and rename svc_set_num_threads_sync()
>>      NFSD: simplify locking for network notifier.
>>      lockd: introduce nlmsvc_serv
>>      lockd: simplify management of network status notifiers
>>      lockd: move lockd_start_svc() call into lockd_create_svc()
>>      lockd: move svc_exit_thread() into the thread
>>      lockd: introduce lockd_put()
>>      lockd: rename lockd_create_svc() to lockd_get()
>>      SUNRPC: move the pool_map definitions (back) into svc.c
>>      SUNRPC: always treat sv_nrpools==1 as "not pooled"
>>      lockd: use svc_set_num_threads() for thread start and stop
>>      NFS: switch the callback service back to non-pooled.
>> 
>> 
>> fs/lockd/svc.c             | 194 ++++++++++++-------------------------
>> fs/nfs/callback.c          |  12 +--
>> fs/nfsd/netns.h            |  13 +--
>> fs/nfsd/nfsctl.c           |  24 ++---
>> fs/nfsd/nfssvc.c           | 139 +++++++++++++-------------
>> fs/nfsd/stats.c            |   2 +-
>> fs/nfsd/stats.h            |   4 +-
>> include/linux/sunrpc/svc.h |  58 ++++-------
>> net/sunrpc/svc.c           | 166 ++++++++++++++-----------------
>> 9 files changed, 248 insertions(+), 364 deletions(-)
>> 
>> --
>> Signature

--
Chuck Lever