提交 dd829c45 编写于 作者: J J. Bruce Fields

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: NJ. Bruce Fields <bfields@citi.umich.edu>
上级 dc7a0816
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册