Commit 9c00fd9a authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: Charge NFSv4 open state trackers to kmemcg

Allow kmemcg to limit the number of NFSv4 delegation, lock and open
state trackers.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent d7867712
...@@ -439,7 +439,7 @@ int nfs_inode_set_delegation(struct inode *inode, const struct cred *cred, ...@@ -439,7 +439,7 @@ int nfs_inode_set_delegation(struct inode *inode, const struct cred *cred,
struct nfs_delegation *freeme = NULL; struct nfs_delegation *freeme = NULL;
int status = 0; int status = 0;
delegation = kmalloc(sizeof(*delegation), GFP_NOFS); delegation = kmalloc(sizeof(*delegation), GFP_KERNEL_ACCOUNT);
if (delegation == NULL) if (delegation == NULL)
return -ENOMEM; return -ENOMEM;
nfs4_stateid_copy(&delegation->stateid, stateid); nfs4_stateid_copy(&delegation->stateid, stateid);
......
...@@ -667,7 +667,7 @@ nfs4_alloc_open_state(void) ...@@ -667,7 +667,7 @@ nfs4_alloc_open_state(void)
{ {
struct nfs4_state *state; struct nfs4_state *state;
state = kzalloc(sizeof(*state), GFP_NOFS); state = kzalloc(sizeof(*state), GFP_KERNEL_ACCOUNT);
if (!state) if (!state)
return NULL; return NULL;
refcount_set(&state->count, 1); refcount_set(&state->count, 1);
...@@ -870,14 +870,15 @@ static struct nfs4_lock_state *nfs4_alloc_lock_state(struct nfs4_state *state, f ...@@ -870,14 +870,15 @@ static struct nfs4_lock_state *nfs4_alloc_lock_state(struct nfs4_state *state, f
struct nfs4_lock_state *lsp; struct nfs4_lock_state *lsp;
struct nfs_server *server = state->owner->so_server; struct nfs_server *server = state->owner->so_server;
lsp = kzalloc(sizeof(*lsp), GFP_NOFS); lsp = kzalloc(sizeof(*lsp), GFP_KERNEL_ACCOUNT);
if (lsp == NULL) if (lsp == NULL)
return NULL; return NULL;
nfs4_init_seqid_counter(&lsp->ls_seqid); nfs4_init_seqid_counter(&lsp->ls_seqid);
refcount_set(&lsp->ls_count, 1); refcount_set(&lsp->ls_count, 1);
lsp->ls_state = state; lsp->ls_state = state;
lsp->ls_owner = fl_owner; lsp->ls_owner = fl_owner;
lsp->ls_seqid.owner_id = ida_simple_get(&server->lockowner_id, 0, 0, GFP_NOFS); lsp->ls_seqid.owner_id = ida_simple_get(&server->lockowner_id,
0, 0, GFP_KERNEL_ACCOUNT);
if (lsp->ls_seqid.owner_id < 0) if (lsp->ls_seqid.owner_id < 0)
goto out_free; goto out_free;
INIT_LIST_HEAD(&lsp->ls_locks); INIT_LIST_HEAD(&lsp->ls_locks);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment