提交 149e53af 编写于 作者: C Christoph Hellwig 提交者: Darrick J. Wong

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: NChristoph Hellwig <hch@lst.de>
Reviewed-by: NCarlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: NDarrick J. Wong <djwong@kernel.org>
Signed-off-by: NDarrick J. Wong <djwong@kernel.org>
上级 e497dfba
...@@ -60,36 +60,14 @@ typedef uint8_t xfs_dqtype_t; ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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, &quotamount, &quotaflags); error = xfs_qm_newmount(mp, &quotamount, &quotaflags);
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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册