2 * Copyright (c) 2007 The DragonFly Project. All rights reserved.
4 * This code is derived from software contributed to The DragonFly Project
5 * by Matthew Dillon <dillon@backplane.com>
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
17 * 3. Neither the name of The DragonFly Project nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific, prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * $DragonFly: src/sys/vfs/hammer/hammer_vnops.c,v 1.1 2007/11/01 20:53:05 dillon Exp $
37 #include <sys/param.h>
38 #include <sys/systm.h>
39 #include <sys/kernel.h>
40 #include <sys/fcntl.h>
41 #include <sys/namecache.h>
42 #include <sys/vnode.h>
43 #include <sys/lockf.h>
44 #include <sys/event.h>
51 /*static int hammer_vop_vnoperate(struct vop_generic_args *);*/
52 static int hammer_vop_fsync (struct vop_fsync_args *);
53 static int hammer_vop_read (struct vop_read_args *);
54 static int hammer_vop_write (struct vop_write_args *);
55 static int hammer_vop_access (struct vop_access_args *);
56 static int hammer_vop_advlock (struct vop_advlock_args *);
57 static int hammer_vop_close (struct vop_close_args *);
58 static int hammer_vop_ncreate (struct vop_ncreate_args *);
59 static int hammer_vop_getattr (struct vop_getattr_args *);
60 static int hammer_vop_nresolve (struct vop_nresolve_args *);
61 static int hammer_vop_nlookupdotdot (struct vop_nlookupdotdot_args *);
62 static int hammer_vop_nlink (struct vop_nlink_args *);
63 static int hammer_vop_nmkdir (struct vop_nmkdir_args *);
64 static int hammer_vop_nmknod (struct vop_nmknod_args *);
65 static int hammer_vop_open (struct vop_open_args *);
66 static int hammer_vop_pathconf (struct vop_pathconf_args *);
67 static int hammer_vop_print (struct vop_print_args *);
68 static int hammer_vop_readdir (struct vop_readdir_args *);
69 static int hammer_vop_readlink (struct vop_readlink_args *);
70 static int hammer_vop_nremove (struct vop_nremove_args *);
71 static int hammer_vop_nrename (struct vop_nrename_args *);
72 static int hammer_vop_nrmdir (struct vop_nrmdir_args *);
73 static int hammer_vop_setattr (struct vop_setattr_args *);
74 static int hammer_vop_strategy (struct vop_strategy_args *);
75 static int hammer_vop_nsymlink (struct vop_nsymlink_args *);
76 static int hammer_vop_nwhiteout (struct vop_nwhiteout_args *);
78 struct vop_ops hammer_vnode_vops = {
79 .vop_default = vop_defaultop,
80 .vop_fsync = hammer_vop_fsync,
81 .vop_read = hammer_vop_read,
82 .vop_write = hammer_vop_write,
83 .vop_access = hammer_vop_access,
84 .vop_advlock = hammer_vop_advlock,
85 .vop_close = hammer_vop_close,
86 .vop_ncreate = hammer_vop_ncreate,
87 .vop_getattr = hammer_vop_getattr,
88 .vop_inactive = hammer_vop_inactive,
89 .vop_reclaim = hammer_vop_reclaim,
90 .vop_nresolve = hammer_vop_nresolve,
91 .vop_nlookupdotdot = hammer_vop_nlookupdotdot,
92 .vop_nlink = hammer_vop_nlink,
93 .vop_nmkdir = hammer_vop_nmkdir,
94 .vop_nmknod = hammer_vop_nmknod,
95 .vop_open = hammer_vop_open,
96 .vop_pathconf = hammer_vop_pathconf,
97 .vop_print = hammer_vop_print,
98 .vop_readdir = hammer_vop_readdir,
99 .vop_readlink = hammer_vop_readlink,
100 .vop_nremove = hammer_vop_nremove,
101 .vop_nrename = hammer_vop_nrename,
102 .vop_nrmdir = hammer_vop_nrmdir,
103 .vop_setattr = hammer_vop_setattr,
104 .vop_strategy = hammer_vop_strategy,
105 .vop_nsymlink = hammer_vop_nsymlink,
106 .vop_nwhiteout = hammer_vop_nwhiteout
112 hammer_vop_vnoperate(struct vop_generic_args *)
114 return (VOCALL(&hammer_vnode_vops, ap));
120 hammer_vop_fsync (struct vop_fsync_args *ap)
127 hammer_vop_read (struct vop_read_args *ap)
134 hammer_vop_write (struct vop_write_args *ap)
142 hammer_vop_access (struct vop_access_args *ap)
149 hammer_vop_advlock (struct vop_advlock_args *ap)
156 hammer_vop_close (struct vop_close_args *ap)
163 hammer_vop_ncreate (struct vop_ncreate_args *ap)
170 hammer_vop_getattr (struct vop_getattr_args *ap)
177 hammer_vop_nresolve (struct vop_nresolve_args *ap)
184 hammer_vop_nlookupdotdot (struct vop_nlookupdotdot_args *ap)
191 hammer_vop_nlink (struct vop_nlink_args *ap)
198 hammer_vop_nmkdir (struct vop_nmkdir_args *ap)
205 hammer_vop_nmknod (struct vop_nmknod_args *ap)
212 hammer_vop_open (struct vop_open_args *ap)
219 hammer_vop_pathconf (struct vop_pathconf_args *ap)
226 hammer_vop_print (struct vop_print_args *ap)
233 hammer_vop_readdir (struct vop_readdir_args *ap)
240 hammer_vop_readlink (struct vop_readlink_args *ap)
247 hammer_vop_nremove (struct vop_nremove_args *ap)
254 hammer_vop_nrename (struct vop_nrename_args *ap)
261 hammer_vop_nrmdir (struct vop_nrmdir_args *ap)
268 hammer_vop_setattr (struct vop_setattr_args *ap)
275 hammer_vop_strategy (struct vop_strategy_args *ap)
282 hammer_vop_nsymlink (struct vop_nsymlink_args *ap)
289 hammer_vop_nwhiteout (struct vop_nwhiteout_args *ap)