| .. | .. |
|---|
| 4 | 4 | * All Rights Reserved. |
|---|
| 5 | 5 | */ |
|---|
| 6 | 6 | #include "xfs.h" |
|---|
| 7 | +#include "xfs_shared.h" |
|---|
| 7 | 8 | #include "xfs_format.h" |
|---|
| 8 | 9 | #include "xfs_log_format.h" |
|---|
| 9 | 10 | #include "xfs_trans_resv.h" |
|---|
| .. | .. |
|---|
| 11 | 12 | #include "xfs_inode.h" |
|---|
| 12 | 13 | #include "xfs_quota.h" |
|---|
| 13 | 14 | #include "xfs_trans.h" |
|---|
| 14 | | -#include "xfs_trace.h" |
|---|
| 15 | 15 | #include "xfs_icache.h" |
|---|
| 16 | 16 | #include "xfs_qm.h" |
|---|
| 17 | | -#include <linux/quota.h> |
|---|
| 18 | 17 | |
|---|
| 19 | 18 | |
|---|
| 20 | 19 | static void |
|---|
| .. | .. |
|---|
| 22 | 21 | struct qc_type_state *tstate, |
|---|
| 23 | 22 | struct xfs_mount *mp, |
|---|
| 24 | 23 | struct xfs_inode *ip, |
|---|
| 25 | | - xfs_ino_t ino) |
|---|
| 24 | + xfs_ino_t ino, |
|---|
| 25 | + struct xfs_def_quota *defq) |
|---|
| 26 | 26 | { |
|---|
| 27 | | - struct xfs_quotainfo *q = mp->m_quotainfo; |
|---|
| 28 | | - bool tempqip = false; |
|---|
| 27 | + bool tempqip = false; |
|---|
| 29 | 28 | |
|---|
| 30 | 29 | tstate->ino = ino; |
|---|
| 31 | 30 | if (!ip && ino == NULLFSINO) |
|---|
| .. | .. |
|---|
| 37 | 36 | } |
|---|
| 38 | 37 | tstate->flags |= QCI_SYSFILE; |
|---|
| 39 | 38 | tstate->blocks = ip->i_d.di_nblocks; |
|---|
| 40 | | - tstate->nextents = ip->i_d.di_nextents; |
|---|
| 41 | | - tstate->spc_timelimit = q->qi_btimelimit; |
|---|
| 42 | | - tstate->ino_timelimit = q->qi_itimelimit; |
|---|
| 43 | | - tstate->rt_spc_timelimit = q->qi_rtbtimelimit; |
|---|
| 44 | | - tstate->spc_warnlimit = q->qi_bwarnlimit; |
|---|
| 45 | | - tstate->ino_warnlimit = q->qi_iwarnlimit; |
|---|
| 46 | | - tstate->rt_spc_warnlimit = q->qi_rtbwarnlimit; |
|---|
| 39 | + tstate->nextents = ip->i_df.if_nextents; |
|---|
| 40 | + tstate->spc_timelimit = (u32)defq->blk.time; |
|---|
| 41 | + tstate->ino_timelimit = (u32)defq->ino.time; |
|---|
| 42 | + tstate->rt_spc_timelimit = (u32)defq->rtb.time; |
|---|
| 43 | + tstate->spc_warnlimit = defq->blk.warn; |
|---|
| 44 | + tstate->ino_warnlimit = defq->ino.warn; |
|---|
| 45 | + tstate->rt_spc_warnlimit = defq->rtb.warn; |
|---|
| 47 | 46 | if (tempqip) |
|---|
| 48 | 47 | xfs_irele(ip); |
|---|
| 49 | 48 | } |
|---|
| .. | .. |
|---|
| 78 | 77 | state->s_state[PRJQUOTA].flags |= QCI_LIMITS_ENFORCED; |
|---|
| 79 | 78 | |
|---|
| 80 | 79 | xfs_qm_fill_state(&state->s_state[USRQUOTA], mp, q->qi_uquotaip, |
|---|
| 81 | | - mp->m_sb.sb_uquotino); |
|---|
| 80 | + mp->m_sb.sb_uquotino, &q->qi_usr_default); |
|---|
| 82 | 81 | xfs_qm_fill_state(&state->s_state[GRPQUOTA], mp, q->qi_gquotaip, |
|---|
| 83 | | - mp->m_sb.sb_gquotino); |
|---|
| 82 | + mp->m_sb.sb_gquotino, &q->qi_grp_default); |
|---|
| 84 | 83 | xfs_qm_fill_state(&state->s_state[PRJQUOTA], mp, q->qi_pquotaip, |
|---|
| 85 | | - mp->m_sb.sb_pquotino); |
|---|
| 84 | + mp->m_sb.sb_pquotino, &q->qi_prj_default); |
|---|
| 86 | 85 | return 0; |
|---|
| 87 | 86 | } |
|---|
| 88 | 87 | |
|---|
| 89 | | -STATIC int |
|---|
| 88 | +STATIC xfs_dqtype_t |
|---|
| 90 | 89 | xfs_quota_type(int type) |
|---|
| 91 | 90 | { |
|---|
| 92 | 91 | switch (type) { |
|---|
| 93 | 92 | case USRQUOTA: |
|---|
| 94 | | - return XFS_DQ_USER; |
|---|
| 93 | + return XFS_DQTYPE_USER; |
|---|
| 95 | 94 | case GRPQUOTA: |
|---|
| 96 | | - return XFS_DQ_GROUP; |
|---|
| 95 | + return XFS_DQTYPE_GROUP; |
|---|
| 97 | 96 | default: |
|---|
| 98 | | - return XFS_DQ_PROJ; |
|---|
| 97 | + return XFS_DQTYPE_PROJ; |
|---|
| 99 | 98 | } |
|---|
| 100 | 99 | } |
|---|
| 101 | 100 | |
|---|
| .. | .. |
|---|
| 110 | 109 | int type, |
|---|
| 111 | 110 | struct qc_info *info) |
|---|
| 112 | 111 | { |
|---|
| 113 | | - struct xfs_mount *mp = XFS_M(sb); |
|---|
| 114 | | - struct qc_dqblk newlim; |
|---|
| 112 | + struct xfs_mount *mp = XFS_M(sb); |
|---|
| 113 | + struct qc_dqblk newlim; |
|---|
| 115 | 114 | |
|---|
| 116 | 115 | if (sb_rdonly(sb)) |
|---|
| 117 | 116 | return -EROFS; |
|---|
| .. | .. |
|---|
| 206 | 205 | return -EINVAL; |
|---|
| 207 | 206 | |
|---|
| 208 | 207 | if (uflags & FS_USER_QUOTA) |
|---|
| 209 | | - flags |= XFS_DQ_USER; |
|---|
| 208 | + flags |= XFS_QMOPT_UQUOTA; |
|---|
| 210 | 209 | if (uflags & FS_GROUP_QUOTA) |
|---|
| 211 | | - flags |= XFS_DQ_GROUP; |
|---|
| 210 | + flags |= XFS_QMOPT_GQUOTA; |
|---|
| 212 | 211 | if (uflags & FS_PROJ_QUOTA) |
|---|
| 213 | | - flags |= XFS_DQ_PROJ; |
|---|
| 212 | + flags |= XFS_QMOPT_PQUOTA; |
|---|
| 214 | 213 | |
|---|
| 215 | 214 | return xfs_qm_scall_trunc_qfiles(mp, flags); |
|---|
| 216 | 215 | } |
|---|