Commit 358dd55a authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds
Browse files

[PATCH] knfsd: nfsd4: grant delegations more frequently



Keep unused openowners around for at least one lease period, to avoid the need
for as many open confirmations and to allow handing out more delegations.

Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ef0f3390
Loading
Loading
Loading
Loading
+2 −11
Original line number Diff line number Diff line
@@ -1199,8 +1199,7 @@ move_to_close_lru(struct nfs4_stateowner *sop)
{
	dprintk("NFSD: move_to_close_lru nfs4_stateowner %p\n", sop);

	unhash_stateowner(sop);
	list_add_tail(&sop->so_close_lru, &close_lru);
	list_move_tail(&sop->so_close_lru, &close_lru);
	sop->so_time = get_seconds();
}

@@ -1929,8 +1928,7 @@ nfs4_laundromat(void)
		}
		dprintk("NFSD: purging unused open stateowner (so_id %d)\n",
			sop->so_id);
		list_del(&sop->so_close_lru);
		nfs4_put_stateowner(sop);
		release_stateowner(sop);
	}
	if (clientid_val < NFSD_LAUNDROMAT_MINTIMEOUT)
		clientid_val = NFSD_LAUNDROMAT_MINTIMEOUT;
@@ -3218,15 +3216,8 @@ __nfs4_state_shutdown(void)
	int i;
	struct nfs4_client *clp = NULL;
	struct nfs4_delegation *dp = NULL;
	struct nfs4_stateowner *sop = NULL;
	struct list_head *pos, *next, reaplist;

	list_for_each_safe(pos, next, &close_lru) {
		sop = list_entry(pos, struct nfs4_stateowner, so_close_lru);
		list_del(&sop->so_close_lru);
		nfs4_put_stateowner(sop);
	}

	for (i = 0; i < CLIENT_HASH_SIZE; i++) {
		while (!list_empty(&conf_id_hashtbl[i])) {
			clp = list_entry(conf_id_hashtbl[i].next, struct nfs4_client, cl_idhash);