diff options
Diffstat (limited to 'fs/ext4/xattr.c')
| -rw-r--r-- | fs/ext4/xattr.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 8fb7ce14e6eb..5d3c2536641c 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -888,6 +888,8 @@ inserted:  			else {  				u32 ref; +				WARN_ON_ONCE(dquot_initialize_needed(inode)); +  				/* The old block is released after updating  				   the inode. */  				error = dquot_alloc_block(inode, @@ -954,6 +956,8 @@ inserted:  			/* We need to allocate a new block */  			ext4_fsblk_t goal, block; +			WARN_ON_ONCE(dquot_initialize_needed(inode)); +  			goal = ext4_group_first_block_no(sb,  						EXT4_I(inode)->i_block_group); @@ -1166,6 +1170,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,  		return -EINVAL;  	if (strlen(name) > 255)  		return -ERANGE; +  	ext4_write_lock_xattr(inode, &no_expand);  	error = ext4_reserve_inode_write(handle, inode, &is.iloc); @@ -1267,6 +1272,9 @@ ext4_xattr_set(struct inode *inode, int name_index, const char *name,  	int error, retries = 0;  	int credits = ext4_jbd2_credits_xattr(inode); +	error = dquot_initialize(inode); +	if (error) +		return error;  retry:  	handle = ext4_journal_start(inode, EXT4_HT_XATTR, credits);  	if (IS_ERR(handle)) {  |