mirror of https://github.com/torvalds/linux.git
xfs: make qi_dquots a 64-bit value
qi_dquots counts all quotas in the file system, which can be up to
3 * UINT_MAX and overflow a 32-bit counter, but can't be negative.
Make qi_dquots a uint64_t, and saturate the value to UINT_MAX for
userspace reporting.
Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
204c8f77e8
commit
005d5ae0c5
|
|
@ -57,7 +57,7 @@ struct xfs_quotainfo {
|
|||
struct xfs_inode *qi_pquotaip; /* project quota inode */
|
||||
struct xfs_inode *qi_dirip; /* quota metadir */
|
||||
struct list_lru qi_lru;
|
||||
int qi_dquots;
|
||||
uint64_t qi_dquots;
|
||||
struct mutex qi_quotaofflock;/* to serialize quotaoff */
|
||||
xfs_filblks_t qi_dqchunklen; /* # BBs in a chunk of dqs */
|
||||
uint qi_dqperchunk; /* # ondisk dq in above chunk */
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ xfs_fs_get_quota_state(
|
|||
memset(state, 0, sizeof(*state));
|
||||
if (!XFS_IS_QUOTA_ON(mp))
|
||||
return 0;
|
||||
state->s_incoredqs = q->qi_dquots;
|
||||
state->s_incoredqs = min_t(uint64_t, q->qi_dquots, UINT_MAX);
|
||||
if (XFS_IS_UQUOTA_ON(mp))
|
||||
state->s_state[USRQUOTA].flags |= QCI_ACCT_ENABLED;
|
||||
if (XFS_IS_UQUOTA_ENFORCED(mp))
|
||||
|
|
|
|||
Loading…
Reference in New Issue