[XFS] kill the vfs_flags member in struct bhv_vfs
[deliverable/linux.git] / fs / xfs / linux-2.6 / xfs_vfs.c
1 /*
2 * Copyright (c) 2000-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_fs.h"
20 #include "xfs_inum.h"
21 #include "xfs_log.h"
22 #include "xfs_clnt.h"
23 #include "xfs_trans.h"
24 #include "xfs_sb.h"
25 #include "xfs_ag.h"
26 #include "xfs_dir2.h"
27 #include "xfs_imap.h"
28 #include "xfs_alloc.h"
29 #include "xfs_dmapi.h"
30 #include "xfs_mount.h"
31 #include "xfs_quota.h"
32
33 int
34 vfs_mount(
35 struct bhv_desc *bdp,
36 struct xfs_mount_args *args,
37 struct cred *cr)
38 {
39 struct bhv_desc *next = bdp;
40
41 ASSERT(next);
42 while (! (bhvtovfsops(next))->vfs_mount)
43 next = BHV_NEXT(next);
44 return ((*bhvtovfsops(next)->vfs_mount)(next, args, cr));
45 }
46
47 int
48 vfs_parseargs(
49 struct bhv_desc *bdp,
50 char *s,
51 struct xfs_mount_args *args,
52 int f)
53 {
54 struct bhv_desc *next = bdp;
55
56 ASSERT(next);
57 while (! (bhvtovfsops(next))->vfs_parseargs)
58 next = BHV_NEXT(next);
59 return ((*bhvtovfsops(next)->vfs_parseargs)(next, s, args, f));
60 }
61
62 int
63 vfs_showargs(
64 struct bhv_desc *bdp,
65 struct seq_file *m)
66 {
67 struct bhv_desc *next = bdp;
68
69 ASSERT(next);
70 while (! (bhvtovfsops(next))->vfs_showargs)
71 next = BHV_NEXT(next);
72 return ((*bhvtovfsops(next)->vfs_showargs)(next, m));
73 }
74
75 int
76 vfs_unmount(
77 struct bhv_desc *bdp,
78 int fl,
79 struct cred *cr)
80 {
81 struct bhv_desc *next = bdp;
82
83 ASSERT(next);
84 while (! (bhvtovfsops(next))->vfs_unmount)
85 next = BHV_NEXT(next);
86 return ((*bhvtovfsops(next)->vfs_unmount)(next, fl, cr));
87 }
88
89 int
90 vfs_mntupdate(
91 struct bhv_desc *bdp,
92 int *fl,
93 struct xfs_mount_args *args)
94 {
95 struct bhv_desc *next = bdp;
96
97 ASSERT(next);
98 while (! (bhvtovfsops(next))->vfs_mntupdate)
99 next = BHV_NEXT(next);
100 return ((*bhvtovfsops(next)->vfs_mntupdate)(next, fl, args));
101 }
102
103 int
104 vfs_root(
105 struct bhv_desc *bdp,
106 bhv_vnode_t **vpp)
107 {
108 struct bhv_desc *next = bdp;
109
110 ASSERT(next);
111 while (! (bhvtovfsops(next))->vfs_root)
112 next = BHV_NEXT(next);
113 return ((*bhvtovfsops(next)->vfs_root)(next, vpp));
114 }
115
116 int
117 vfs_statvfs(
118 struct bhv_desc *bdp,
119 bhv_statvfs_t *statp,
120 bhv_vnode_t *vp)
121 {
122 struct bhv_desc *next = bdp;
123
124 ASSERT(next);
125 while (! (bhvtovfsops(next))->vfs_statvfs)
126 next = BHV_NEXT(next);
127 return ((*bhvtovfsops(next)->vfs_statvfs)(next, statp, vp));
128 }
129
130 int
131 vfs_sync(
132 struct bhv_desc *bdp,
133 int fl,
134 struct cred *cr)
135 {
136 struct bhv_desc *next = bdp;
137
138 ASSERT(next);
139 while (! (bhvtovfsops(next))->vfs_sync)
140 next = BHV_NEXT(next);
141 return ((*bhvtovfsops(next)->vfs_sync)(next, fl, cr));
142 }
143
144 int
145 vfs_vget(
146 struct bhv_desc *bdp,
147 bhv_vnode_t **vpp,
148 struct fid *fidp)
149 {
150 struct bhv_desc *next = bdp;
151
152 ASSERT(next);
153 while (! (bhvtovfsops(next))->vfs_vget)
154 next = BHV_NEXT(next);
155 return ((*bhvtovfsops(next)->vfs_vget)(next, vpp, fidp));
156 }
157
158 void
159 vfs_init_vnode(
160 struct bhv_desc *bdp,
161 bhv_vnode_t *vp,
162 struct xfs_inode *ip,
163 int unlock)
164 {
165 struct bhv_desc *next = bdp;
166
167 ASSERT(next);
168 while (! (bhvtovfsops(next))->vfs_init_vnode)
169 next = BHV_NEXT(next);
170 ((*bhvtovfsops(next)->vfs_init_vnode)(next, vp, ip, unlock));
171 }
172
173 void
174 vfs_force_shutdown(
175 struct bhv_desc *bdp,
176 int fl,
177 char *file,
178 int line)
179 {
180 struct bhv_desc *next = bdp;
181
182 ASSERT(next);
183 while (! (bhvtovfsops(next))->vfs_force_shutdown)
184 next = BHV_NEXT(next);
185 ((*bhvtovfsops(next)->vfs_force_shutdown)(next, fl, file, line));
186 }
187
188 void
189 vfs_freeze(
190 struct bhv_desc *bdp)
191 {
192 struct bhv_desc *next = bdp;
193
194 ASSERT(next);
195 while (! (bhvtovfsops(next))->vfs_freeze)
196 next = BHV_NEXT(next);
197 ((*bhvtovfsops(next)->vfs_freeze)(next));
198 }
199
200 bhv_vfs_t *
201 vfs_allocate(
202 struct super_block *sb)
203 {
204 struct bhv_vfs *vfsp;
205
206 vfsp = kmem_zalloc(sizeof(bhv_vfs_t), KM_SLEEP);
207 INIT_LIST_HEAD(&vfsp->vfs_sync_list);
208 spin_lock_init(&vfsp->vfs_sync_lock);
209 init_waitqueue_head(&vfsp->vfs_wait_single_sync_task);
210
211 vfsp->vfs_super = sb;
212 sb->s_fs_info = vfsp;
213
214 return vfsp;
215 }
216
217 bhv_vfs_t *
218 vfs_from_sb(
219 struct super_block *sb)
220 {
221 return (bhv_vfs_t *)sb->s_fs_info;
222 }
223
224 void
225 vfs_deallocate(
226 struct bhv_vfs *vfsp)
227 {
228 kmem_free(vfsp, sizeof(bhv_vfs_t));
229 }
This page took 0.150785 seconds and 5 git commands to generate.