Commit 6cd60f42 authored by Jeff Layton's avatar Jeff Layton Committed by Chuck Lever
Browse files

sunrpc: track the max number of requested threads in a pool



The kernel currently tracks the number of threads running in a pool in
the "sp_nrthreads" field. In the future, where threads are dynamically
spun up and down, it'll be necessary to keep track of the maximum number
of requested threads separately from the actual number running.

Add a pool->sp_nrthrmax parameter to track this. When userland changes
the number of threads in a pool, update that value accordingly.

Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 2c01f0cf
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -35,8 +35,9 @@
 */
struct svc_pool {
	unsigned int		sp_id;		/* pool id; also node id on NUMA */
	unsigned int		sp_nrthreads;	/* # of threads currently running in pool */
	unsigned int		sp_nrthrmax;	/* Max requested number of threads in pool */
	struct lwq		sp_xprts;	/* pending transports */
	unsigned int		sp_nrthreads;	/* # of threads in pool */
	struct list_head	sp_all_threads;	/* all server threads */
	struct llist_head	sp_idle_threads; /* idle server threads */

+1 −0
Original line number Diff line number Diff line
@@ -839,6 +839,7 @@ svc_set_pool_threads(struct svc_serv *serv, struct svc_pool *pool,
	if (!pool)
		return -EINVAL;

	pool->sp_nrthrmax = nrservs;
	delta -= pool->sp_nrthreads;

	if (delta > 0)