diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_vnode.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_vnode.c | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/fs/xfs/linux-2.6/xfs_vnode.c b/fs/xfs/linux-2.6/xfs_vnode.c deleted file mode 100644 index b52528bbbfff..000000000000 --- a/fs/xfs/linux-2.6/xfs_vnode.c +++ /dev/null | |||
@@ -1,145 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #include "xfs.h" | ||
19 | #include "xfs_vnodeops.h" | ||
20 | #include "xfs_bmap_btree.h" | ||
21 | #include "xfs_inode.h" | ||
22 | |||
23 | /* | ||
24 | * And this gunk is needed for xfs_mount.h" | ||
25 | */ | ||
26 | #include "xfs_log.h" | ||
27 | #include "xfs_trans.h" | ||
28 | #include "xfs_sb.h" | ||
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_inum.h" | ||
31 | #include "xfs_ag.h" | ||
32 | #include "xfs_mount.h" | ||
33 | |||
34 | |||
35 | /* | ||
36 | * Dedicated vnode inactive/reclaim sync wait queues. | ||
37 | * Prime number of hash buckets since address is used as the key. | ||
38 | */ | ||
39 | #define NVSYNC 37 | ||
40 | #define vptosync(v) (&vsync[((unsigned long)v) % NVSYNC]) | ||
41 | static wait_queue_head_t vsync[NVSYNC]; | ||
42 | |||
43 | void __init | ||
44 | vn_init(void) | ||
45 | { | ||
46 | int i; | ||
47 | |||
48 | for (i = 0; i < NVSYNC; i++) | ||
49 | init_waitqueue_head(&vsync[i]); | ||
50 | } | ||
51 | |||
52 | void | ||
53 | vn_iowait( | ||
54 | xfs_inode_t *ip) | ||
55 | { | ||
56 | wait_queue_head_t *wq = vptosync(ip); | ||
57 | |||
58 | wait_event(*wq, (atomic_read(&ip->i_iocount) == 0)); | ||
59 | } | ||
60 | |||
61 | void | ||
62 | vn_iowake( | ||
63 | xfs_inode_t *ip) | ||
64 | { | ||
65 | if (atomic_dec_and_test(&ip->i_iocount)) | ||
66 | wake_up(vptosync(ip)); | ||
67 | } | ||
68 | |||
69 | /* | ||
70 | * Volume managers supporting multiple paths can send back ENODEV when the | ||
71 | * final path disappears. In this case continuing to fill the page cache | ||
72 | * with dirty data which cannot be written out is evil, so prevent that. | ||
73 | */ | ||
74 | void | ||
75 | vn_ioerror( | ||
76 | xfs_inode_t *ip, | ||
77 | int error, | ||
78 | char *f, | ||
79 | int l) | ||
80 | { | ||
81 | if (unlikely(error == -ENODEV)) | ||
82 | xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ, f, l); | ||
83 | } | ||
84 | |||
85 | #ifdef XFS_INODE_TRACE | ||
86 | |||
87 | /* | ||
88 | * Reference count of Linux inode if present, -1 if the xfs_inode | ||
89 | * has no associated Linux inode. | ||
90 | */ | ||
91 | static inline int xfs_icount(struct xfs_inode *ip) | ||
92 | { | ||
93 | struct inode *vp = VFS_I(ip); | ||
94 | |||
95 | if (vp) | ||
96 | return vn_count(vp); | ||
97 | return -1; | ||
98 | } | ||
99 | |||
100 | #define KTRACE_ENTER(ip, vk, s, line, ra) \ | ||
101 | ktrace_enter( (ip)->i_trace, \ | ||
102 | /* 0 */ (void *)(__psint_t)(vk), \ | ||
103 | /* 1 */ (void *)(s), \ | ||
104 | /* 2 */ (void *)(__psint_t) line, \ | ||
105 | /* 3 */ (void *)(__psint_t)xfs_icount(ip), \ | ||
106 | /* 4 */ (void *)(ra), \ | ||
107 | /* 5 */ NULL, \ | ||
108 | /* 6 */ (void *)(__psint_t)current_cpu(), \ | ||
109 | /* 7 */ (void *)(__psint_t)current_pid(), \ | ||
110 | /* 8 */ (void *)__return_address, \ | ||
111 | /* 9 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL) | ||
112 | |||
113 | /* | ||
114 | * Vnode tracing code. | ||
115 | */ | ||
116 | void | ||
117 | _xfs_itrace_entry(xfs_inode_t *ip, const char *func, inst_t *ra) | ||
118 | { | ||
119 | KTRACE_ENTER(ip, INODE_KTRACE_ENTRY, func, 0, ra); | ||
120 | } | ||
121 | |||
122 | void | ||
123 | _xfs_itrace_exit(xfs_inode_t *ip, const char *func, inst_t *ra) | ||
124 | { | ||
125 | KTRACE_ENTER(ip, INODE_KTRACE_EXIT, func, 0, ra); | ||
126 | } | ||
127 | |||
128 | void | ||
129 | xfs_itrace_hold(xfs_inode_t *ip, char *file, int line, inst_t *ra) | ||
130 | { | ||
131 | KTRACE_ENTER(ip, INODE_KTRACE_HOLD, file, line, ra); | ||
132 | } | ||
133 | |||
134 | void | ||
135 | _xfs_itrace_ref(xfs_inode_t *ip, char *file, int line, inst_t *ra) | ||
136 | { | ||
137 | KTRACE_ENTER(ip, INODE_KTRACE_REF, file, line, ra); | ||
138 | } | ||
139 | |||
140 | void | ||
141 | xfs_itrace_rele(xfs_inode_t *ip, char *file, int line, inst_t *ra) | ||
142 | { | ||
143 | KTRACE_ENTER(ip, INODE_KTRACE_RELE, file, line, ra); | ||
144 | } | ||
145 | #endif /* XFS_INODE_TRACE */ | ||