mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
nfsd: give out fewer session slots as limit approaches
Instead of granting client's full requests until we hit our DRC size limit and then failing CREATE_SESSIONs (and hence mounts) completely, start granting clients smaller slot tables as we approach the limit. The factor chosen here is pretty much arbitrary. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
44d8660d3b
commit
de766e5704
@ -1472,6 +1472,11 @@ static u32 nfsd4_get_drc_mem(struct nfsd4_channel_attrs *ca)
|
|||||||
spin_lock(&nfsd_drc_lock);
|
spin_lock(&nfsd_drc_lock);
|
||||||
avail = min((unsigned long)NFSD_MAX_MEM_PER_SESSION,
|
avail = min((unsigned long)NFSD_MAX_MEM_PER_SESSION,
|
||||||
nfsd_drc_max_mem - nfsd_drc_mem_used);
|
nfsd_drc_max_mem - nfsd_drc_mem_used);
|
||||||
|
/*
|
||||||
|
* Never use more than a third of the remaining memory,
|
||||||
|
* unless it's the only way to give this client a slot:
|
||||||
|
*/
|
||||||
|
avail = clamp_t(int, avail, slotsize, avail/3);
|
||||||
num = min_t(int, num, avail / slotsize);
|
num = min_t(int, num, avail / slotsize);
|
||||||
nfsd_drc_mem_used += num * slotsize;
|
nfsd_drc_mem_used += num * slotsize;
|
||||||
spin_unlock(&nfsd_drc_lock);
|
spin_unlock(&nfsd_drc_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user