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

Commit dd829c45 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4.1: fix session memory use calculation



Unbalanced calculations on creation and destruction of sessions could
cause our estimate of cache memory used to become negative, sometimes
resulting in spurious SERVERFAULT returns to client CREATE_SESSION
requests.

Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent dc7a0816
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -629,10 +629,13 @@ void
free_session(struct kref *kref)
{
	struct nfsd4_session *ses;
	int mem;

	ses = container_of(kref, struct nfsd4_session, se_ref);
	spin_lock(&nfsd_drc_lock);
	nfsd_drc_mem_used -= ses->se_fchannel.maxreqs * NFSD_SLOT_CACHE_SIZE;
	mem = ses->se_fchannel.maxreqs
		* (ses->se_fchannel.maxresp_cached - NFSD_MIN_HDR_SEQ_SZ);
	nfsd_drc_mem_used -= mem;
	spin_unlock(&nfsd_drc_lock);
	free_session_slots(ses);
	kfree(ses);