Message ID | 20210712111426.83004-4-hch@lst.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/3] xfs: remove support for disabling quota accounting on a mounted file system | expand |
On Mon, Jul 12, 2021 at 01:14:26PM +0200, Christoph Hellwig wrote: > 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> > --- > fs/xfs/libxfs/xfs_quota_defs.h | 30 +++----------------- > fs/xfs/scrub/quota.c | 2 +- > fs/xfs/xfs_dquot.c | 3 -- > fs/xfs/xfs_ioctl.c | 2 +- > fs/xfs/xfs_iops.c | 4 +-- > fs/xfs/xfs_mount.c | 4 +-- > fs/xfs/xfs_qm.c | 26 ++++++++--------- > fs/xfs/xfs_qm_syscalls.c | 2 +- > fs/xfs/xfs_quotaops.c | 30 +++++++------------- > fs/xfs/xfs_super.c | 51 ++++++++++++++-------------------- > fs/xfs/xfs_trans_dquot.c | 11 ++++---- > 11 files changed, 58 insertions(+), 107 deletions(-) Looks good Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> > > diff --git a/fs/xfs/libxfs/xfs_quota_defs.h b/fs/xfs/libxfs/xfs_quota_defs.h > index 0f0af4e3503293..a02c5062f9b292 100644 > --- a/fs/xfs/libxfs/xfs_quota_defs.h > +++ b/fs/xfs/libxfs/xfs_quota_defs.h > @@ -60,36 +60,14 @@ typedef uint8_t xfs_dqtype_t; > #define XFS_DQUOT_LOGRES(mp) \ > ((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_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) > -#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) > -#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT) > +#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) > +#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) > +#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_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_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_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 > * to a single function. None of these XFS_QMOPT_* flags are meant to have > diff --git a/fs/xfs/scrub/quota.c b/fs/xfs/scrub/quota.c > index acbb9839d42fbd..3cccd6d5b57755 100644 > --- a/fs/xfs/scrub/quota.c > +++ b/fs/xfs/scrub/quota.c > @@ -42,7 +42,7 @@ xchk_setup_quota( > xfs_dqtype_t dqtype; > int error; > > - if (!XFS_IS_QUOTA_RUNNING(sc->mp) || !XFS_IS_QUOTA_ON(sc->mp)) > + if (!XFS_IS_QUOTA_ON(sc->mp)) > return -ENOENT; > > dqtype = xchk_quota_to_dqtype(sc); > diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c > index ecd5059d6928f7..c301b18b7685b1 100644 > --- a/fs/xfs/xfs_dquot.c > +++ b/fs/xfs/xfs_dquot.c > @@ -847,9 +847,6 @@ xfs_qm_dqget_checks( > struct xfs_mount *mp, > xfs_dqtype_t type) > { > - if (WARN_ON_ONCE(!XFS_IS_QUOTA_RUNNING(mp))) > - return -ESRCH; > - > switch (type) { > case XFS_DQTYPE_USER: > if (!XFS_IS_UQUOTA_ON(mp)) > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index 65270e63c032a0..9f4aa1477e2fca 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -1433,7 +1433,7 @@ xfs_fileattr_set( > > /* Change the ownerships and register project quota modifications */ > 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, > &ip->i_pdquot, pdqp); > } > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 93c082db04b78c..327d65ef1e268c 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -778,7 +778,7 @@ xfs_setattr_nonsize( > * in the transaction. > */ > 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(udqp); > olddquot1 = xfs_qm_vop_chown(tp, ip, > @@ -787,7 +787,7 @@ xfs_setattr_nonsize( > inode->i_uid = uid; > } > 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) || > !XFS_IS_PQUOTA_ON(mp)); > ASSERT(mask & ATTR_GID); > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index d0755494597f99..baf7b323cb15eb 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -836,13 +836,11 @@ xfs_mountfs( > /* > * 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); > if (error) > goto out_rtunmount; > } else { > - ASSERT(!XFS_IS_QUOTA_ON(mp)); > - > /* > * If a file system had quotas running earlier, but decided to > * mount without -o uquota/pquota/gquota options, revoke the > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > index 2b34273d0405e7..351d99bc52e5f8 100644 > --- a/fs/xfs/xfs_qm.c > +++ b/fs/xfs/xfs_qm.c > @@ -295,8 +295,6 @@ xfs_qm_need_dqattach( > { > struct xfs_mount *mp = ip->i_mount; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return false; > if (!XFS_IS_QUOTA_ON(mp)) > return false; > if (!XFS_NOT_DQATTACHED(mp, ip)) > @@ -631,7 +629,7 @@ xfs_qm_init_quotainfo( > struct xfs_quotainfo *qinf; > 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); > > @@ -676,11 +674,11 @@ xfs_qm_init_quotainfo( > xfs_qm_init_timelimits(mp, XFS_DQTYPE_GROUP); > 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); > - if (XFS_IS_GQUOTA_RUNNING(mp)) > + if (XFS_IS_GQUOTA_ON(mp)) > 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); > > 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 */ > 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 > @@ -1284,7 +1282,7 @@ xfs_qm_quotacheck( > flags = 0; > > ASSERT(uip || gip || pip); > - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); > + ASSERT(XFS_IS_QUOTA_ON(mp)); > > xfs_notice(mp, "Quotacheck needed: Please wait."); > > @@ -1414,7 +1412,7 @@ xfs_qm_mount_quotas( > goto write_changes; > } > > - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); > + ASSERT(XFS_IS_QUOTA_ON(mp)); > > /* > * 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 > * 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!", > __func__); > } > @@ -1641,7 +1639,7 @@ xfs_qm_vop_dqalloc( > int error; > uint lockflags; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > lockflags = XFS_ILOCK_EXCL; > @@ -1772,7 +1770,7 @@ xfs_qm_vop_chown( > > > 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 */ > prevdq = *IO_olddq; > @@ -1825,7 +1823,7 @@ xfs_qm_vop_rename_dqattach( > struct xfs_mount *mp = i_tab[0]->i_mount; > int i; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > 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; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return; > > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); > diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c > index e00067a142a094..b5685ce666f70d 100644 > --- a/fs/xfs/xfs_qm_syscalls.c > +++ b/fs/xfs/xfs_qm_syscalls.c > @@ -204,7 +204,7 @@ xfs_qm_scall_quotaon( > (mp->m_qflags & XFS_GQUOTA_ACCT))) > return 0; > > - if (! XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return -ESRCH; > > /* > diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c > index 88d70c236a5445..07989bd677289a 100644 > --- a/fs/xfs/xfs_quotaops.c > +++ b/fs/xfs/xfs_quotaops.c > @@ -60,18 +60,18 @@ xfs_fs_get_quota_state( > struct xfs_quotainfo *q = mp->m_quotainfo; > > memset(state, 0, sizeof(*state)); > - if (!XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > 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; > if (XFS_IS_UQUOTA_ENFORCED(mp)) > 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; > if (XFS_IS_GQUOTA_ENFORCED(mp)) > 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; > if (XFS_IS_PQUOTA_ENFORCED(mp)) > state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED; > @@ -114,10 +114,8 @@ xfs_fs_set_info( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > if (info->i_fieldmask & ~XFS_QC_SETINFO_MASK) > return -EINVAL; > if ((info->i_fieldmask & XFS_QC_SETINFO_MASK) == 0) > @@ -164,7 +162,7 @@ xfs_quota_enable( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return -ENOSYS; > > return xfs_qm_scall_quotaon(mp, xfs_quota_flags(uflags)); > @@ -179,10 +177,8 @@ xfs_quota_disable( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -EINVAL; > + return -ENOSYS; > > 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); > xfs_dqid_t id; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > id = from_kqid(&init_user_ns, qid); > 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); > xfs_dqid_t id; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > id = from_kqid(&init_user_ns, *qid); > 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)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > return xfs_qm_scall_setqlim(mp, from_kqid(&init_user_ns, qid), > xfs_quota_type(qid.type), qdq); > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index 2c9e26a44546b8..36fc81e52dc22a 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -201,25 +201,20 @@ xfs_fs_show_options( > seq_printf(m, ",swidth=%d", > (int)XFS_FSB_TO_BB(mp, mp->m_swidth)); > > - if (mp->m_qflags & XFS_UQUOTA_ACCT) { > - if (mp->m_qflags & XFS_UQUOTA_ENFD) > - seq_puts(m, ",usrquota"); > - else > - seq_puts(m, ",uqnoenforce"); > - } > + if (mp->m_qflags & XFS_UQUOTA_ENFD) > + seq_puts(m, ",usrquota"); > + else if (mp->m_qflags & XFS_UQUOTA_ACCT) > + seq_puts(m, ",uqnoenforce"); > > - if (mp->m_qflags & XFS_PQUOTA_ACCT) { > - if (mp->m_qflags & XFS_PQUOTA_ENFD) > - seq_puts(m, ",prjquota"); > - else > - seq_puts(m, ",pqnoenforce"); > - } > - if (mp->m_qflags & XFS_GQUOTA_ACCT) { > - if (mp->m_qflags & XFS_GQUOTA_ENFD) > - seq_puts(m, ",grpquota"); > - else > - seq_puts(m, ",gqnoenforce"); > - } > + if (mp->m_qflags & XFS_PQUOTA_ENFD) > + seq_puts(m, ",prjquota"); > + else if (mp->m_qflags & XFS_PQUOTA_ACCT) > + seq_puts(m, ",pqnoenforce"); > + > + if (mp->m_qflags & XFS_GQUOTA_ENFD) > + seq_puts(m, ",grpquota"); > + else if (mp->m_qflags & XFS_GQUOTA_ACCT) > + seq_puts(m, ",gqnoenforce"); > > if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT)) > seq_puts(m, ",noquota"); > @@ -962,8 +957,8 @@ xfs_finish_flags( > return -EROFS; > } > > - if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && > - (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) && > + if ((mp->m_qflags & XFS_GQUOTA_ACCT) && > + (mp->m_qflags & XFS_PQUOTA_ACCT) && > !xfs_sb_version_has_pquotino(&mp->m_sb)) { > xfs_warn(mp, > "Super block does not support project and group quota together"); > @@ -1228,35 +1223,31 @@ xfs_fs_parse_param( > case Opt_noquota: > parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACCT; > parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ENFD; > - parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACTIVE; > return 0; > case Opt_quota: > case Opt_uquota: > case Opt_usrquota: > - parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ACTIVE | > - XFS_UQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ENFD); > return 0; > case Opt_qnoenforce: > 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; > return 0; > case Opt_pquota: > case Opt_prjquota: > - parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE | > - XFS_PQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ENFD); > return 0; > 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; > return 0; > case Opt_gquota: > case Opt_grpquota: > - parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE | > - XFS_GQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ENFD); > return 0; > 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; > return 0; > case Opt_discard: > diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c > index b7e4b05a559bdb..eb76bc5bed9d0a 100644 > --- a/fs/xfs/xfs_trans_dquot.c > +++ b/fs/xfs/xfs_trans_dquot.c > @@ -132,8 +132,7 @@ xfs_trans_mod_dquot_byino( > { > xfs_mount_t *mp = tp->t_mountp; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || > - !XFS_IS_QUOTA_ON(mp) || > + if (!XFS_IS_QUOTA_ON(mp) || > xfs_is_quota_inode(&mp->m_sb, ip->i_ino)) > return; > > @@ -192,7 +191,7 @@ xfs_trans_mod_dquot( > struct xfs_dqtrx *qtrx; > > ASSERT(tp); > - ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); > + ASSERT(XFS_IS_QUOTA_ON(tp->t_mountp)); > qtrx = NULL; > > if (!delta) > @@ -738,7 +737,7 @@ xfs_trans_reserve_quota_bydquots( > { > int error; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > ASSERT(flags & XFS_QMOPT_RESBLK_MASK); > @@ -795,7 +794,7 @@ xfs_trans_reserve_quota_nblks( > unsigned int qflags = 0; > int error; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > 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; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > return xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp, pdqp, > -- > 2.30.2 >
On Mon, Jul 12, 2021 at 01:14:26PM +0200, Christoph Hellwig wrote: > These only made a difference when quotaoff supported disabling quota > accounting on a mounted file system, so we can switch everyone to use Ugh, I hated that distinction. Thanks for making it go away. > 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> Nice cleanup! Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/xfs/libxfs/xfs_quota_defs.h | 30 +++----------------- > fs/xfs/scrub/quota.c | 2 +- > fs/xfs/xfs_dquot.c | 3 -- > fs/xfs/xfs_ioctl.c | 2 +- > fs/xfs/xfs_iops.c | 4 +-- > fs/xfs/xfs_mount.c | 4 +-- > fs/xfs/xfs_qm.c | 26 ++++++++--------- > fs/xfs/xfs_qm_syscalls.c | 2 +- > fs/xfs/xfs_quotaops.c | 30 +++++++------------- > fs/xfs/xfs_super.c | 51 ++++++++++++++-------------------- > fs/xfs/xfs_trans_dquot.c | 11 ++++---- > 11 files changed, 58 insertions(+), 107 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_quota_defs.h b/fs/xfs/libxfs/xfs_quota_defs.h > index 0f0af4e3503293..a02c5062f9b292 100644 > --- a/fs/xfs/libxfs/xfs_quota_defs.h > +++ b/fs/xfs/libxfs/xfs_quota_defs.h > @@ -60,36 +60,14 @@ typedef uint8_t xfs_dqtype_t; > #define XFS_DQUOT_LOGRES(mp) \ > ((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_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) > -#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) > -#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT) > +#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) > +#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) > +#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_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_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_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 > * to a single function. None of these XFS_QMOPT_* flags are meant to have > diff --git a/fs/xfs/scrub/quota.c b/fs/xfs/scrub/quota.c > index acbb9839d42fbd..3cccd6d5b57755 100644 > --- a/fs/xfs/scrub/quota.c > +++ b/fs/xfs/scrub/quota.c > @@ -42,7 +42,7 @@ xchk_setup_quota( > xfs_dqtype_t dqtype; > int error; > > - if (!XFS_IS_QUOTA_RUNNING(sc->mp) || !XFS_IS_QUOTA_ON(sc->mp)) > + if (!XFS_IS_QUOTA_ON(sc->mp)) > return -ENOENT; > > dqtype = xchk_quota_to_dqtype(sc); > diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c > index ecd5059d6928f7..c301b18b7685b1 100644 > --- a/fs/xfs/xfs_dquot.c > +++ b/fs/xfs/xfs_dquot.c > @@ -847,9 +847,6 @@ xfs_qm_dqget_checks( > struct xfs_mount *mp, > xfs_dqtype_t type) > { > - if (WARN_ON_ONCE(!XFS_IS_QUOTA_RUNNING(mp))) > - return -ESRCH; > - > switch (type) { > case XFS_DQTYPE_USER: > if (!XFS_IS_UQUOTA_ON(mp)) > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index 65270e63c032a0..9f4aa1477e2fca 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -1433,7 +1433,7 @@ xfs_fileattr_set( > > /* Change the ownerships and register project quota modifications */ > 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, > &ip->i_pdquot, pdqp); > } > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 93c082db04b78c..327d65ef1e268c 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -778,7 +778,7 @@ xfs_setattr_nonsize( > * in the transaction. > */ > 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(udqp); > olddquot1 = xfs_qm_vop_chown(tp, ip, > @@ -787,7 +787,7 @@ xfs_setattr_nonsize( > inode->i_uid = uid; > } > 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) || > !XFS_IS_PQUOTA_ON(mp)); > ASSERT(mask & ATTR_GID); > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index d0755494597f99..baf7b323cb15eb 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -836,13 +836,11 @@ xfs_mountfs( > /* > * 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); > if (error) > goto out_rtunmount; > } else { > - ASSERT(!XFS_IS_QUOTA_ON(mp)); > - > /* > * If a file system had quotas running earlier, but decided to > * mount without -o uquota/pquota/gquota options, revoke the > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > index 2b34273d0405e7..351d99bc52e5f8 100644 > --- a/fs/xfs/xfs_qm.c > +++ b/fs/xfs/xfs_qm.c > @@ -295,8 +295,6 @@ xfs_qm_need_dqattach( > { > struct xfs_mount *mp = ip->i_mount; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return false; > if (!XFS_IS_QUOTA_ON(mp)) > return false; > if (!XFS_NOT_DQATTACHED(mp, ip)) > @@ -631,7 +629,7 @@ xfs_qm_init_quotainfo( > struct xfs_quotainfo *qinf; > 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); > > @@ -676,11 +674,11 @@ xfs_qm_init_quotainfo( > xfs_qm_init_timelimits(mp, XFS_DQTYPE_GROUP); > 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); > - if (XFS_IS_GQUOTA_RUNNING(mp)) > + if (XFS_IS_GQUOTA_ON(mp)) > 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); > > 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 */ > 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 > @@ -1284,7 +1282,7 @@ xfs_qm_quotacheck( > flags = 0; > > ASSERT(uip || gip || pip); > - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); > + ASSERT(XFS_IS_QUOTA_ON(mp)); > > xfs_notice(mp, "Quotacheck needed: Please wait."); > > @@ -1414,7 +1412,7 @@ xfs_qm_mount_quotas( > goto write_changes; > } > > - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); > + ASSERT(XFS_IS_QUOTA_ON(mp)); > > /* > * 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 > * 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!", > __func__); > } > @@ -1641,7 +1639,7 @@ xfs_qm_vop_dqalloc( > int error; > uint lockflags; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > lockflags = XFS_ILOCK_EXCL; > @@ -1772,7 +1770,7 @@ xfs_qm_vop_chown( > > > 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 */ > prevdq = *IO_olddq; > @@ -1825,7 +1823,7 @@ xfs_qm_vop_rename_dqattach( > struct xfs_mount *mp = i_tab[0]->i_mount; > int i; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > 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; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return; > > ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); > diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c > index e00067a142a094..b5685ce666f70d 100644 > --- a/fs/xfs/xfs_qm_syscalls.c > +++ b/fs/xfs/xfs_qm_syscalls.c > @@ -204,7 +204,7 @@ xfs_qm_scall_quotaon( > (mp->m_qflags & XFS_GQUOTA_ACCT))) > return 0; > > - if (! XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return -ESRCH; > > /* > diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c > index 88d70c236a5445..07989bd677289a 100644 > --- a/fs/xfs/xfs_quotaops.c > +++ b/fs/xfs/xfs_quotaops.c > @@ -60,18 +60,18 @@ xfs_fs_get_quota_state( > struct xfs_quotainfo *q = mp->m_quotainfo; > > memset(state, 0, sizeof(*state)); > - if (!XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > 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; > if (XFS_IS_UQUOTA_ENFORCED(mp)) > 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; > if (XFS_IS_GQUOTA_ENFORCED(mp)) > 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; > if (XFS_IS_PQUOTA_ENFORCED(mp)) > state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED; > @@ -114,10 +114,8 @@ xfs_fs_set_info( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > if (info->i_fieldmask & ~XFS_QC_SETINFO_MASK) > return -EINVAL; > if ((info->i_fieldmask & XFS_QC_SETINFO_MASK) == 0) > @@ -164,7 +162,7 @@ xfs_quota_enable( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return -ENOSYS; > > return xfs_qm_scall_quotaon(mp, xfs_quota_flags(uflags)); > @@ -179,10 +177,8 @@ xfs_quota_disable( > > if (sb_rdonly(sb)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -EINVAL; > + return -ENOSYS; > > 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); > xfs_dqid_t id; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > id = from_kqid(&init_user_ns, qid); > 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); > xfs_dqid_t id; > > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > id = from_kqid(&init_user_ns, *qid); > 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)) > return -EROFS; > - if (!XFS_IS_QUOTA_RUNNING(mp)) > - return -ENOSYS; > if (!XFS_IS_QUOTA_ON(mp)) > - return -ESRCH; > + return -ENOSYS; > > return xfs_qm_scall_setqlim(mp, from_kqid(&init_user_ns, qid), > xfs_quota_type(qid.type), qdq); > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index 2c9e26a44546b8..36fc81e52dc22a 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -201,25 +201,20 @@ xfs_fs_show_options( > seq_printf(m, ",swidth=%d", > (int)XFS_FSB_TO_BB(mp, mp->m_swidth)); > > - if (mp->m_qflags & XFS_UQUOTA_ACCT) { > - if (mp->m_qflags & XFS_UQUOTA_ENFD) > - seq_puts(m, ",usrquota"); > - else > - seq_puts(m, ",uqnoenforce"); > - } > + if (mp->m_qflags & XFS_UQUOTA_ENFD) > + seq_puts(m, ",usrquota"); > + else if (mp->m_qflags & XFS_UQUOTA_ACCT) > + seq_puts(m, ",uqnoenforce"); > > - if (mp->m_qflags & XFS_PQUOTA_ACCT) { > - if (mp->m_qflags & XFS_PQUOTA_ENFD) > - seq_puts(m, ",prjquota"); > - else > - seq_puts(m, ",pqnoenforce"); > - } > - if (mp->m_qflags & XFS_GQUOTA_ACCT) { > - if (mp->m_qflags & XFS_GQUOTA_ENFD) > - seq_puts(m, ",grpquota"); > - else > - seq_puts(m, ",gqnoenforce"); > - } > + if (mp->m_qflags & XFS_PQUOTA_ENFD) > + seq_puts(m, ",prjquota"); > + else if (mp->m_qflags & XFS_PQUOTA_ACCT) > + seq_puts(m, ",pqnoenforce"); > + > + if (mp->m_qflags & XFS_GQUOTA_ENFD) > + seq_puts(m, ",grpquota"); > + else if (mp->m_qflags & XFS_GQUOTA_ACCT) > + seq_puts(m, ",gqnoenforce"); > > if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT)) > seq_puts(m, ",noquota"); > @@ -962,8 +957,8 @@ xfs_finish_flags( > return -EROFS; > } > > - if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && > - (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) && > + if ((mp->m_qflags & XFS_GQUOTA_ACCT) && > + (mp->m_qflags & XFS_PQUOTA_ACCT) && > !xfs_sb_version_has_pquotino(&mp->m_sb)) { > xfs_warn(mp, > "Super block does not support project and group quota together"); > @@ -1228,35 +1223,31 @@ xfs_fs_parse_param( > case Opt_noquota: > parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACCT; > parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ENFD; > - parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACTIVE; > return 0; > case Opt_quota: > case Opt_uquota: > case Opt_usrquota: > - parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ACTIVE | > - XFS_UQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ENFD); > return 0; > case Opt_qnoenforce: > 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; > return 0; > case Opt_pquota: > case Opt_prjquota: > - parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE | > - XFS_PQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ENFD); > return 0; > 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; > return 0; > case Opt_gquota: > case Opt_grpquota: > - parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE | > - XFS_GQUOTA_ENFD); > + parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ENFD); > return 0; > 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; > return 0; > case Opt_discard: > diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c > index b7e4b05a559bdb..eb76bc5bed9d0a 100644 > --- a/fs/xfs/xfs_trans_dquot.c > +++ b/fs/xfs/xfs_trans_dquot.c > @@ -132,8 +132,7 @@ xfs_trans_mod_dquot_byino( > { > xfs_mount_t *mp = tp->t_mountp; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || > - !XFS_IS_QUOTA_ON(mp) || > + if (!XFS_IS_QUOTA_ON(mp) || > xfs_is_quota_inode(&mp->m_sb, ip->i_ino)) > return; > > @@ -192,7 +191,7 @@ xfs_trans_mod_dquot( > struct xfs_dqtrx *qtrx; > > ASSERT(tp); > - ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); > + ASSERT(XFS_IS_QUOTA_ON(tp->t_mountp)); > qtrx = NULL; > > if (!delta) > @@ -738,7 +737,7 @@ xfs_trans_reserve_quota_bydquots( > { > int error; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > ASSERT(flags & XFS_QMOPT_RESBLK_MASK); > @@ -795,7 +794,7 @@ xfs_trans_reserve_quota_nblks( > unsigned int qflags = 0; > int error; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > 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; > > - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) > + if (!XFS_IS_QUOTA_ON(mp)) > return 0; > > return xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp, pdqp, > -- > 2.30.2 >
diff --git a/fs/xfs/libxfs/xfs_quota_defs.h b/fs/xfs/libxfs/xfs_quota_defs.h index 0f0af4e3503293..a02c5062f9b292 100644 --- a/fs/xfs/libxfs/xfs_quota_defs.h +++ b/fs/xfs/libxfs/xfs_quota_defs.h @@ -60,36 +60,14 @@ typedef uint8_t xfs_dqtype_t; #define XFS_DQUOT_LOGRES(mp) \ ((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_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) -#define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) -#define XFS_IS_GQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_GQUOTA_ACCT) +#define XFS_IS_QUOTA_ON(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) +#define XFS_IS_UQUOTA_ON(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) +#define XFS_IS_PQUOTA_ON(mp) ((mp)->m_qflags & XFS_PQUOTA_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_GQUOTA_ENFORCED(mp) ((mp)->m_qflags & XFS_GQUOTA_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 * to a single function. None of these XFS_QMOPT_* flags are meant to have diff --git a/fs/xfs/scrub/quota.c b/fs/xfs/scrub/quota.c index acbb9839d42fbd..3cccd6d5b57755 100644 --- a/fs/xfs/scrub/quota.c +++ b/fs/xfs/scrub/quota.c @@ -42,7 +42,7 @@ xchk_setup_quota( xfs_dqtype_t dqtype; int error; - if (!XFS_IS_QUOTA_RUNNING(sc->mp) || !XFS_IS_QUOTA_ON(sc->mp)) + if (!XFS_IS_QUOTA_ON(sc->mp)) return -ENOENT; dqtype = xchk_quota_to_dqtype(sc); diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c index ecd5059d6928f7..c301b18b7685b1 100644 --- a/fs/xfs/xfs_dquot.c +++ b/fs/xfs/xfs_dquot.c @@ -847,9 +847,6 @@ xfs_qm_dqget_checks( struct xfs_mount *mp, xfs_dqtype_t type) { - if (WARN_ON_ONCE(!XFS_IS_QUOTA_RUNNING(mp))) - return -ESRCH; - switch (type) { case XFS_DQTYPE_USER: if (!XFS_IS_UQUOTA_ON(mp)) diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 65270e63c032a0..9f4aa1477e2fca 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -1433,7 +1433,7 @@ xfs_fileattr_set( /* Change the ownerships and register project quota modifications */ 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, &ip->i_pdquot, pdqp); } diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 93c082db04b78c..327d65ef1e268c 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -778,7 +778,7 @@ xfs_setattr_nonsize( * in the transaction. */ 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(udqp); olddquot1 = xfs_qm_vop_chown(tp, ip, @@ -787,7 +787,7 @@ xfs_setattr_nonsize( inode->i_uid = uid; } 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) || !XFS_IS_PQUOTA_ON(mp)); ASSERT(mask & ATTR_GID); diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index d0755494597f99..baf7b323cb15eb 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -836,13 +836,11 @@ xfs_mountfs( /* * 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); if (error) goto out_rtunmount; } else { - ASSERT(!XFS_IS_QUOTA_ON(mp)); - /* * If a file system had quotas running earlier, but decided to * mount without -o uquota/pquota/gquota options, revoke the diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 2b34273d0405e7..351d99bc52e5f8 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -295,8 +295,6 @@ xfs_qm_need_dqattach( { struct xfs_mount *mp = ip->i_mount; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return false; if (!XFS_IS_QUOTA_ON(mp)) return false; if (!XFS_NOT_DQATTACHED(mp, ip)) @@ -631,7 +629,7 @@ xfs_qm_init_quotainfo( struct xfs_quotainfo *qinf; 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); @@ -676,11 +674,11 @@ xfs_qm_init_quotainfo( xfs_qm_init_timelimits(mp, XFS_DQTYPE_GROUP); 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); - if (XFS_IS_GQUOTA_RUNNING(mp)) + if (XFS_IS_GQUOTA_ON(mp)) 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); 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 */ 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 @@ -1284,7 +1282,7 @@ xfs_qm_quotacheck( flags = 0; ASSERT(uip || gip || pip); - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); + ASSERT(XFS_IS_QUOTA_ON(mp)); xfs_notice(mp, "Quotacheck needed: Please wait."); @@ -1414,7 +1412,7 @@ xfs_qm_mount_quotas( goto write_changes; } - ASSERT(XFS_IS_QUOTA_RUNNING(mp)); + ASSERT(XFS_IS_QUOTA_ON(mp)); /* * 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 * 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!", __func__); } @@ -1641,7 +1639,7 @@ xfs_qm_vop_dqalloc( int error; uint lockflags; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; lockflags = XFS_ILOCK_EXCL; @@ -1772,7 +1770,7 @@ xfs_qm_vop_chown( 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 */ prevdq = *IO_olddq; @@ -1825,7 +1823,7 @@ xfs_qm_vop_rename_dqattach( struct xfs_mount *mp = i_tab[0]->i_mount; int i; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; 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; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c index e00067a142a094..b5685ce666f70d 100644 --- a/fs/xfs/xfs_qm_syscalls.c +++ b/fs/xfs/xfs_qm_syscalls.c @@ -204,7 +204,7 @@ xfs_qm_scall_quotaon( (mp->m_qflags & XFS_GQUOTA_ACCT))) return 0; - if (! XFS_IS_QUOTA_RUNNING(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return -ESRCH; /* diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c index 88d70c236a5445..07989bd677289a 100644 --- a/fs/xfs/xfs_quotaops.c +++ b/fs/xfs/xfs_quotaops.c @@ -60,18 +60,18 @@ xfs_fs_get_quota_state( struct xfs_quotainfo *q = mp->m_quotainfo; memset(state, 0, sizeof(*state)); - if (!XFS_IS_QUOTA_RUNNING(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; 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; if (XFS_IS_UQUOTA_ENFORCED(mp)) 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; if (XFS_IS_GQUOTA_ENFORCED(mp)) 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; if (XFS_IS_PQUOTA_ENFORCED(mp)) state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED; @@ -114,10 +114,8 @@ xfs_fs_set_info( if (sb_rdonly(sb)) return -EROFS; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return -ENOSYS; if (!XFS_IS_QUOTA_ON(mp)) - return -ESRCH; + return -ENOSYS; if (info->i_fieldmask & ~XFS_QC_SETINFO_MASK) return -EINVAL; if ((info->i_fieldmask & XFS_QC_SETINFO_MASK) == 0) @@ -164,7 +162,7 @@ xfs_quota_enable( if (sb_rdonly(sb)) return -EROFS; - if (!XFS_IS_QUOTA_RUNNING(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return -ENOSYS; return xfs_qm_scall_quotaon(mp, xfs_quota_flags(uflags)); @@ -179,10 +177,8 @@ xfs_quota_disable( if (sb_rdonly(sb)) return -EROFS; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return -ENOSYS; if (!XFS_IS_QUOTA_ON(mp)) - return -EINVAL; + return -ENOSYS; 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); xfs_dqid_t id; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return -ENOSYS; if (!XFS_IS_QUOTA_ON(mp)) - return -ESRCH; + return -ENOSYS; id = from_kqid(&init_user_ns, qid); 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); xfs_dqid_t id; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return -ENOSYS; if (!XFS_IS_QUOTA_ON(mp)) - return -ESRCH; + return -ENOSYS; id = from_kqid(&init_user_ns, *qid); 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)) return -EROFS; - if (!XFS_IS_QUOTA_RUNNING(mp)) - return -ENOSYS; if (!XFS_IS_QUOTA_ON(mp)) - return -ESRCH; + return -ENOSYS; return xfs_qm_scall_setqlim(mp, from_kqid(&init_user_ns, qid), xfs_quota_type(qid.type), qdq); diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 2c9e26a44546b8..36fc81e52dc22a 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -201,25 +201,20 @@ xfs_fs_show_options( seq_printf(m, ",swidth=%d", (int)XFS_FSB_TO_BB(mp, mp->m_swidth)); - if (mp->m_qflags & XFS_UQUOTA_ACCT) { - if (mp->m_qflags & XFS_UQUOTA_ENFD) - seq_puts(m, ",usrquota"); - else - seq_puts(m, ",uqnoenforce"); - } + if (mp->m_qflags & XFS_UQUOTA_ENFD) + seq_puts(m, ",usrquota"); + else if (mp->m_qflags & XFS_UQUOTA_ACCT) + seq_puts(m, ",uqnoenforce"); - if (mp->m_qflags & XFS_PQUOTA_ACCT) { - if (mp->m_qflags & XFS_PQUOTA_ENFD) - seq_puts(m, ",prjquota"); - else - seq_puts(m, ",pqnoenforce"); - } - if (mp->m_qflags & XFS_GQUOTA_ACCT) { - if (mp->m_qflags & XFS_GQUOTA_ENFD) - seq_puts(m, ",grpquota"); - else - seq_puts(m, ",gqnoenforce"); - } + if (mp->m_qflags & XFS_PQUOTA_ENFD) + seq_puts(m, ",prjquota"); + else if (mp->m_qflags & XFS_PQUOTA_ACCT) + seq_puts(m, ",pqnoenforce"); + + if (mp->m_qflags & XFS_GQUOTA_ENFD) + seq_puts(m, ",grpquota"); + else if (mp->m_qflags & XFS_GQUOTA_ACCT) + seq_puts(m, ",gqnoenforce"); if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT)) seq_puts(m, ",noquota"); @@ -962,8 +957,8 @@ xfs_finish_flags( return -EROFS; } - if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) && - (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) && + if ((mp->m_qflags & XFS_GQUOTA_ACCT) && + (mp->m_qflags & XFS_PQUOTA_ACCT) && !xfs_sb_version_has_pquotino(&mp->m_sb)) { xfs_warn(mp, "Super block does not support project and group quota together"); @@ -1228,35 +1223,31 @@ xfs_fs_parse_param( case Opt_noquota: parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACCT; parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ENFD; - parsing_mp->m_qflags &= ~XFS_ALL_QUOTA_ACTIVE; return 0; case Opt_quota: case Opt_uquota: case Opt_usrquota: - parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ACTIVE | - XFS_UQUOTA_ENFD); + parsing_mp->m_qflags |= (XFS_UQUOTA_ACCT | XFS_UQUOTA_ENFD); return 0; case Opt_qnoenforce: 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; return 0; case Opt_pquota: case Opt_prjquota: - parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE | - XFS_PQUOTA_ENFD); + parsing_mp->m_qflags |= (XFS_PQUOTA_ACCT | XFS_PQUOTA_ENFD); return 0; 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; return 0; case Opt_gquota: case Opt_grpquota: - parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE | - XFS_GQUOTA_ENFD); + parsing_mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ENFD); return 0; 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; return 0; case Opt_discard: diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index b7e4b05a559bdb..eb76bc5bed9d0a 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c @@ -132,8 +132,7 @@ xfs_trans_mod_dquot_byino( { xfs_mount_t *mp = tp->t_mountp; - if (!XFS_IS_QUOTA_RUNNING(mp) || - !XFS_IS_QUOTA_ON(mp) || + if (!XFS_IS_QUOTA_ON(mp) || xfs_is_quota_inode(&mp->m_sb, ip->i_ino)) return; @@ -192,7 +191,7 @@ xfs_trans_mod_dquot( struct xfs_dqtrx *qtrx; ASSERT(tp); - ASSERT(XFS_IS_QUOTA_RUNNING(tp->t_mountp)); + ASSERT(XFS_IS_QUOTA_ON(tp->t_mountp)); qtrx = NULL; if (!delta) @@ -738,7 +737,7 @@ xfs_trans_reserve_quota_bydquots( { int error; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; ASSERT(flags & XFS_QMOPT_RESBLK_MASK); @@ -795,7 +794,7 @@ xfs_trans_reserve_quota_nblks( unsigned int qflags = 0; int error; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; 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; - if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + if (!XFS_IS_QUOTA_ON(mp)) return 0; return xfs_trans_reserve_quota_bydquots(tp, mp, udqp, gdqp, pdqp,
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> --- fs/xfs/libxfs/xfs_quota_defs.h | 30 +++----------------- fs/xfs/scrub/quota.c | 2 +- fs/xfs/xfs_dquot.c | 3 -- fs/xfs/xfs_ioctl.c | 2 +- fs/xfs/xfs_iops.c | 4 +-- fs/xfs/xfs_mount.c | 4 +-- fs/xfs/xfs_qm.c | 26 ++++++++--------- fs/xfs/xfs_qm_syscalls.c | 2 +- fs/xfs/xfs_quotaops.c | 30 +++++++------------- fs/xfs/xfs_super.c | 51 ++++++++++++++-------------------- fs/xfs/xfs_trans_dquot.c | 11 ++++---- 11 files changed, 58 insertions(+), 107 deletions(-)