Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bf97bc2 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4: Keep dropped state owners on the LRU list for a while



To ensure that we don't reuse their identifiers.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent c77365c9
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -521,6 +521,14 @@ struct nfs4_state_owner *nfs4_get_state_owner(struct nfs_server *server,
/**
 * nfs4_put_state_owner - Release a nfs4_state_owner
 * @sp: state owner data to release
 *
 * Note that we keep released state owners on an LRU
 * list.
 * This caches valid state owners so that they can be
 * reused, to avoid the OPEN_CONFIRM on minor version 0.
 * It also pins the uniquifier of dropped state owners for
 * a while, to ensure that those state owner names are
 * never reused.
 */
void nfs4_put_state_owner(struct nfs4_state_owner *sp)
{
@@ -530,15 +538,9 @@ void nfs4_put_state_owner(struct nfs4_state_owner *sp)
	if (!atomic_dec_and_lock(&sp->so_count, &clp->cl_lock))
		return;

	if (!RB_EMPTY_NODE(&sp->so_server_node)) {
	sp->so_expires = jiffies;
	list_add_tail(&sp->so_lru, &server->state_owners_lru);
	spin_unlock(&clp->cl_lock);
	} else {
		nfs4_remove_state_owner_locked(sp);
		spin_unlock(&clp->cl_lock);
		nfs4_free_state_owner(sp);
	}
}

/**