Deleted Added
full compact
nfs_vnops.c (30430) nfs_vnops.c (30431)
1/*
2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Rick Macklem at The University of Guelph.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
1/*
2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Rick Macklem at The University of Guelph.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
37 * $Id: nfs_vnops.c,v 1.62 1997/10/05 12:28:59 phk Exp $
37 * $Id: nfs_vnops.c,v 1.63 1997/10/15 07:42:31 phk Exp $
38 */
39
40
41/*
42 * vnode op calls for Sun NFS version 2 and 3
43 */
44
45#include <sys/param.h>

--- 84 unchanged lines hidden (view full) ---

130static int nfs_pathconf __P((struct vop_pathconf_args *));
131static int nfs_advlock __P((struct vop_advlock_args *));
132static int nfs_bwrite __P((struct vop_bwrite_args *));
133/*
134 * Global vfs data structures for nfs
135 */
136vop_t **nfsv2_vnodeop_p;
137static struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = {
38 */
39
40
41/*
42 * vnode op calls for Sun NFS version 2 and 3
43 */
44
45#include <sys/param.h>

--- 84 unchanged lines hidden (view full) ---

130static int nfs_pathconf __P((struct vop_pathconf_args *));
131static int nfs_advlock __P((struct vop_advlock_args *));
132static int nfs_bwrite __P((struct vop_bwrite_args *));
133/*
134 * Global vfs data structures for nfs
135 */
136vop_t **nfsv2_vnodeop_p;
137static struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = {
138 { &vop_default_desc, (vop_t *)vn_default_error },
139 { &vop_lookup_desc, (vop_t *)nfs_lookup }, /* lookup */
140 { &vop_create_desc, (vop_t *)nfs_create }, /* create */
141/* XXX: vop_whiteout */
142 { &vop_mknod_desc, (vop_t *)nfs_mknod }, /* mknod */
143 { &vop_open_desc, (vop_t *)nfs_open }, /* open */
144 { &vop_close_desc, (vop_t *)nfs_close }, /* close */
145 { &vop_access_desc, (vop_t *)nfs_access }, /* access */
146 { &vop_getattr_desc, (vop_t *)nfs_getattr }, /* getattr */
147 { &vop_setattr_desc, (vop_t *)nfs_setattr }, /* setattr */
148 { &vop_read_desc, (vop_t *)nfs_read }, /* read */
149 { &vop_write_desc, (vop_t *)nfs_write }, /* write */
150 { &vop_lease_desc, (vop_t *)nfs_lease_check }, /* lease */
151 { &vop_ioctl_desc, (vop_t *)nfs_ioctl }, /* ioctl */
152 { &vop_poll_desc, (vop_t *)nfs_poll }, /* poll */
153 { &vop_revoke_desc, (vop_t *)nfs_revoke }, /* revoke */
154 { &vop_mmap_desc, (vop_t *)nfs_mmap }, /* mmap */
155 { &vop_fsync_desc, (vop_t *)nfs_fsync }, /* fsync */
156 { &vop_seek_desc, (vop_t *)nfs_seek }, /* seek */
157 { &vop_remove_desc, (vop_t *)nfs_remove }, /* remove */
158 { &vop_link_desc, (vop_t *)nfs_link }, /* link */
159 { &vop_rename_desc, (vop_t *)nfs_rename }, /* rename */
160 { &vop_mkdir_desc, (vop_t *)nfs_mkdir }, /* mkdir */
161 { &vop_rmdir_desc, (vop_t *)nfs_rmdir }, /* rmdir */
162 { &vop_symlink_desc, (vop_t *)nfs_symlink }, /* symlink */
163 { &vop_readdir_desc, (vop_t *)nfs_readdir }, /* readdir */
164 { &vop_readlink_desc, (vop_t *)nfs_readlink }, /* readlink */
165 { &vop_abortop_desc, (vop_t *)nfs_abortop }, /* abortop */
166 { &vop_inactive_desc, (vop_t *)nfs_inactive }, /* inactive */
167 { &vop_reclaim_desc, (vop_t *)nfs_reclaim }, /* reclaim */
168 { &vop_lock_desc, (vop_t *)nfs_lock }, /* lock */
169 { &vop_unlock_desc, (vop_t *)nfs_unlock }, /* unlock */
170 { &vop_bmap_desc, (vop_t *)nfs_bmap }, /* bmap */
171 { &vop_strategy_desc, (vop_t *)nfs_strategy }, /* strategy */
172 { &vop_print_desc, (vop_t *)nfs_print }, /* print */
173 { &vop_islocked_desc, (vop_t *)nfs_islocked }, /* islocked */
174 { &vop_pathconf_desc, (vop_t *)nfs_pathconf }, /* pathconf */
175 { &vop_advlock_desc, (vop_t *)nfs_advlock }, /* advlock */
176 { &vop_getpages_desc, (vop_t *)nfs_getpages }, /* getpages */
177/* XXX: vop_putpages */
178 { &vop_bwrite_desc, (vop_t *)nfs_bwrite }, /* bwrite */
138 { &vop_default_desc, (vop_t *) vn_default_error },
139 { &vop_abortop_desc, (vop_t *) nfs_abortop },
140 { &vop_access_desc, (vop_t *) nfs_access },
141 { &vop_advlock_desc, (vop_t *) nfs_advlock },
142 { &vop_bmap_desc, (vop_t *) nfs_bmap },
143 { &vop_bwrite_desc, (vop_t *) nfs_bwrite },
144 { &vop_close_desc, (vop_t *) nfs_close },
145 { &vop_create_desc, (vop_t *) nfs_create },
146 { &vop_fsync_desc, (vop_t *) nfs_fsync },
147 { &vop_getattr_desc, (vop_t *) nfs_getattr },
148 { &vop_getpages_desc, (vop_t *) nfs_getpages },
149 { &vop_inactive_desc, (vop_t *) nfs_inactive },
150 { &vop_ioctl_desc, (vop_t *) nfs_ioctl },
151 { &vop_islocked_desc, (vop_t *) nfs_islocked },
152 { &vop_lease_desc, (vop_t *) nfs_lease_check },
153 { &vop_link_desc, (vop_t *) nfs_link },
154 { &vop_lock_desc, (vop_t *) nfs_lock },
155 { &vop_lookup_desc, (vop_t *) nfs_lookup },
156 { &vop_mkdir_desc, (vop_t *) nfs_mkdir },
157 { &vop_mknod_desc, (vop_t *) nfs_mknod },
158 { &vop_mmap_desc, (vop_t *) nfs_mmap },
159 { &vop_open_desc, (vop_t *) nfs_open },
160 { &vop_pathconf_desc, (vop_t *) nfs_pathconf },
161 { &vop_poll_desc, (vop_t *) nfs_poll },
162 { &vop_print_desc, (vop_t *) nfs_print },
163 { &vop_read_desc, (vop_t *) nfs_read },
164 { &vop_readdir_desc, (vop_t *) nfs_readdir },
165 { &vop_readlink_desc, (vop_t *) nfs_readlink },
166 { &vop_reclaim_desc, (vop_t *) nfs_reclaim },
167 { &vop_remove_desc, (vop_t *) nfs_remove },
168 { &vop_rename_desc, (vop_t *) nfs_rename },
169 { &vop_revoke_desc, (vop_t *) nfs_revoke },
170 { &vop_rmdir_desc, (vop_t *) nfs_rmdir },
171 { &vop_seek_desc, (vop_t *) nfs_seek },
172 { &vop_setattr_desc, (vop_t *) nfs_setattr },
173 { &vop_strategy_desc, (vop_t *) nfs_strategy },
174 { &vop_symlink_desc, (vop_t *) nfs_symlink },
175 { &vop_unlock_desc, (vop_t *) nfs_unlock },
176 { &vop_write_desc, (vop_t *) nfs_write },
179 { NULL, NULL }
180};
181static struct vnodeopv_desc nfsv2_vnodeop_opv_desc =
182 { &nfsv2_vnodeop_p, nfsv2_vnodeop_entries };
183VNODEOP_SET(nfsv2_vnodeop_opv_desc);
184
185/*
186 * Special device vnode ops
187 */
188vop_t **spec_nfsv2nodeop_p;
189static struct vnodeopv_entry_desc spec_nfsv2nodeop_entries[] = {
177 { NULL, NULL }
178};
179static struct vnodeopv_desc nfsv2_vnodeop_opv_desc =
180 { &nfsv2_vnodeop_p, nfsv2_vnodeop_entries };
181VNODEOP_SET(nfsv2_vnodeop_opv_desc);
182
183/*
184 * Special device vnode ops
185 */
186vop_t **spec_nfsv2nodeop_p;
187static struct vnodeopv_entry_desc spec_nfsv2nodeop_entries[] = {
190 { &vop_default_desc, (vop_t *)vn_default_error },
191 { &vop_lookup_desc, (vop_t *)spec_lookup }, /* lookup */
192/* XXX: vop_cachedlookup */
193 { &vop_create_desc, (vop_t *)spec_create }, /* create */
194/* XXX: vop_whiteout */
195 { &vop_mknod_desc, (vop_t *)spec_mknod }, /* mknod */
196 { &vop_open_desc, (vop_t *)spec_open }, /* open */
197 { &vop_close_desc, (vop_t *)nfsspec_close }, /* close */
198 { &vop_access_desc, (vop_t *)nfsspec_access }, /* access */
199 { &vop_getattr_desc, (vop_t *)nfs_getattr }, /* getattr */
200 { &vop_setattr_desc, (vop_t *)nfs_setattr }, /* setattr */
201 { &vop_read_desc, (vop_t *)nfsspec_read }, /* read */
202 { &vop_write_desc, (vop_t *)nfsspec_write }, /* write */
203 { &vop_lease_desc, (vop_t *)spec_lease_check }, /* lease */
204 { &vop_ioctl_desc, (vop_t *)spec_ioctl }, /* ioctl */
205 { &vop_poll_desc, (vop_t *)spec_poll }, /* poll */
206 { &vop_revoke_desc, (vop_t *)spec_revoke }, /* revoke */
207 { &vop_mmap_desc, (vop_t *)spec_mmap }, /* mmap */
208 { &vop_fsync_desc, (vop_t *)nfs_fsync }, /* fsync */
209 { &vop_seek_desc, (vop_t *)spec_seek }, /* seek */
210 { &vop_remove_desc, (vop_t *)spec_remove }, /* remove */
211 { &vop_link_desc, (vop_t *)spec_link }, /* link */
212 { &vop_rename_desc, (vop_t *)spec_rename }, /* rename */
213 { &vop_mkdir_desc, (vop_t *)spec_mkdir }, /* mkdir */
214 { &vop_rmdir_desc, (vop_t *)spec_rmdir }, /* rmdir */
215 { &vop_symlink_desc, (vop_t *)spec_symlink }, /* symlink */
216 { &vop_readdir_desc, (vop_t *)spec_readdir }, /* readdir */
217 { &vop_readlink_desc, (vop_t *)spec_readlink }, /* readlink */
218 { &vop_abortop_desc, (vop_t *)spec_abortop }, /* abortop */
219 { &vop_inactive_desc, (vop_t *)nfs_inactive }, /* inactive */
220 { &vop_reclaim_desc, (vop_t *)nfs_reclaim }, /* reclaim */
221 { &vop_lock_desc, (vop_t *)nfs_lock }, /* lock */
222 { &vop_unlock_desc, (vop_t *)nfs_unlock }, /* unlock */
223 { &vop_bmap_desc, (vop_t *)spec_bmap }, /* bmap */
224 { &vop_strategy_desc, (vop_t *)spec_strategy }, /* strategy */
225 { &vop_print_desc, (vop_t *)nfs_print }, /* print */
226 { &vop_islocked_desc, (vop_t *)nfs_islocked }, /* islocked */
227 { &vop_pathconf_desc, (vop_t *)spec_pathconf }, /* pathconf */
228 { &vop_advlock_desc, (vop_t *)spec_advlock }, /* advlock */
229/* XXX: vop_getpages - XXX: call spec_getpages here? */
230/* XXX: vop_putpages */
231 { &vop_bwrite_desc, (vop_t *)vn_bwrite }, /* bwrite */
188 { &vop_default_desc, (vop_t *) vn_default_error },
189 { &vop_abortop_desc, (vop_t *) spec_abortop },
190 { &vop_access_desc, (vop_t *) nfsspec_access },
191 { &vop_advlock_desc, (vop_t *) spec_advlock },
192 { &vop_bmap_desc, (vop_t *) spec_bmap },
193 { &vop_bwrite_desc, (vop_t *) vn_bwrite },
194 { &vop_close_desc, (vop_t *) nfsspec_close },
195 { &vop_create_desc, (vop_t *) spec_create },
196 { &vop_fsync_desc, (vop_t *) nfs_fsync },
197 { &vop_getattr_desc, (vop_t *) nfs_getattr },
198 { &vop_inactive_desc, (vop_t *) nfs_inactive },
199 { &vop_ioctl_desc, (vop_t *) spec_ioctl },
200 { &vop_islocked_desc, (vop_t *) nfs_islocked },
201 { &vop_lease_desc, (vop_t *) spec_lease_check },
202 { &vop_link_desc, (vop_t *) spec_link },
203 { &vop_lock_desc, (vop_t *) nfs_lock },
204 { &vop_lookup_desc, (vop_t *) spec_lookup },
205 { &vop_mkdir_desc, (vop_t *) spec_mkdir },
206 { &vop_mknod_desc, (vop_t *) spec_mknod },
207 { &vop_mmap_desc, (vop_t *) spec_mmap },
208 { &vop_open_desc, (vop_t *) spec_open },
209 { &vop_pathconf_desc, (vop_t *) spec_pathconf },
210 { &vop_poll_desc, (vop_t *) spec_poll },
211 { &vop_print_desc, (vop_t *) nfs_print },
212 { &vop_read_desc, (vop_t *) nfsspec_read },
213 { &vop_readdir_desc, (vop_t *) spec_readdir },
214 { &vop_readlink_desc, (vop_t *) spec_readlink },
215 { &vop_reclaim_desc, (vop_t *) nfs_reclaim },
216 { &vop_remove_desc, (vop_t *) spec_remove },
217 { &vop_rename_desc, (vop_t *) spec_rename },
218 { &vop_revoke_desc, (vop_t *) spec_revoke },
219 { &vop_rmdir_desc, (vop_t *) spec_rmdir },
220 { &vop_seek_desc, (vop_t *) spec_seek },
221 { &vop_setattr_desc, (vop_t *) nfs_setattr },
222 { &vop_strategy_desc, (vop_t *) spec_strategy },
223 { &vop_symlink_desc, (vop_t *) spec_symlink },
224 { &vop_unlock_desc, (vop_t *) nfs_unlock },
225 { &vop_write_desc, (vop_t *) nfsspec_write },
232 { NULL, NULL }
233};
234static struct vnodeopv_desc spec_nfsv2nodeop_opv_desc =
235 { &spec_nfsv2nodeop_p, spec_nfsv2nodeop_entries };
236VNODEOP_SET(spec_nfsv2nodeop_opv_desc);
237
238vop_t **fifo_nfsv2nodeop_p;
239static struct vnodeopv_entry_desc fifo_nfsv2nodeop_entries[] = {
226 { NULL, NULL }
227};
228static struct vnodeopv_desc spec_nfsv2nodeop_opv_desc =
229 { &spec_nfsv2nodeop_p, spec_nfsv2nodeop_entries };
230VNODEOP_SET(spec_nfsv2nodeop_opv_desc);
231
232vop_t **fifo_nfsv2nodeop_p;
233static struct vnodeopv_entry_desc fifo_nfsv2nodeop_entries[] = {
240 { &vop_default_desc, (vop_t *)vn_default_error },
241 { &vop_lookup_desc, (vop_t *)fifo_lookup }, /* lookup */
242/* XXX: vop_cachedlookup */
243 { &vop_create_desc, (vop_t *)fifo_create }, /* create */
244/* XXX: vop_whiteout */
245 { &vop_mknod_desc, (vop_t *)fifo_mknod }, /* mknod */
246 { &vop_open_desc, (vop_t *)fifo_open }, /* open */
247 { &vop_close_desc, (vop_t *)nfsfifo_close }, /* close */
248 { &vop_access_desc, (vop_t *)nfsspec_access }, /* access */
249 { &vop_getattr_desc, (vop_t *)nfs_getattr }, /* getattr */
250 { &vop_setattr_desc, (vop_t *)nfs_setattr }, /* setattr */
251 { &vop_read_desc, (vop_t *)nfsfifo_read }, /* read */
252 { &vop_write_desc, (vop_t *)nfsfifo_write }, /* write */
253 { &vop_lease_desc, (vop_t *)fifo_lease_check }, /* lease */
254 { &vop_ioctl_desc, (vop_t *)fifo_ioctl }, /* ioctl */
255 { &vop_poll_desc, (vop_t *)fifo_poll }, /* poll */
256 { &vop_revoke_desc, (vop_t *)fifo_revoke }, /* revoke */
257 { &vop_mmap_desc, (vop_t *)fifo_mmap }, /* mmap */
258 { &vop_fsync_desc, (vop_t *)nfs_fsync }, /* fsync */
259 { &vop_seek_desc, (vop_t *)fifo_seek }, /* seek */
260 { &vop_remove_desc, (vop_t *)fifo_remove }, /* remove */
261 { &vop_link_desc, (vop_t *)fifo_link }, /* link */
262 { &vop_rename_desc, (vop_t *)fifo_rename }, /* rename */
263 { &vop_mkdir_desc, (vop_t *)fifo_mkdir }, /* mkdir */
264 { &vop_rmdir_desc, (vop_t *)fifo_rmdir }, /* rmdir */
265 { &vop_symlink_desc, (vop_t *)fifo_symlink }, /* symlink */
266 { &vop_readdir_desc, (vop_t *)fifo_readdir }, /* readdir */
267 { &vop_readlink_desc, (vop_t *)fifo_readlink }, /* readlink */
268 { &vop_abortop_desc, (vop_t *)fifo_abortop }, /* abortop */
269 { &vop_inactive_desc, (vop_t *)nfs_inactive }, /* inactive */
270 { &vop_reclaim_desc, (vop_t *)nfs_reclaim }, /* reclaim */
271 { &vop_lock_desc, (vop_t *)nfs_lock }, /* lock */
272 { &vop_unlock_desc, (vop_t *)nfs_unlock }, /* unlock */
273 { &vop_bmap_desc, (vop_t *)fifo_bmap }, /* bmap */
274 { &vop_strategy_desc, (vop_t *)fifo_strategy }, /* strategy */
275 { &vop_print_desc, (vop_t *)nfs_print }, /* print */
276 { &vop_islocked_desc, (vop_t *)nfs_islocked }, /* islocked */
277 { &vop_pathconf_desc, (vop_t *)fifo_pathconf }, /* pathconf */
278 { &vop_advlock_desc, (vop_t *)fifo_advlock }, /* advlock */
279/* XXX: vop_getpages */
280/* XXX: vop_putpages */
281 { &vop_bwrite_desc, (vop_t *)vn_bwrite }, /* bwrite */
234 { &vop_default_desc, (vop_t *) vn_default_error },
235 { &vop_abortop_desc, (vop_t *) fifo_abortop },
236 { &vop_access_desc, (vop_t *) nfsspec_access },
237 { &vop_advlock_desc, (vop_t *) fifo_advlock },
238 { &vop_bmap_desc, (vop_t *) fifo_bmap },
239 { &vop_bwrite_desc, (vop_t *) vn_bwrite },
240 { &vop_close_desc, (vop_t *) nfsfifo_close },
241 { &vop_create_desc, (vop_t *) fifo_create },
242 { &vop_fsync_desc, (vop_t *) nfs_fsync },
243 { &vop_getattr_desc, (vop_t *) nfs_getattr },
244 { &vop_inactive_desc, (vop_t *) nfs_inactive },
245 { &vop_ioctl_desc, (vop_t *) fifo_ioctl },
246 { &vop_islocked_desc, (vop_t *) nfs_islocked },
247 { &vop_lease_desc, (vop_t *) fifo_lease_check },
248 { &vop_link_desc, (vop_t *) fifo_link },
249 { &vop_lock_desc, (vop_t *) nfs_lock },
250 { &vop_lookup_desc, (vop_t *) fifo_lookup },
251 { &vop_mkdir_desc, (vop_t *) fifo_mkdir },
252 { &vop_mknod_desc, (vop_t *) fifo_mknod },
253 { &vop_mmap_desc, (vop_t *) fifo_mmap },
254 { &vop_open_desc, (vop_t *) fifo_open },
255 { &vop_pathconf_desc, (vop_t *) fifo_pathconf },
256 { &vop_poll_desc, (vop_t *) fifo_poll },
257 { &vop_print_desc, (vop_t *) nfs_print },
258 { &vop_read_desc, (vop_t *) nfsfifo_read },
259 { &vop_readdir_desc, (vop_t *) fifo_readdir },
260 { &vop_readlink_desc, (vop_t *) fifo_readlink },
261 { &vop_reclaim_desc, (vop_t *) nfs_reclaim },
262 { &vop_remove_desc, (vop_t *) fifo_remove },
263 { &vop_rename_desc, (vop_t *) fifo_rename },
264 { &vop_revoke_desc, (vop_t *) fifo_revoke },
265 { &vop_rmdir_desc, (vop_t *) fifo_rmdir },
266 { &vop_seek_desc, (vop_t *) fifo_seek },
267 { &vop_setattr_desc, (vop_t *) nfs_setattr },
268 { &vop_strategy_desc, (vop_t *) fifo_strategy },
269 { &vop_symlink_desc, (vop_t *) fifo_symlink },
270 { &vop_unlock_desc, (vop_t *) nfs_unlock },
271 { &vop_write_desc, (vop_t *) nfsfifo_write },
282 { NULL, NULL }
283};
284static struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc =
285 { &fifo_nfsv2nodeop_p, fifo_nfsv2nodeop_entries };
286VNODEOP_SET(fifo_nfsv2nodeop_opv_desc);
287
288static int nfs_commit __P((struct vnode *vp, u_quad_t offset, int cnt,
289 struct ucred *cred, struct proc *procp));

--- 3096 unchanged lines hidden ---
272 { NULL, NULL }
273};
274static struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc =
275 { &fifo_nfsv2nodeop_p, fifo_nfsv2nodeop_entries };
276VNODEOP_SET(fifo_nfsv2nodeop_opv_desc);
277
278static int nfs_commit __P((struct vnode *vp, u_quad_t offset, int cnt,
279 struct ucred *cred, struct proc *procp));

--- 3096 unchanged lines hidden ---