Loading fs/xfs/xfs_dquot.c +26 −65 Original line number Diff line number Diff line Loading @@ -98,6 +98,29 @@ xfs_qm_adjust_dqlimits( xfs_dquot_set_prealloc_limits(dq); } /* * Determine if this quota counter is over either limit and set the quota * timers as appropriate. */ static inline void xfs_qm_adjust_res_timer( struct xfs_dquot_res *res, struct xfs_quota_limits *qlim) { ASSERT(res->hardlimit == 0 || res->softlimit <= res->hardlimit); if ((res->softlimit && res->count > res->softlimit) || (res->hardlimit && res->count > res->hardlimit)) { if (res->timer == 0) res->timer = ktime_get_real_seconds() + qlim->time; } else { if (res->timer == 0) res->warnings = 0; else res->timer = 0; } } /* * Check the limits and timers of a dquot and start or reset timers * if necessary. Loading @@ -122,71 +145,9 @@ xfs_qm_adjust_dqtimers( ASSERT(dq->q_id); defq = xfs_get_defquota(qi, xfs_dquot_type(dq)); #ifdef DEBUG if (dq->q_blk.hardlimit) ASSERT(dq->q_blk.softlimit <= dq->q_blk.hardlimit); if (dq->q_ino.hardlimit) ASSERT(dq->q_ino.softlimit <= dq->q_ino.hardlimit); if (dq->q_rtb.hardlimit) ASSERT(dq->q_rtb.softlimit <= dq->q_rtb.hardlimit); #endif if (!dq->q_blk.timer) { if ((dq->q_blk.softlimit && (dq->q_blk.count > dq->q_blk.softlimit)) || (dq->q_blk.hardlimit && (dq->q_blk.count > dq->q_blk.hardlimit))) { dq->q_blk.timer = ktime_get_real_seconds() + defq->blk.time; } else { dq->q_blk.warnings = 0; } } else { if ((!dq->q_blk.softlimit || (dq->q_blk.count <= dq->q_blk.softlimit)) && (!dq->q_blk.hardlimit || (dq->q_blk.count <= dq->q_blk.hardlimit))) { dq->q_blk.timer = 0; } } if (!dq->q_ino.timer) { if ((dq->q_ino.softlimit && (dq->q_ino.count > dq->q_ino.softlimit)) || (dq->q_ino.hardlimit && (dq->q_ino.count > dq->q_ino.hardlimit))) { dq->q_ino.timer = ktime_get_real_seconds() + defq->ino.time; } else { dq->q_ino.warnings = 0; } } else { if ((!dq->q_ino.softlimit || (dq->q_ino.count <= dq->q_ino.softlimit)) && (!dq->q_ino.hardlimit || (dq->q_ino.count <= dq->q_ino.hardlimit))) { dq->q_ino.timer = 0; } } if (!dq->q_rtb.timer) { if ((dq->q_rtb.softlimit && (dq->q_rtb.count > dq->q_rtb.softlimit)) || (dq->q_rtb.hardlimit && (dq->q_rtb.count > dq->q_rtb.hardlimit))) { dq->q_rtb.timer = ktime_get_real_seconds() + defq->rtb.time; } else { dq->q_rtb.warnings = 0; } } else { if ((!dq->q_rtb.softlimit || (dq->q_rtb.count <= dq->q_rtb.softlimit)) && (!dq->q_rtb.hardlimit || (dq->q_rtb.count <= dq->q_rtb.hardlimit))) { dq->q_rtb.timer = 0; } } xfs_qm_adjust_res_timer(&dq->q_blk, &defq->blk); xfs_qm_adjust_res_timer(&dq->q_ino, &defq->ino); xfs_qm_adjust_res_timer(&dq->q_rtb, &defq->rtb); } /* Loading Loading
fs/xfs/xfs_dquot.c +26 −65 Original line number Diff line number Diff line Loading @@ -98,6 +98,29 @@ xfs_qm_adjust_dqlimits( xfs_dquot_set_prealloc_limits(dq); } /* * Determine if this quota counter is over either limit and set the quota * timers as appropriate. */ static inline void xfs_qm_adjust_res_timer( struct xfs_dquot_res *res, struct xfs_quota_limits *qlim) { ASSERT(res->hardlimit == 0 || res->softlimit <= res->hardlimit); if ((res->softlimit && res->count > res->softlimit) || (res->hardlimit && res->count > res->hardlimit)) { if (res->timer == 0) res->timer = ktime_get_real_seconds() + qlim->time; } else { if (res->timer == 0) res->warnings = 0; else res->timer = 0; } } /* * Check the limits and timers of a dquot and start or reset timers * if necessary. Loading @@ -122,71 +145,9 @@ xfs_qm_adjust_dqtimers( ASSERT(dq->q_id); defq = xfs_get_defquota(qi, xfs_dquot_type(dq)); #ifdef DEBUG if (dq->q_blk.hardlimit) ASSERT(dq->q_blk.softlimit <= dq->q_blk.hardlimit); if (dq->q_ino.hardlimit) ASSERT(dq->q_ino.softlimit <= dq->q_ino.hardlimit); if (dq->q_rtb.hardlimit) ASSERT(dq->q_rtb.softlimit <= dq->q_rtb.hardlimit); #endif if (!dq->q_blk.timer) { if ((dq->q_blk.softlimit && (dq->q_blk.count > dq->q_blk.softlimit)) || (dq->q_blk.hardlimit && (dq->q_blk.count > dq->q_blk.hardlimit))) { dq->q_blk.timer = ktime_get_real_seconds() + defq->blk.time; } else { dq->q_blk.warnings = 0; } } else { if ((!dq->q_blk.softlimit || (dq->q_blk.count <= dq->q_blk.softlimit)) && (!dq->q_blk.hardlimit || (dq->q_blk.count <= dq->q_blk.hardlimit))) { dq->q_blk.timer = 0; } } if (!dq->q_ino.timer) { if ((dq->q_ino.softlimit && (dq->q_ino.count > dq->q_ino.softlimit)) || (dq->q_ino.hardlimit && (dq->q_ino.count > dq->q_ino.hardlimit))) { dq->q_ino.timer = ktime_get_real_seconds() + defq->ino.time; } else { dq->q_ino.warnings = 0; } } else { if ((!dq->q_ino.softlimit || (dq->q_ino.count <= dq->q_ino.softlimit)) && (!dq->q_ino.hardlimit || (dq->q_ino.count <= dq->q_ino.hardlimit))) { dq->q_ino.timer = 0; } } if (!dq->q_rtb.timer) { if ((dq->q_rtb.softlimit && (dq->q_rtb.count > dq->q_rtb.softlimit)) || (dq->q_rtb.hardlimit && (dq->q_rtb.count > dq->q_rtb.hardlimit))) { dq->q_rtb.timer = ktime_get_real_seconds() + defq->rtb.time; } else { dq->q_rtb.warnings = 0; } } else { if ((!dq->q_rtb.softlimit || (dq->q_rtb.count <= dq->q_rtb.softlimit)) && (!dq->q_rtb.hardlimit || (dq->q_rtb.count <= dq->q_rtb.hardlimit))) { dq->q_rtb.timer = 0; } } xfs_qm_adjust_res_timer(&dq->q_blk, &defq->blk); xfs_qm_adjust_res_timer(&dq->q_ino, &defq->ino); xfs_qm_adjust_res_timer(&dq->q_rtb, &defq->rtb); } /* Loading