diff options
Diffstat (limited to 'fs/xfs/quota/xfs_qm.c')
-rw-r--r-- | fs/xfs/quota/xfs_qm.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 45b1bfef7388..9e627a8b5b0e 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include "xfs_trans_space.h" | 47 | #include "xfs_trans_space.h" |
48 | #include "xfs_utils.h" | 48 | #include "xfs_utils.h" |
49 | #include "xfs_qm.h" | 49 | #include "xfs_qm.h" |
50 | #include "xfs_trace.h" | ||
50 | 51 | ||
51 | /* | 52 | /* |
52 | * The global quota manager. There is only one of these for the entire | 53 | * The global quota manager. There is only one of these for the entire |
@@ -453,7 +454,7 @@ again: | |||
453 | xfs_dqunlock(dqp); | 454 | xfs_dqunlock(dqp); |
454 | continue; | 455 | continue; |
455 | } | 456 | } |
456 | xfs_dqtrace_entry(dqp, "FLUSHALL: DQDIRTY"); | 457 | |
457 | /* XXX a sentinel would be better */ | 458 | /* XXX a sentinel would be better */ |
458 | recl = XFS_QI_MPLRECLAIMS(mp); | 459 | recl = XFS_QI_MPLRECLAIMS(mp); |
459 | if (!xfs_dqflock_nowait(dqp)) { | 460 | if (!xfs_dqflock_nowait(dqp)) { |
@@ -651,7 +652,7 @@ xfs_qm_dqattach_one( | |||
651 | */ | 652 | */ |
652 | dqp = *IO_idqpp; | 653 | dqp = *IO_idqpp; |
653 | if (dqp) { | 654 | if (dqp) { |
654 | xfs_dqtrace_entry(dqp, "DQATTACH: found in ip"); | 655 | trace_xfs_dqattach_found(dqp); |
655 | return 0; | 656 | return 0; |
656 | } | 657 | } |
657 | 658 | ||
@@ -704,7 +705,7 @@ xfs_qm_dqattach_one( | |||
704 | if (error) | 705 | if (error) |
705 | return error; | 706 | return error; |
706 | 707 | ||
707 | xfs_dqtrace_entry(dqp, "DQATTACH: found by dqget"); | 708 | trace_xfs_dqattach_get(dqp); |
708 | 709 | ||
709 | /* | 710 | /* |
710 | * dqget may have dropped and re-acquired the ilock, but it guarantees | 711 | * dqget may have dropped and re-acquired the ilock, but it guarantees |
@@ -890,15 +891,15 @@ xfs_qm_dqdetach( | |||
890 | if (!(ip->i_udquot || ip->i_gdquot)) | 891 | if (!(ip->i_udquot || ip->i_gdquot)) |
891 | return; | 892 | return; |
892 | 893 | ||
894 | trace_xfs_dquot_dqdetach(ip); | ||
895 | |||
893 | ASSERT(ip->i_ino != ip->i_mount->m_sb.sb_uquotino); | 896 | ASSERT(ip->i_ino != ip->i_mount->m_sb.sb_uquotino); |
894 | ASSERT(ip->i_ino != ip->i_mount->m_sb.sb_gquotino); | 897 | ASSERT(ip->i_ino != ip->i_mount->m_sb.sb_gquotino); |
895 | if (ip->i_udquot) { | 898 | if (ip->i_udquot) { |
896 | xfs_dqtrace_entry_ino(ip->i_udquot, "DQDETTACH", ip); | ||
897 | xfs_qm_dqrele(ip->i_udquot); | 899 | xfs_qm_dqrele(ip->i_udquot); |
898 | ip->i_udquot = NULL; | 900 | ip->i_udquot = NULL; |
899 | } | 901 | } |
900 | if (ip->i_gdquot) { | 902 | if (ip->i_gdquot) { |
901 | xfs_dqtrace_entry_ino(ip->i_gdquot, "DQDETTACH", ip); | ||
902 | xfs_qm_dqrele(ip->i_gdquot); | 903 | xfs_qm_dqrele(ip->i_gdquot); |
903 | ip->i_gdquot = NULL; | 904 | ip->i_gdquot = NULL; |
904 | } | 905 | } |
@@ -977,7 +978,6 @@ xfs_qm_sync( | |||
977 | * across a disk write | 978 | * across a disk write |
978 | */ | 979 | */ |
979 | xfs_qm_mplist_unlock(mp); | 980 | xfs_qm_mplist_unlock(mp); |
980 | xfs_dqtrace_entry(dqp, "XQM_SYNC: DQFLUSH"); | ||
981 | error = xfs_qm_dqflush(dqp, flush_flags); | 981 | error = xfs_qm_dqflush(dqp, flush_flags); |
982 | xfs_dqunlock(dqp); | 982 | xfs_dqunlock(dqp); |
983 | if (error && XFS_FORCED_SHUTDOWN(mp)) | 983 | if (error && XFS_FORCED_SHUTDOWN(mp)) |
@@ -1350,7 +1350,8 @@ xfs_qm_reset_dqcounts( | |||
1350 | xfs_disk_dquot_t *ddq; | 1350 | xfs_disk_dquot_t *ddq; |
1351 | int j; | 1351 | int j; |
1352 | 1352 | ||
1353 | xfs_buftrace("RESET DQUOTS", bp); | 1353 | trace_xfs_reset_dqcounts(bp, _RET_IP_); |
1354 | |||
1354 | /* | 1355 | /* |
1355 | * Reset all counters and timers. They'll be | 1356 | * Reset all counters and timers. They'll be |
1356 | * started afresh by xfs_qm_quotacheck. | 1357 | * started afresh by xfs_qm_quotacheck. |
@@ -1543,7 +1544,9 @@ xfs_qm_quotacheck_dqadjust( | |||
1543 | xfs_qcnt_t rtblks) | 1544 | xfs_qcnt_t rtblks) |
1544 | { | 1545 | { |
1545 | ASSERT(XFS_DQ_IS_LOCKED(dqp)); | 1546 | ASSERT(XFS_DQ_IS_LOCKED(dqp)); |
1546 | xfs_dqtrace_entry(dqp, "QCHECK DQADJUST"); | 1547 | |
1548 | trace_xfs_dqadjust(dqp); | ||
1549 | |||
1547 | /* | 1550 | /* |
1548 | * Adjust the inode count and the block count to reflect this inode's | 1551 | * Adjust the inode count and the block count to reflect this inode's |
1549 | * resource usage. | 1552 | * resource usage. |
@@ -1994,7 +1997,9 @@ xfs_qm_shake_freelist( | |||
1994 | */ | 1997 | */ |
1995 | if (XFS_DQ_IS_DIRTY(dqp)) { | 1998 | if (XFS_DQ_IS_DIRTY(dqp)) { |
1996 | int error; | 1999 | int error; |
1997 | xfs_dqtrace_entry(dqp, "DQSHAKE: DQDIRTY"); | 2000 | |
2001 | trace_xfs_dqshake_dirty(dqp); | ||
2002 | |||
1998 | /* | 2003 | /* |
1999 | * We flush it delayed write, so don't bother | 2004 | * We flush it delayed write, so don't bother |
2000 | * releasing the mplock. | 2005 | * releasing the mplock. |
@@ -2038,7 +2043,9 @@ xfs_qm_shake_freelist( | |||
2038 | return nreclaimed; | 2043 | return nreclaimed; |
2039 | goto tryagain; | 2044 | goto tryagain; |
2040 | } | 2045 | } |
2041 | xfs_dqtrace_entry(dqp, "DQSHAKE: UNLINKING"); | 2046 | |
2047 | trace_xfs_dqshake_unlink(dqp); | ||
2048 | |||
2042 | #ifdef QUOTADEBUG | 2049 | #ifdef QUOTADEBUG |
2043 | cmn_err(CE_DEBUG, "Shake 0x%p, ID 0x%x\n", | 2050 | cmn_err(CE_DEBUG, "Shake 0x%p, ID 0x%x\n", |
2044 | dqp, be32_to_cpu(dqp->q_core.d_id)); | 2051 | dqp, be32_to_cpu(dqp->q_core.d_id)); |
@@ -2125,7 +2132,9 @@ xfs_qm_dqreclaim_one(void) | |||
2125 | */ | 2132 | */ |
2126 | if (dqp->dq_flags & XFS_DQ_WANT) { | 2133 | if (dqp->dq_flags & XFS_DQ_WANT) { |
2127 | ASSERT(! (dqp->dq_flags & XFS_DQ_INACTIVE)); | 2134 | ASSERT(! (dqp->dq_flags & XFS_DQ_INACTIVE)); |
2128 | xfs_dqtrace_entry(dqp, "DQRECLAIM: DQWANT"); | 2135 | |
2136 | trace_xfs_dqreclaim_want(dqp); | ||
2137 | |||
2129 | xfs_dqunlock(dqp); | 2138 | xfs_dqunlock(dqp); |
2130 | xfs_qm_freelist_unlock(xfs_Gqm); | 2139 | xfs_qm_freelist_unlock(xfs_Gqm); |
2131 | if (++restarts >= XFS_QM_RECLAIM_MAX_RESTARTS) | 2140 | if (++restarts >= XFS_QM_RECLAIM_MAX_RESTARTS) |
@@ -2171,7 +2180,9 @@ xfs_qm_dqreclaim_one(void) | |||
2171 | */ | 2180 | */ |
2172 | if (XFS_DQ_IS_DIRTY(dqp)) { | 2181 | if (XFS_DQ_IS_DIRTY(dqp)) { |
2173 | int error; | 2182 | int error; |
2174 | xfs_dqtrace_entry(dqp, "DQRECLAIM: DQDIRTY"); | 2183 | |
2184 | trace_xfs_dqreclaim_dirty(dqp); | ||
2185 | |||
2175 | /* | 2186 | /* |
2176 | * We flush it delayed write, so don't bother | 2187 | * We flush it delayed write, so don't bother |
2177 | * releasing the freelist lock. | 2188 | * releasing the freelist lock. |
@@ -2194,8 +2205,9 @@ xfs_qm_dqreclaim_one(void) | |||
2194 | if (!mutex_trylock(&dqp->q_hash->qh_lock)) | 2205 | if (!mutex_trylock(&dqp->q_hash->qh_lock)) |
2195 | goto mplistunlock; | 2206 | goto mplistunlock; |
2196 | 2207 | ||
2208 | trace_xfs_dqreclaim_unlink(dqp); | ||
2209 | |||
2197 | ASSERT(dqp->q_nrefs == 0); | 2210 | ASSERT(dqp->q_nrefs == 0); |
2198 | xfs_dqtrace_entry(dqp, "DQRECLAIM: UNLINKING"); | ||
2199 | XQM_MPLIST_REMOVE(&(XFS_QI_MPL_LIST(dqp->q_mount)), dqp); | 2211 | XQM_MPLIST_REMOVE(&(XFS_QI_MPL_LIST(dqp->q_mount)), dqp); |
2200 | XQM_HASHLIST_REMOVE(dqp->q_hash, dqp); | 2212 | XQM_HASHLIST_REMOVE(dqp->q_hash, dqp); |
2201 | XQM_FREELIST_REMOVE(dqp); | 2213 | XQM_FREELIST_REMOVE(dqp); |
@@ -2430,7 +2442,7 @@ xfs_qm_vop_dqalloc( | |||
2430 | } | 2442 | } |
2431 | } | 2443 | } |
2432 | if (uq) | 2444 | if (uq) |
2433 | xfs_dqtrace_entry_ino(uq, "DQALLOC", ip); | 2445 | trace_xfs_dquot_dqalloc(ip); |
2434 | 2446 | ||
2435 | xfs_iunlock(ip, lockflags); | 2447 | xfs_iunlock(ip, lockflags); |
2436 | if (O_udqpp) | 2448 | if (O_udqpp) |