diff options
Diffstat (limited to 'include/linux/quotaops.h')
| -rw-r--r-- | include/linux/quotaops.h | 37 | 
1 files changed, 26 insertions, 11 deletions
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 370abb1e99cb..e38ae53f3529 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h @@ -9,6 +9,10 @@  #include <linux/fs.h> +#define DQUOT_SPACE_WARN	0x1 +#define DQUOT_SPACE_RESERVE	0x2 +#define DQUOT_SPACE_NOFAIL	0x4 +  static inline struct quota_info *sb_dqopt(struct super_block *sb)  {  	return &sb->s_dquot; @@ -41,9 +45,8 @@ int dquot_scan_active(struct super_block *sb,  struct dquot *dquot_alloc(struct super_block *sb, int type);  void dquot_destroy(struct dquot *dquot); -int __dquot_alloc_space(struct inode *inode, qsize_t number, -		int warn, int reserve); -void __dquot_free_space(struct inode *inode, qsize_t number, int reserve); +int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags); +void __dquot_free_space(struct inode *inode, qsize_t number, int flags);  int dquot_alloc_inode(const struct inode *inode); @@ -242,17 +245,17 @@ static inline int dquot_transfer(struct inode *inode, struct iattr *iattr)  }  static inline int __dquot_alloc_space(struct inode *inode, qsize_t number, -		int warn, int reserve) +		int flags)  { -	if (!reserve) +	if (!(flags & DQUOT_SPACE_RESERVE))  		inode_add_bytes(inode, number);  	return 0;  }  static inline void __dquot_free_space(struct inode *inode, qsize_t number, -		int reserve) +		int flags)  { -	if (!reserve) +	if (!(flags & DQUOT_SPACE_RESERVE))  		inode_sub_bytes(inode, number);  } @@ -268,7 +271,13 @@ static inline int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)  static inline int dquot_alloc_space_nodirty(struct inode *inode, qsize_t nr)  { -	return __dquot_alloc_space(inode, nr, 1, 0); +	return __dquot_alloc_space(inode, nr, DQUOT_SPACE_WARN); +} + +static inline void dquot_alloc_space_nofail(struct inode *inode, qsize_t nr) +{ +	__dquot_alloc_space(inode, nr, DQUOT_SPACE_WARN|DQUOT_SPACE_NOFAIL); +	mark_inode_dirty(inode);  }  static inline int dquot_alloc_space(struct inode *inode, qsize_t nr) @@ -286,6 +295,11 @@ static inline int dquot_alloc_block_nodirty(struct inode *inode, qsize_t nr)  	return dquot_alloc_space_nodirty(inode, nr << inode->i_blkbits);  } +static inline void dquot_alloc_block_nofail(struct inode *inode, qsize_t nr) +{ +	dquot_alloc_space_nofail(inode, nr << inode->i_blkbits); +} +  static inline int dquot_alloc_block(struct inode *inode, qsize_t nr)  {  	return dquot_alloc_space(inode, nr << inode->i_blkbits); @@ -293,7 +307,7 @@ static inline int dquot_alloc_block(struct inode *inode, qsize_t nr)  static inline int dquot_prealloc_block_nodirty(struct inode *inode, qsize_t nr)  { -	return __dquot_alloc_space(inode, nr << inode->i_blkbits, 0, 0); +	return __dquot_alloc_space(inode, nr << inode->i_blkbits, 0);  }  static inline int dquot_prealloc_block(struct inode *inode, qsize_t nr) @@ -308,7 +322,8 @@ static inline int dquot_prealloc_block(struct inode *inode, qsize_t nr)  static inline int dquot_reserve_block(struct inode *inode, qsize_t nr)  { -	return __dquot_alloc_space(inode, nr << inode->i_blkbits, 1, 1); +	return __dquot_alloc_space(inode, nr << inode->i_blkbits, +				DQUOT_SPACE_WARN|DQUOT_SPACE_RESERVE);  }  static inline int dquot_claim_block(struct inode *inode, qsize_t nr) @@ -345,7 +360,7 @@ static inline void dquot_free_block(struct inode *inode, qsize_t nr)  static inline void dquot_release_reservation_block(struct inode *inode,  		qsize_t nr)  { -	__dquot_free_space(inode, nr << inode->i_blkbits, 1); +	__dquot_free_space(inode, nr << inode->i_blkbits, DQUOT_SPACE_RESERVE);  }  #endif /* _LINUX_QUOTAOPS_ */  | 
