diff options
author | Tahsin Erdogan <tahsin@google.com> | 2017-05-25 00:24:07 +0200 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-05-25 00:24:07 +0200 |
commit | b8cb5a545c3dd8b975aad19ea020eabe0a888e8d (patch) | |
tree | 922a559467f7a606bede9f9892731ec414ea9dc4 /fs/ext4/acl.c | |
parent | ext4: remove redundant check for encrypted file on dio write path (diff) | |
download | linux-b8cb5a545c3dd8b975aad19ea020eabe0a888e8d.tar.xz linux-b8cb5a545c3dd8b975aad19ea020eabe0a888e8d.zip |
ext4: fix quota charging for shared xattr blocks
ext4_xattr_block_set() calls dquot_alloc_block() to charge for an xattr
block when new references are made. However if dquot_initialize() hasn't
been called on an inode, request for charging is effectively ignored
because ext4_inode_info->i_dquot is not initialized yet.
Add dquot_initialize() to call paths that lead to ext4_xattr_block_set().
Signed-off-by: Tahsin Erdogan <tahsin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ext4/acl.c')
-rw-r--r-- | fs/ext4/acl.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c index fd389935ecd1..3ec0e46de95f 100644 --- a/fs/ext4/acl.c +++ b/fs/ext4/acl.c @@ -4,6 +4,7 @@ * Copyright (C) 2001-2003 Andreas Gruenbacher, <agruen@suse.de> */ +#include <linux/quotaops.h> #include "ext4_jbd2.h" #include "ext4.h" #include "xattr.h" @@ -232,6 +233,9 @@ ext4_set_acl(struct inode *inode, struct posix_acl *acl, int type) handle_t *handle; int error, retries = 0; + error = dquot_initialize(inode); + if (error) + return error; retry: handle = ext4_journal_start(inode, EXT4_HT_XATTR, ext4_jbd2_credits_xattr(inode)); |