summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhazhismel Kumykov <khazhy@google.com>2019-09-17 15:35:33 -0400
committerMiklos Szeredi <mszeredi@redhat.com>2019-09-24 09:28:01 -0400
commitdc69e98c241e1456e37d73b862f7b8b8900ba50f (patch)
tree3c310e8f0e44315f832ef7afe4eb04d65b56300f
parent30c6a23d34cbe19162240e9f9c2c122ba807e58c (diff)
fuse: kmemcg account fs data
account per-file, dentry, and inode data blockdev/superblock and temporary per-request data was left alone, as this usually isn't accounted Reviewed-by: Shakeel Butt <shakeelb@google.com> Signed-off-by: Khazhismel Kumykov <khazhy@google.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
-rw-r--r--fs/fuse/dir.c3
-rw-r--r--fs/fuse/file.c5
-rw-r--r--fs/fuse/inode.c2
3 files changed, 6 insertions, 4 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 58557d4817e9..d572c900bb0f 100644
--- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c
@@ -279,7 +279,8 @@ invalid:
279#if BITS_PER_LONG < 64 279#if BITS_PER_LONG < 64
280static int fuse_dentry_init(struct dentry *dentry) 280static int fuse_dentry_init(struct dentry *dentry)
281{ 281{
282 dentry->d_fsdata = kzalloc(sizeof(union fuse_dentry), GFP_KERNEL); 282 dentry->d_fsdata = kzalloc(sizeof(union fuse_dentry),
283 GFP_KERNEL_ACCOUNT | __GFP_RECLAIMABLE);
283 284
284 return dentry->d_fsdata ? 0 : -ENOMEM; 285 return dentry->d_fsdata ? 0 : -ENOMEM;
285} 286}
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 8c7578b95d2c..0f0225686aee 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -63,12 +63,13 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
63{ 63{
64 struct fuse_file *ff; 64 struct fuse_file *ff;
65 65
66 ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL); 66 ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL_ACCOUNT);
67 if (unlikely(!ff)) 67 if (unlikely(!ff))
68 return NULL; 68 return NULL;
69 69
70 ff->fc = fc; 70 ff->fc = fc;
71 ff->release_args = kzalloc(sizeof(*ff->release_args), GFP_KERNEL); 71 ff->release_args = kzalloc(sizeof(*ff->release_args),
72 GFP_KERNEL_ACCOUNT);
72 if (!ff->release_args) { 73 if (!ff->release_args) {
73 kfree(ff); 74 kfree(ff);
74 return NULL; 75 return NULL;
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 10d193b24fb8..51cb471f4dc3 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -66,7 +66,7 @@ static struct file_system_type fuseblk_fs_type;
66 66
67struct fuse_forget_link *fuse_alloc_forget(void) 67struct fuse_forget_link *fuse_alloc_forget(void)
68{ 68{
69 return kzalloc(sizeof(struct fuse_forget_link), GFP_KERNEL); 69 return kzalloc(sizeof(struct fuse_forget_link), GFP_KERNEL_ACCOUNT);
70} 70}
71 71
72static struct inode *fuse_alloc_inode(struct super_block *sb) 72static struct inode *fuse_alloc_inode(struct super_block *sb)