Loading fs/quota/dquot.c +2 −1 Original line number Diff line number Diff line Loading @@ -1301,7 +1301,7 @@ int dquot_initialize(struct inode *inode, int type) { unsigned int id = 0; int cnt, ret = 0; struct dquot *got[MAXQUOTAS] = { NULL, NULL }; struct dquot *got[MAXQUOTAS]; struct super_block *sb = inode->i_sb; qsize_t rsv; Loading @@ -1312,6 +1312,7 @@ int dquot_initialize(struct inode *inode, int type) /* First get references to structures we might need. */ for (cnt = 0; cnt < MAXQUOTAS; cnt++) { got[cnt] = NULL; if (type != -1 && cnt != type) continue; switch (cnt) { Loading include/linux/quota.h +7 −8 Original line number Diff line number Diff line Loading @@ -357,26 +357,25 @@ enum { #define DQUOT_STATE_FLAGS (DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED | \ DQUOT_SUSPENDED) /* Other quota flags */ #define DQUOT_QUOTA_SYS_FILE (1 << 6) /* Quota file is a special #define DQUOT_STATE_LAST (_DQUOT_STATE_FLAGS * MAXQUOTAS) #define DQUOT_QUOTA_SYS_FILE (1 << DQUOT_STATE_LAST) /* Quota file is a special * system file and user cannot * touch it. Filesystem is * responsible for setting * S_NOQUOTA, S_NOATIME flags */ #define DQUOT_NEGATIVE_USAGE (1 << 7) /* Allow negative quota usage */ #define DQUOT_NEGATIVE_USAGE (1 << (DQUOT_STATE_LAST + 1)) /* Allow negative quota usage */ static inline unsigned int dquot_state_flag(unsigned int flags, int type) { if (type == USRQUOTA) return flags; return flags << _DQUOT_STATE_FLAGS; return flags << _DQUOT_STATE_FLAGS * type; } static inline unsigned int dquot_generic_flag(unsigned int flags, int type) { if (type == USRQUOTA) return flags; return flags >> _DQUOT_STATE_FLAGS; return (flags >> _DQUOT_STATE_FLAGS * type) & DQUOT_STATE_FLAGS; } #ifdef CONFIG_QUOTA_NETLINK_INTERFACE Loading include/linux/quotaops.h +17 −14 Original line number Diff line number Diff line Loading @@ -79,53 +79,56 @@ static inline struct mem_dqinfo *sb_dqinfo(struct super_block *sb, int type) * Functions for checking status of quota */ static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type) static inline bool sb_has_quota_usage_enabled(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_USAGE_ENABLED, type); } static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type) static inline bool sb_has_quota_limits_enabled(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_LIMITS_ENABLED, type); } static inline int sb_has_quota_suspended(struct super_block *sb, int type) static inline bool sb_has_quota_suspended(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_SUSPENDED, type); } static inline int sb_any_quota_suspended(struct super_block *sb) static inline unsigned sb_any_quota_suspended(struct super_block *sb) { return sb_has_quota_suspended(sb, USRQUOTA) || sb_has_quota_suspended(sb, GRPQUOTA); unsigned type, tmsk = 0; for (type = 0; type < MAXQUOTAS; type++) tmsk |= sb_has_quota_suspended(sb, type) << type; return tmsk; } /* Does kernel know about any quota information for given sb + type? */ static inline int sb_has_quota_loaded(struct super_block *sb, int type) static inline bool sb_has_quota_loaded(struct super_block *sb, int type) { /* Currently if anything is on, then quota usage is on as well */ return sb_has_quota_usage_enabled(sb, type); } static inline int sb_any_quota_loaded(struct super_block *sb) static inline unsigned sb_any_quota_loaded(struct super_block *sb) { return sb_has_quota_loaded(sb, USRQUOTA) || sb_has_quota_loaded(sb, GRPQUOTA); unsigned type, tmsk = 0; for (type = 0; type < MAXQUOTAS; type++) tmsk |= sb_has_quota_loaded(sb, type) << type; return tmsk; } static inline int sb_has_quota_active(struct super_block *sb, int type) static inline bool sb_has_quota_active(struct super_block *sb, int type) { return sb_has_quota_loaded(sb, type) && !sb_has_quota_suspended(sb, type); } static inline int sb_any_quota_active(struct super_block *sb) static inline unsigned sb_any_quota_active(struct super_block *sb) { return sb_has_quota_active(sb, USRQUOTA) || sb_has_quota_active(sb, GRPQUOTA); return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb); } /* Loading Loading
fs/quota/dquot.c +2 −1 Original line number Diff line number Diff line Loading @@ -1301,7 +1301,7 @@ int dquot_initialize(struct inode *inode, int type) { unsigned int id = 0; int cnt, ret = 0; struct dquot *got[MAXQUOTAS] = { NULL, NULL }; struct dquot *got[MAXQUOTAS]; struct super_block *sb = inode->i_sb; qsize_t rsv; Loading @@ -1312,6 +1312,7 @@ int dquot_initialize(struct inode *inode, int type) /* First get references to structures we might need. */ for (cnt = 0; cnt < MAXQUOTAS; cnt++) { got[cnt] = NULL; if (type != -1 && cnt != type) continue; switch (cnt) { Loading
include/linux/quota.h +7 −8 Original line number Diff line number Diff line Loading @@ -357,26 +357,25 @@ enum { #define DQUOT_STATE_FLAGS (DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED | \ DQUOT_SUSPENDED) /* Other quota flags */ #define DQUOT_QUOTA_SYS_FILE (1 << 6) /* Quota file is a special #define DQUOT_STATE_LAST (_DQUOT_STATE_FLAGS * MAXQUOTAS) #define DQUOT_QUOTA_SYS_FILE (1 << DQUOT_STATE_LAST) /* Quota file is a special * system file and user cannot * touch it. Filesystem is * responsible for setting * S_NOQUOTA, S_NOATIME flags */ #define DQUOT_NEGATIVE_USAGE (1 << 7) /* Allow negative quota usage */ #define DQUOT_NEGATIVE_USAGE (1 << (DQUOT_STATE_LAST + 1)) /* Allow negative quota usage */ static inline unsigned int dquot_state_flag(unsigned int flags, int type) { if (type == USRQUOTA) return flags; return flags << _DQUOT_STATE_FLAGS; return flags << _DQUOT_STATE_FLAGS * type; } static inline unsigned int dquot_generic_flag(unsigned int flags, int type) { if (type == USRQUOTA) return flags; return flags >> _DQUOT_STATE_FLAGS; return (flags >> _DQUOT_STATE_FLAGS * type) & DQUOT_STATE_FLAGS; } #ifdef CONFIG_QUOTA_NETLINK_INTERFACE Loading
include/linux/quotaops.h +17 −14 Original line number Diff line number Diff line Loading @@ -79,53 +79,56 @@ static inline struct mem_dqinfo *sb_dqinfo(struct super_block *sb, int type) * Functions for checking status of quota */ static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type) static inline bool sb_has_quota_usage_enabled(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_USAGE_ENABLED, type); } static inline int sb_has_quota_limits_enabled(struct super_block *sb, int type) static inline bool sb_has_quota_limits_enabled(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_LIMITS_ENABLED, type); } static inline int sb_has_quota_suspended(struct super_block *sb, int type) static inline bool sb_has_quota_suspended(struct super_block *sb, int type) { return sb_dqopt(sb)->flags & dquot_state_flag(DQUOT_SUSPENDED, type); } static inline int sb_any_quota_suspended(struct super_block *sb) static inline unsigned sb_any_quota_suspended(struct super_block *sb) { return sb_has_quota_suspended(sb, USRQUOTA) || sb_has_quota_suspended(sb, GRPQUOTA); unsigned type, tmsk = 0; for (type = 0; type < MAXQUOTAS; type++) tmsk |= sb_has_quota_suspended(sb, type) << type; return tmsk; } /* Does kernel know about any quota information for given sb + type? */ static inline int sb_has_quota_loaded(struct super_block *sb, int type) static inline bool sb_has_quota_loaded(struct super_block *sb, int type) { /* Currently if anything is on, then quota usage is on as well */ return sb_has_quota_usage_enabled(sb, type); } static inline int sb_any_quota_loaded(struct super_block *sb) static inline unsigned sb_any_quota_loaded(struct super_block *sb) { return sb_has_quota_loaded(sb, USRQUOTA) || sb_has_quota_loaded(sb, GRPQUOTA); unsigned type, tmsk = 0; for (type = 0; type < MAXQUOTAS; type++) tmsk |= sb_has_quota_loaded(sb, type) << type; return tmsk; } static inline int sb_has_quota_active(struct super_block *sb, int type) static inline bool sb_has_quota_active(struct super_block *sb, int type) { return sb_has_quota_loaded(sb, type) && !sb_has_quota_suspended(sb, type); } static inline int sb_any_quota_active(struct super_block *sb) static inline unsigned sb_any_quota_active(struct super_block *sb) { return sb_has_quota_active(sb, USRQUOTA) || sb_has_quota_active(sb, GRPQUOTA); return sb_any_quota_loaded(sb) & ~sb_any_quota_suspended(sb); } /* Loading