xfs: remove the active vs running quota differentiation
These only made a difference when quotaoff supported disabling quota accounting on a mounted file system, so we can switch everyone to use a single set of flags and helpers now. Note that the *QUOTA_ON naming for the helpers is kept as it was the much more commonly used one. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
e497dfba6b
commit
149e53afc8
@ -60,36 +60,14 @@ typedef uint8_t xfs_dqtype_t;
|
|||||||
#define XFS_DQUOT_LOGRES(mp) \
|
#define XFS_DQUOT_LOGRES(mp) \
|
||||||
((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6)
|
((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6)
|
||||||
|
|
||||||
#define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
|
#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT)
|
||||||
#define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
|
#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT)
|
||||||
#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
|
#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT)
|
||||||
#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
|
#define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT)
|
||||||
#define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
|
#define XFS_IS_UQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_UQUOTA_ENFD)
|
||||||
#define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD)
|
#define XFS_IS_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_ENFD)
|
||||||
#define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD)
|
#define XFS_IS_PQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_PQUOTA_ENFD)
|
||||||
|
|
||||||
/*
|
|
||||||
* Incore only flags for quotaoff - these bits get cleared when quota(s)
|
|
||||||
* are in the process of getting turned off. These flags are in m_qflags but
|
|
||||||
* never in sb_qflags.
|
|
||||||
*/
|
|
||||||
#define XFS_UQUOTA_ACTIVE 0x1000 /* uquotas are being turned off */
|
|
||||||
#define XFS_GQUOTA_ACTIVE 0x2000 /* gquotas are being turned off */
|
|
||||||
#define XFS_PQUOTA_ACTIVE 0x4000 /* pquotas are being turned off */
|
|
||||||
#define XFS_ALL_QUOTA_ACTIVE \
|
|
||||||
(XFS_UQUOTA_ACTIVE | XFS_GQUOTA_ACTIVE | XFS_PQUOTA_ACTIVE)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Checking XFS_IS_*QUOTA_ON() while holding any inode lock guarantees
|
|
||||||
* quota will be not be switched off as long as that inode lock is held.
|
|
||||||
*/
|
|
||||||
#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & (XFS_UQUOTA_ACTIVE | \
|
|
||||||
XFS_GQUOTA_ACTIVE | \
|
|
||||||
XFS_PQUOTA_ACTIVE))
|
|
||||||
#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACTIVE)
|
|
||||||
#define XFS_IS_GQUOTA_ON(mp) ((mp)->m_qflags & XFS_GQUOTA_ACTIVE)
|
|
||||||
#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_ACTIVE)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags to tell various functions what to do. Not all of these are meaningful
|
* Flags to tell various functions what to do. Not all of these are meaningful
|
||||||
* to a single function. None of these XFS_QMOPT_* flags are meant to have
|
* to a single function. None of these XFS_QMOPT_* flags are meant to have
|
||||||
|
@ -42,7 +42,7 @@ xchk_setup_quota(
|
|||||||
xfs_dqtype_t dqtype;
|
xfs_dqtype_t dqtype;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(sc->mp) || !XFS_IS_QUOTA_ON(sc->mp))
|
if (!XFS_IS_QUOTA_ON(sc->mp))
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
dqtype = xchk_quota_to_dqtype(sc);
|
dqtype = xchk_quota_to_dqtype(sc);
|
||||||
|
@ -847,9 +847,6 @@ xfs_qm_dqget_checks(
|
|||||||
struct xfs_mount *mp,
|
struct xfs_mount *mp,
|
||||||
xfs_dqtype_t type)
|
xfs_dqtype_t type)
|
||||||
{
|
{
|
||||||
if (WARN_ON_ONCE(!XFS_IS_QUOTA_RUNNING(mp)))
|
|
||||||
return -ESRCH;
|
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case XFS_DQTYPE_USER:
|
case XFS_DQTYPE_USER:
|
||||||
if (!XFS_IS_UQUOTA_ON(mp))
|
if (!XFS_IS_UQUOTA_ON(mp))
|
||||||
|
@ -1450,7 +1450,7 @@ xfs_fileattr_set(
|
|||||||
|
|
||||||
/* Change the ownerships and register project quota modifications */
|
/* Change the ownerships and register project quota modifications */
|
||||||
if (ip->i_projid != fa->fsx_projid) {
|
if (ip->i_projid != fa->fsx_projid) {
|
||||||
if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_PQUOTA_ON(mp)) {
|
if (XFS_IS_PQUOTA_ON(mp)) {
|
||||||
olddquot = xfs_qm_vop_chown(tp, ip,
|
olddquot = xfs_qm_vop_chown(tp, ip,
|
||||||
&ip->i_pdquot, pdqp);
|
&ip->i_pdquot, pdqp);
|
||||||
}
|
}
|
||||||
|
@ -778,7 +778,7 @@ xfs_setattr_nonsize(
|
|||||||
* in the transaction.
|
* in the transaction.
|
||||||
*/
|
*/
|
||||||
if (!uid_eq(iuid, uid)) {
|
if (!uid_eq(iuid, uid)) {
|
||||||
if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_UQUOTA_ON(mp)) {
|
if (XFS_IS_UQUOTA_ON(mp)) {
|
||||||
ASSERT(mask & ATTR_UID);
|
ASSERT(mask & ATTR_UID);
|
||||||
ASSERT(udqp);
|
ASSERT(udqp);
|
||||||
olddquot1 = xfs_qm_vop_chown(tp, ip,
|
olddquot1 = xfs_qm_vop_chown(tp, ip,
|
||||||
@ -787,7 +787,7 @@ xfs_setattr_nonsize(
|
|||||||
inode->i_uid = uid;
|
inode->i_uid = uid;
|
||||||
}
|
}
|
||||||
if (!gid_eq(igid, gid)) {
|
if (!gid_eq(igid, gid)) {
|
||||||
if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) {
|
if (XFS_IS_GQUOTA_ON(mp)) {
|
||||||
ASSERT(xfs_sb_version_has_pquotino(&mp->m_sb) ||
|
ASSERT(xfs_sb_version_has_pquotino(&mp->m_sb) ||
|
||||||
!XFS_IS_PQUOTA_ON(mp));
|
!XFS_IS_PQUOTA_ON(mp));
|
||||||
ASSERT(mask & ATTR_GID);
|
ASSERT(mask & ATTR_GID);
|
||||||
|
@ -836,13 +836,11 @@ xfs_mountfs(
|
|||||||
/*
|
/*
|
||||||
* Initialise the XFS quota management subsystem for this mount
|
* Initialise the XFS quota management subsystem for this mount
|
||||||
*/
|
*/
|
||||||
if (XFS_IS_QUOTA_RUNNING(mp)) {
|
if (XFS_IS_QUOTA_ON(mp)) {
|
||||||
error = xfs_qm_newmount(mp, "amount, "aflags);
|
error = xfs_qm_newmount(mp, "amount, "aflags);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_rtunmount;
|
goto out_rtunmount;
|
||||||
} else {
|
} else {
|
||||||
ASSERT(!XFS_IS_QUOTA_ON(mp));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If a file system had quotas running earlier, but decided to
|
* If a file system had quotas running earlier, but decided to
|
||||||
* mount without -o uquota/pquota/gquota options, revoke the
|
* mount without -o uquota/pquota/gquota options, revoke the
|
||||||
|
@ -295,8 +295,6 @@ xfs_qm_need_dqattach(
|
|||||||
{
|
{
|
||||||
struct xfs_mount *mp = ip->i_mount;
|
struct xfs_mount *mp = ip->i_mount;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return false;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return false;
|
return false;
|
||||||
if (!XFS_NOT_DQATTACHED(mp, ip))
|
if (!XFS_NOT_DQATTACHED(mp, ip))
|
||||||
@ -631,7 +629,7 @@ xfs_qm_init_quotainfo(
|
|||||||
struct xfs_quotainfo *qinf;
|
struct xfs_quotainfo *qinf;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(mp));
|
ASSERT(XFS_IS_QUOTA_ON(mp));
|
||||||
|
|
||||||
qinf = mp->m_quotainfo = kmem_zalloc(sizeof(struct xfs_quotainfo), 0);
|
qinf = mp->m_quotainfo = kmem_zalloc(sizeof(struct xfs_quotainfo), 0);
|
||||||
|
|
||||||
@ -676,11 +674,11 @@ xfs_qm_init_quotainfo(
|
|||||||
xfs_qm_init_timelimits(mp, XFS_DQTYPE_GROUP);
|
xfs_qm_init_timelimits(mp, XFS_DQTYPE_GROUP);
|
||||||
xfs_qm_init_timelimits(mp, XFS_DQTYPE_PROJ);
|
xfs_qm_init_timelimits(mp, XFS_DQTYPE_PROJ);
|
||||||
|
|
||||||
if (XFS_IS_UQUOTA_RUNNING(mp))
|
if (XFS_IS_UQUOTA_ON(mp))
|
||||||
xfs_qm_set_defquota(mp, XFS_DQTYPE_USER, qinf);
|
xfs_qm_set_defquota(mp, XFS_DQTYPE_USER, qinf);
|
||||||
if (XFS_IS_GQUOTA_RUNNING(mp))
|
if (XFS_IS_GQUOTA_ON(mp))
|
||||||
xfs_qm_set_defquota(mp, XFS_DQTYPE_GROUP, qinf);
|
xfs_qm_set_defquota(mp, XFS_DQTYPE_GROUP, qinf);
|
||||||
if (XFS_IS_PQUOTA_RUNNING(mp))
|
if (XFS_IS_PQUOTA_ON(mp))
|
||||||
xfs_qm_set_defquota(mp, XFS_DQTYPE_PROJ, qinf);
|
xfs_qm_set_defquota(mp, XFS_DQTYPE_PROJ, qinf);
|
||||||
|
|
||||||
qinf->qi_shrinker.count_objects = xfs_qm_shrink_count;
|
qinf->qi_shrinker.count_objects = xfs_qm_shrink_count;
|
||||||
@ -1143,7 +1141,7 @@ xfs_qm_dqusage_adjust(
|
|||||||
xfs_filblks_t rtblks = 0; /* total rt blks */
|
xfs_filblks_t rtblks = 0; /* total rt blks */
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(mp));
|
ASSERT(XFS_IS_QUOTA_ON(mp));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rootino must have its resources accounted for, not so with the quota
|
* rootino must have its resources accounted for, not so with the quota
|
||||||
@ -1284,7 +1282,7 @@ xfs_qm_quotacheck(
|
|||||||
flags = 0;
|
flags = 0;
|
||||||
|
|
||||||
ASSERT(uip || gip || pip);
|
ASSERT(uip || gip || pip);
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(mp));
|
ASSERT(XFS_IS_QUOTA_ON(mp));
|
||||||
|
|
||||||
xfs_notice(mp, "Quotacheck needed: Please wait.");
|
xfs_notice(mp, "Quotacheck needed: Please wait.");
|
||||||
|
|
||||||
@ -1414,7 +1412,7 @@ xfs_qm_mount_quotas(
|
|||||||
goto write_changes;
|
goto write_changes;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(mp));
|
ASSERT(XFS_IS_QUOTA_ON(mp));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate the quotainfo structure inside the mount struct, and
|
* Allocate the quotainfo structure inside the mount struct, and
|
||||||
@ -1469,7 +1467,7 @@ xfs_qm_mount_quotas(
|
|||||||
* the incore structures are convinced that quotas are
|
* the incore structures are convinced that quotas are
|
||||||
* off, but the on disk superblock doesn't know that !
|
* off, but the on disk superblock doesn't know that !
|
||||||
*/
|
*/
|
||||||
ASSERT(!(XFS_IS_QUOTA_RUNNING(mp)));
|
ASSERT(!(XFS_IS_QUOTA_ON(mp)));
|
||||||
xfs_alert(mp, "%s: Superblock update failed!",
|
xfs_alert(mp, "%s: Superblock update failed!",
|
||||||
__func__);
|
__func__);
|
||||||
}
|
}
|
||||||
@ -1641,7 +1639,7 @@ xfs_qm_vop_dqalloc(
|
|||||||
int error;
|
int error;
|
||||||
uint lockflags;
|
uint lockflags;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
lockflags = XFS_ILOCK_EXCL;
|
lockflags = XFS_ILOCK_EXCL;
|
||||||
@ -1772,7 +1770,7 @@ xfs_qm_vop_chown(
|
|||||||
|
|
||||||
|
|
||||||
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(ip->i_mount));
|
ASSERT(XFS_IS_QUOTA_ON(ip->i_mount));
|
||||||
|
|
||||||
/* old dquot */
|
/* old dquot */
|
||||||
prevdq = *IO_olddq;
|
prevdq = *IO_olddq;
|
||||||
@ -1825,7 +1823,7 @@ xfs_qm_vop_rename_dqattach(
|
|||||||
struct xfs_mount *mp = i_tab[0]->i_mount;
|
struct xfs_mount *mp = i_tab[0]->i_mount;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = 0; (i < 4 && i_tab[i]); i++) {
|
for (i = 0; (i < 4 && i_tab[i]); i++) {
|
||||||
@ -1856,7 +1854,7 @@ xfs_qm_vop_create_dqattach(
|
|||||||
{
|
{
|
||||||
struct xfs_mount *mp = tp->t_mountp;
|
struct xfs_mount *mp = tp->t_mountp;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
||||||
|
@ -204,7 +204,7 @@ xfs_qm_scall_quotaon(
|
|||||||
(mp->m_qflags & XFS_GQUOTA_ACCT)))
|
(mp->m_qflags & XFS_GQUOTA_ACCT)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (! XFS_IS_QUOTA_RUNNING(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ESRCH;
|
return -ESRCH;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -60,18 +60,18 @@ xfs_fs_get_quota_state(
|
|||||||
struct xfs_quotainfo *q = mp->m_quotainfo;
|
struct xfs_quotainfo *q = mp->m_quotainfo;
|
||||||
|
|
||||||
memset(state, 0, sizeof(*state));
|
memset(state, 0, sizeof(*state));
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
state->s_incoredqs = q->qi_dquots;
|
state->s_incoredqs = q->qi_dquots;
|
||||||
if (XFS_IS_UQUOTA_RUNNING(mp))
|
if (XFS_IS_UQUOTA_ON(mp))
|
||||||
state->s_state[USRQUOTA].flags |= QCI_ACCT_ENABLED;
|
state->s_state[USRQUOTA].flags |= QCI_ACCT_ENABLED;
|
||||||
if (XFS_IS_UQUOTA_ENFORCED(mp))
|
if (XFS_IS_UQUOTA_ENFORCED(mp))
|
||||||
state->s_state[USRQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
state->s_state[USRQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
||||||
if (XFS_IS_GQUOTA_RUNNING(mp))
|
if (XFS_IS_GQUOTA_ON(mp))
|
||||||
state->s_state[GRPQUOTA].flags |= QCI_ACCT_ENABLED;
|
state->s_state[GRPQUOTA].flags |= QCI_ACCT_ENABLED;
|
||||||
if (XFS_IS_GQUOTA_ENFORCED(mp))
|
if (XFS_IS_GQUOTA_ENFORCED(mp))
|
||||||
state->s_state[GRPQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
state->s_state[GRPQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
||||||
if (XFS_IS_PQUOTA_RUNNING(mp))
|
if (XFS_IS_PQUOTA_ON(mp))
|
||||||
state->s_state[PRJQUOTA].flags |= QCI_ACCT_ENABLED;
|
state->s_state[PRJQUOTA].flags |= QCI_ACCT_ENABLED;
|
||||||
if (XFS_IS_PQUOTA_ENFORCED(mp))
|
if (XFS_IS_PQUOTA_ENFORCED(mp))
|
||||||
state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED;
|
||||||
@ -114,10 +114,8 @@ xfs_fs_set_info(
|
|||||||
|
|
||||||
if (sb_rdonly(sb))
|
if (sb_rdonly(sb))
|
||||||
return -EROFS;
|
return -EROFS;
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return -ENOSYS;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ESRCH;
|
return -ENOSYS;
|
||||||
if (info->i_fieldmask & ~XFS_QC_SETINFO_MASK)
|
if (info->i_fieldmask & ~XFS_QC_SETINFO_MASK)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if ((info->i_fieldmask & XFS_QC_SETINFO_MASK) == 0)
|
if ((info->i_fieldmask & XFS_QC_SETINFO_MASK) == 0)
|
||||||
@ -164,7 +162,7 @@ xfs_quota_enable(
|
|||||||
|
|
||||||
if (sb_rdonly(sb))
|
if (sb_rdonly(sb))
|
||||||
return -EROFS;
|
return -EROFS;
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
|
|
||||||
return xfs_qm_scall_quotaon(mp, xfs_quota_flags(uflags));
|
return xfs_qm_scall_quotaon(mp, xfs_quota_flags(uflags));
|
||||||
@ -179,10 +177,8 @@ xfs_quota_disable(
|
|||||||
|
|
||||||
if (sb_rdonly(sb))
|
if (sb_rdonly(sb))
|
||||||
return -EROFS;
|
return -EROFS;
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return -ENOSYS;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -EINVAL;
|
return -ENOSYS;
|
||||||
|
|
||||||
return xfs_qm_scall_quotaoff(mp, xfs_quota_flags(uflags));
|
return xfs_qm_scall_quotaoff(mp, xfs_quota_flags(uflags));
|
||||||
}
|
}
|
||||||
@ -223,10 +219,8 @@ xfs_fs_get_dqblk(
|
|||||||
struct xfs_mount *mp = XFS_M(sb);
|
struct xfs_mount *mp = XFS_M(sb);
|
||||||
xfs_dqid_t id;
|
xfs_dqid_t id;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return -ENOSYS;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ESRCH;
|
return -ENOSYS;
|
||||||
|
|
||||||
id = from_kqid(&init_user_ns, qid);
|
id = from_kqid(&init_user_ns, qid);
|
||||||
return xfs_qm_scall_getquota(mp, id, xfs_quota_type(qid.type), qdq);
|
return xfs_qm_scall_getquota(mp, id, xfs_quota_type(qid.type), qdq);
|
||||||
@ -243,10 +237,8 @@ xfs_fs_get_nextdqblk(
|
|||||||
struct xfs_mount *mp = XFS_M(sb);
|
struct xfs_mount *mp = XFS_M(sb);
|
||||||
xfs_dqid_t id;
|
xfs_dqid_t id;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return -ENOSYS;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ESRCH;
|
return -ENOSYS;
|
||||||
|
|
||||||
id = from_kqid(&init_user_ns, *qid);
|
id = from_kqid(&init_user_ns, *qid);
|
||||||
ret = xfs_qm_scall_getquota_next(mp, &id, xfs_quota_type(qid->type),
|
ret = xfs_qm_scall_getquota_next(mp, &id, xfs_quota_type(qid->type),
|
||||||
@ -269,10 +261,8 @@ xfs_fs_set_dqblk(
|
|||||||
|
|
||||||
if (sb_rdonly(sb))
|
if (sb_rdonly(sb))
|
||||||
return -EROFS;
|
return -EROFS;
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp))
|
|
||||||
return -ENOSYS;
|
|
||||||
if (!XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return -ESRCH;
|
return -ENOSYS;
|
||||||
|
|
||||||
return xfs_qm_scall_setqlim(mp, from_kqid(&init_user_ns, qid),
|
return xfs_qm_scall_setqlim(mp, from_kqid(&init_user_ns, qid),
|
||||||
xfs_quota_type(qid.type), qdq);
|
xfs_quota_type(qid.type), qdq);
|
||||||
|
@ -201,25 +201,20 @@ xfs_fs_show_options(
|
|||||||
seq_printf(m, ",swidth=%d",
|
seq_printf(m, ",swidth=%d",
|
||||||
(int)XFS_FSB_TO_BB(mp, mp->m_swidth));
|
(int)XFS_FSB_TO_BB(mp, mp->m_swidth));
|
||||||
|
|
||||||
if (mp->m_qflags & XFS_UQUOTA_ACCT) {
|
if (mp->m_qflags & XFS_UQUOTA_ENFD)
|
||||||
if (mp->m_qflags & XFS_UQUOTA_ENFD)
|
seq_puts(m, ",usrquota");
|
||||||
seq_puts(m, ",usrquota");
|
else if (mp->m_qflags & XFS_UQUOTA_ACCT)
|
||||||
else
|
seq_puts(m, ",uqnoenforce");
|
||||||
seq_puts(m, ",uqnoenforce");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mp->m_qflags & XFS_PQUOTA_ACCT) {
|
if (mp->m_qflags & XFS_PQUOTA_ENFD)
|
||||||
if (mp->m_qflags & XFS_PQUOTA_ENFD)
|
seq_puts(m, ",prjquota");
|
||||||
seq_puts(m, ",prjquota");
|
else if (mp->m_qflags & XFS_PQUOTA_ACCT)
|
||||||
else
|
seq_puts(m, ",pqnoenforce");
|
||||||
seq_puts(m, ",pqnoenforce");
|
|
||||||
}
|
if (mp->m_qflags & XFS_GQUOTA_ENFD)
|
||||||
if (mp->m_qflags & XFS_GQUOTA_ACCT) {
|
seq_puts(m, ",grpquota");
|
||||||
if (mp->m_qflags & XFS_GQUOTA_ENFD)
|
else if (mp->m_qflags & XFS_GQUOTA_ACCT)
|
||||||
seq_puts(m, ",grpquota");
|
seq_puts(m, ",gqnoenforce");
|
||||||
else
|
|
||||||
seq_puts(m, ",gqnoenforce");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT))
|
if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT))
|
||||||
seq_puts(m, ",noquota");
|
seq_puts(m, ",noquota");
|
||||||
@ -962,8 +957,8 @@ xfs_finish_flags(
|
|||||||
return -EROFS;
|
return -EROFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) &&
|
if ((mp->m_qflags & XFS_GQUOTA_ACCT) &&
|
||||||
(mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) &&
|
(mp->m_qflags & XFS_PQUOTA_ACCT) &&
|
||||||
!xfs_sb_version_has_pquotino(&mp->m_sb)) {
|
!xfs_sb_version_has_pquotino(&mp->m_sb)) {
|
||||||
xfs_warn(mp,
|
xfs_warn(mp,
|
||||||
"Super block does not support project and group quota together");
|
"Super block does not support project and group quota together");
|
||||||
@ -1228,35 +1223,31 @@ xfs_fs_parse_param(
|
|||||||
case Opt_noquota:
|
case Opt_noquota:
|
||||||
parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACCT;
|
parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACCT;
|
||||||
parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ENFD;
|
parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ENFD;
|
||||||
parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACTIVE;
|
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_quota:
|
case Opt_quota:
|
||||||
case Opt_uquota:
|
case Opt_uquota:
|
||||||
case Opt_usrquota:
|
case Opt_usrquota:
|
||||||
parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ACTIVE |
|
parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ENFD);
|
||||||
XFS_UQUOTA_ENFD);
|
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_qnoenforce:
|
case Opt_qnoenforce:
|
||||||
case Opt_uqnoenforce:
|
case Opt_uqnoenforce:
|
||||||
parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ACTIVE);
|
parsing_mp->m_qflags |= XFS_UQUOTA_ACCT;
|
||||||
parsing_mp->m_qflags &= ~XFS_UQUOTA_ENFD;
|
parsing_mp->m_qflags &= ~XFS_UQUOTA_ENFD;
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_pquota:
|
case Opt_pquota:
|
||||||
case Opt_prjquota:
|
case Opt_prjquota:
|
||||||
parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE |
|
parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ENFD);
|
||||||
XFS_PQUOTA_ENFD);
|
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_pqnoenforce:
|
case Opt_pqnoenforce:
|
||||||
parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE);
|
parsing_mp->m_qflags |= XFS_PQUOTA_ACCT;
|
||||||
parsing_mp->m_qflags &= ~XFS_PQUOTA_ENFD;
|
parsing_mp->m_qflags &= ~XFS_PQUOTA_ENFD;
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_gquota:
|
case Opt_gquota:
|
||||||
case Opt_grpquota:
|
case Opt_grpquota:
|
||||||
parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE |
|
parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ENFD);
|
||||||
XFS_GQUOTA_ENFD);
|
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_gqnoenforce:
|
case Opt_gqnoenforce:
|
||||||
parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE);
|
parsing_mp->m_qflags |= XFS_GQUOTA_ACCT;
|
||||||
parsing_mp->m_qflags &= ~XFS_GQUOTA_ENFD;
|
parsing_mp->m_qflags &= ~XFS_GQUOTA_ENFD;
|
||||||
return 0;
|
return 0;
|
||||||
case Opt_discard:
|
case Opt_discard:
|
||||||
|
@ -132,8 +132,7 @@ xfs_trans_mod_dquot_byino(
|
|||||||
{
|
{
|
||||||
xfs_mount_t *mp = tp->t_mountp;
|
xfs_mount_t *mp = tp->t_mountp;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) ||
|
if (!XFS_IS_QUOTA_ON(mp) ||
|
||||||
!XFS_IS_QUOTA_ON(mp) ||
|
|
||||||
xfs_is_quota_inode(&mp->m_sb, ip->i_ino))
|
xfs_is_quota_inode(&mp->m_sb, ip->i_ino))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -192,7 +191,7 @@ xfs_trans_mod_dquot(
|
|||||||
struct xfs_dqtrx *qtrx;
|
struct xfs_dqtrx *qtrx;
|
||||||
|
|
||||||
ASSERT(tp);
|
ASSERT(tp);
|
||||||
ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp));
|
ASSERT(XFS_IS_QUOTA_ON(tp->t_mountp));
|
||||||
qtrx = NULL;
|
qtrx = NULL;
|
||||||
|
|
||||||
if (!delta)
|
if (!delta)
|
||||||
@ -738,7 +737,7 @@ xfs_trans_reserve_quota_bydquots(
|
|||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ASSERT(flags & XFS_QMOPT_RESBLK_MASK);
|
ASSERT(flags & XFS_QMOPT_RESBLK_MASK);
|
||||||
@ -795,7 +794,7 @@ xfs_trans_reserve_quota_nblks(
|
|||||||
unsigned int qflags = 0;
|
unsigned int qflags = 0;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ASSERT(!xfs_is_quota_inode(&mp->m_sb, ip->i_ino));
|
ASSERT(!xfs_is_quota_inode(&mp->m_sb, ip->i_ino));
|
||||||
@ -836,7 +835,7 @@ xfs_trans_reserve_quota_icreate(
|
|||||||
{
|
{
|
||||||
struct xfs_mount *mp = tp->t_mountp;
|
struct xfs_mount *mp = tp->t_mountp;
|
||||||
|
|
||||||
if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp))
|
if (!XFS_IS_QUOTA_ON(mp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp, pdqp,
|
return xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp, pdqp,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user