aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_vnode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_vnode.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_vnode.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/fs/xfs/linux-2.6/xfs_vnode.c b/fs/xfs/linux-2.6/xfs_vnode.c
index bde8d2e7f559..9d9464cf8de4 100644
--- a/fs/xfs/linux-2.6/xfs_vnode.c
+++ b/fs/xfs/linux-2.6/xfs_vnode.c
@@ -103,11 +103,6 @@ vn_initialize(
103 103
104 ASSERT(VN_CACHED(vp) == 0); 104 ASSERT(VN_CACHED(vp) == 0);
105 105
106#ifdef XFS_VNODE_TRACE
107 vp->v_trace = ktrace_alloc(VNODE_TRACE_SIZE, KM_SLEEP);
108#endif /* XFS_VNODE_TRACE */
109
110 vn_trace_exit(vp, __FUNCTION__, (inst_t *)__return_address);
111 return vp; 106 return vp;
112} 107}
113 108
@@ -158,7 +153,7 @@ __vn_revalidate(
158{ 153{
159 int error; 154 int error;
160 155
161 vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); 156 vn_trace_entry(xfs_vtoi(vp), __FUNCTION__, (inst_t *)__return_address);
162 vattr->va_mask = XFS_AT_STAT | XFS_AT_XFLAGS; 157 vattr->va_mask = XFS_AT_STAT | XFS_AT_XFLAGS;
163 error = xfs_getattr(xfs_vtoi(vp), vattr, 0); 158 error = xfs_getattr(xfs_vtoi(vp), vattr, 0);
164 if (likely(!error)) { 159 if (likely(!error)) {
@@ -196,12 +191,25 @@ vn_hold(
196 191
197#ifdef XFS_VNODE_TRACE 192#ifdef XFS_VNODE_TRACE
198 193
199#define KTRACE_ENTER(vp, vk, s, line, ra) \ 194/*
200 ktrace_enter( (vp)->v_trace, \ 195 * Reference count of Linux inode if present, -1 if the xfs_inode
196 * has no associated Linux inode.
197 */
198static inline int xfs_icount(struct xfs_inode *ip)
199{
200 bhv_vnode_t *vp = XFS_ITOV_NULL(ip);
201
202 if (vp)
203 return vn_count(vp);
204 return -1;
205}
206
207#define KTRACE_ENTER(ip, vk, s, line, ra) \
208 ktrace_enter( (ip)->i_trace, \
201/* 0 */ (void *)(__psint_t)(vk), \ 209/* 0 */ (void *)(__psint_t)(vk), \
202/* 1 */ (void *)(s), \ 210/* 1 */ (void *)(s), \
203/* 2 */ (void *)(__psint_t) line, \ 211/* 2 */ (void *)(__psint_t) line, \
204/* 3 */ (void *)(__psint_t)(vn_count(vp)), \ 212/* 3 */ (void *)(__psint_t)xfs_icount(ip), \
205/* 4 */ (void *)(ra), \ 213/* 4 */ (void *)(ra), \
206/* 5 */ NULL, \ 214/* 5 */ NULL, \
207/* 6 */ (void *)(__psint_t)current_cpu(), \ 215/* 6 */ (void *)(__psint_t)current_cpu(), \
@@ -213,32 +221,32 @@ vn_hold(
213 * Vnode tracing code. 221 * Vnode tracing code.
214 */ 222 */
215void 223void
216vn_trace_entry(bhv_vnode_t *vp, const char *func, inst_t *ra) 224vn_trace_entry(xfs_inode_t *ip, const char *func, inst_t *ra)
217{ 225{
218 KTRACE_ENTER(vp, VNODE_KTRACE_ENTRY, func, 0, ra); 226 KTRACE_ENTER(ip, VNODE_KTRACE_ENTRY, func, 0, ra);
219} 227}
220 228
221void 229void
222vn_trace_exit(bhv_vnode_t *vp, const char *func, inst_t *ra) 230vn_trace_exit(xfs_inode_t *ip, const char *func, inst_t *ra)
223{ 231{
224 KTRACE_ENTER(vp, VNODE_KTRACE_EXIT, func, 0, ra); 232 KTRACE_ENTER(ip, VNODE_KTRACE_EXIT, func, 0, ra);
225} 233}
226 234
227void 235void
228vn_trace_hold(bhv_vnode_t *vp, char *file, int line, inst_t *ra) 236vn_trace_hold(xfs_inode_t *ip, char *file, int line, inst_t *ra)
229{ 237{
230 KTRACE_ENTER(vp, VNODE_KTRACE_HOLD, file, line, ra); 238 KTRACE_ENTER(ip, VNODE_KTRACE_HOLD, file, line, ra);
231} 239}
232 240
233void 241void
234vn_trace_ref(bhv_vnode_t *vp, char *file, int line, inst_t *ra) 242vn_trace_ref(xfs_inode_t *ip, char *file, int line, inst_t *ra)
235{ 243{
236 KTRACE_ENTER(vp, VNODE_KTRACE_REF, file, line, ra); 244 KTRACE_ENTER(ip, VNODE_KTRACE_REF, file, line, ra);
237} 245}
238 246
239void 247void
240vn_trace_rele(bhv_vnode_t *vp, char *file, int line, inst_t *ra) 248vn_trace_rele(xfs_inode_t *ip, char *file, int line, inst_t *ra)
241{ 249{
242 KTRACE_ENTER(vp, VNODE_KTRACE_RELE, file, line, ra); 250 KTRACE_ENTER(ip, VNODE_KTRACE_RELE, file, line, ra);
243} 251}
244#endif /* XFS_VNODE_TRACE */ 252#endif /* XFS_VNODE_TRACE */