diff options
author | Tahsin Erdogan <tahsin@google.com> | 2017-05-24 18:24:07 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-05-24 18:24:07 -0400 |
commit | b8cb5a545c3dd8b975aad19ea020eabe0a888e8d (patch) | |
tree | 922a559467f7a606bede9f9892731ec414ea9dc4 /include | |
parent | c41d342b39f15acbdc61948bab0cb3c567ec992a (diff) | |
download | linux-b8cb5a545c3dd8b975aad19ea020eabe0a888e8d.tar.gz linux-b8cb5a545c3dd8b975aad19ea020eabe0a888e8d.tar.bz2 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 'include')
-rw-r--r-- | include/linux/quotaops.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 9c6f768b7d32..dda22f45fc1b 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h @@ -44,6 +44,7 @@ void inode_sub_rsv_space(struct inode *inode, qsize_t number); void inode_reclaim_rsv_space(struct inode *inode, qsize_t number); int dquot_initialize(struct inode *inode); +bool dquot_initialize_needed(struct inode *inode); void dquot_drop(struct inode *inode); struct dquot *dqget(struct super_block *sb, struct kqid qid); static inline struct dquot *dqgrab(struct dquot *dquot) @@ -207,6 +208,11 @@ static inline int dquot_initialize(struct inode *inode) return 0; } +static inline bool dquot_initialize_needed(struct inode *inode) +{ + return false; +} + static inline void dquot_drop(struct inode *inode) { } |