[PATCH v5 0/5] sunrpc: hardcode pool_mode to pernode, remove other modes

Jeff Layton <[email protected]>
Newsgroups gmane.linux.nfs,gmane.linux.kernel
Message-ID <[email protected]>
This has a few small fixes and comment cleanups and also implements
Neil's suggestion to remove serv.sv_nrpools:

Patches #1 and #3 address what is a shortcoming of the existing code --
namely that the server can be configured to schedule RPCs to pools with
no threads in them.

The first patch addresses this problem: if the chosen pool has no
threads, then choose another that does.

The third patch tries to prevent this situation in the
auto-thread-placement case by ensuring that each populated node has at
least one thread.

The last two patches implement Neil's suggestion to eliminate
serv.sv_nrpools. This has the side effect of getting the modulus out of
the svc_pool_for_cpu() hotpath as well.

Signed-off-by: Jeff Layton <[email protected]>
---
Changes in v5:
- Expand patch to eliminate modulus to also eliminate serv.sv_nrpools field
- Revised comments in svc_pool_for_cpu()
- Link to v4: https://lore.kernel.org/r/20260701-sunrpc-pool-mode-v4-0-b3d867e4c8f9-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

Changes in v4:
- Drop 5/4 RCU patch
- Only let pooled services consult the map
- Comment and commit log fixes
- Link to v3: https://lore.kernel.org/r/20260629-sunrpc-pool-mode-v3-0-d92676606dfd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

Changes in v3:
- Add patch to ensure that we don't route requests to empty pools
- When auto-distributing threads, always create at least one thread per populated pool
- Use sysfs_match_string for the module parameter
- Reword deprecation printk to be more vague about removal
- Explicitly set m_count == 0 in svc_pool_map_get()
- Optimize svc_pool_for_cpu() by eliminating modulus ops
- Link to v2: https://lore.kernel.org/r/20260625-sunrpc-pool-mode-v2-1-4f512b6e1ee8-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

Changes in v2:
- Accept any previously-accepted setting for pool_mode
- Link to v1: https://lore.kernel.org/r/20260423-sunrpc-pool-mode-v1-1-b7f20e35749b-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org

---
Jeff Layton (5):
      sunrpc: route to a populated pool in svc_pool_for_cpu()
      sunrpc: hardcode pool_mode to pernode, remove other modes
      sunrpc: guarantee a thread per pool when auto-distributing
      sunrpc: tear down pool counters before dropping the pool map reference
      sunrpc: derive the pool count instead of caching it in sv_nrpools

 Documentation/admin-guide/kernel-parameters.txt |  20 +-
 fs/nfsd/nfsctl.c                                |   2 +-
 fs/nfsd/nfssvc.c                                |  10 +-
 include/linux/sunrpc/svc.h                      |   2 +-
 net/sunrpc/svc.c                                | 355 +++++++++---------------
 net/sunrpc/svc_xprt.c                           |   6 +-
 6 files changed, 152 insertions(+), 243 deletions(-)
---
base-commit: ee6ae4a6bf3565b880dfb420017337475dfbc9ea
change-id: 20260423-sunrpc-pool-mode-3e6b56320dc4

Best regards,
-- 
Jeff Layton <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.