root / lab4 / .minix-src / include / ufs / lfs / lfs_extern.h @ 13
History | View | Annotate | Download (10 KB)
1 | 13 | up20180614 | /* $NetBSD: lfs_extern.h,v 1.110 2015/08/12 18:28:01 dholland Exp $ */
|
---|---|---|---|
2 | |||
3 | /*-
|
||
4 | * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
|
||
5 | * All rights reserved.
|
||
6 | *
|
||
7 | * This code is derived from software contributed to The NetBSD Foundation
|
||
8 | * by Konrad E. Schroder <perseant@hhhh.org>.
|
||
9 | *
|
||
10 | * Redistribution and use in source and binary forms, with or without
|
||
11 | * modification, are permitted provided that the following conditions
|
||
12 | * are met:
|
||
13 | * 1. Redistributions of source code must retain the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer.
|
||
15 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
16 | * notice, this list of conditions and the following disclaimer in the
|
||
17 | * documentation and/or other materials provided with the distribution.
|
||
18 | *
|
||
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
29 | * POSSIBILITY OF SUCH DAMAGE.
|
||
30 | */
|
||
31 | /*-
|
||
32 | * Copyright (c) 1991, 1993, 1994
|
||
33 | * The Regents of the University of California. All rights reserved.
|
||
34 | *
|
||
35 | * Redistribution and use in source and binary forms, with or without
|
||
36 | * modification, are permitted provided that the following conditions
|
||
37 | * are met:
|
||
38 | * 1. Redistributions of source code must retain the above copyright
|
||
39 | * notice, this list of conditions and the following disclaimer.
|
||
40 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
41 | * notice, this list of conditions and the following disclaimer in the
|
||
42 | * documentation and/or other materials provided with the distribution.
|
||
43 | * 3. Neither the name of the University nor the names of its contributors
|
||
44 | * may be used to endorse or promote products derived from this software
|
||
45 | * without specific prior written permission.
|
||
46 | *
|
||
47 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
48 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
49 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
50 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
51 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
52 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
53 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
54 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
55 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
56 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
57 | * SUCH DAMAGE.
|
||
58 | *
|
||
59 | * @(#)lfs_extern.h 8.6 (Berkeley) 5/8/95
|
||
60 | */
|
||
61 | |||
62 | #ifndef _UFS_LFS_LFS_EXTERN_H_
|
||
63 | #define _UFS_LFS_LFS_EXTERN_H_
|
||
64 | |||
65 | #ifdef _KERNEL
|
||
66 | #include <sys/mallocvar.h> |
||
67 | |||
68 | MALLOC_DECLARE(M_SEGMENT); |
||
69 | #endif
|
||
70 | |||
71 | /* Copied from ext2fs for ITIMES. XXX This is a bogus use of v_tag. */
|
||
72 | #define IS_LFS_VNODE(vp) (vp->v_tag == VT_LFS)
|
||
73 | |||
74 | /*
|
||
75 | * Sysctl values for LFS.
|
||
76 | */
|
||
77 | #define LFS_WRITEINDIR 1 /* flush indirect blocks on non-checkpoint writes */ |
||
78 | #define LFS_CLEAN_VNHEAD 2 /* put prev unrefed cleaned vnodes on head of free list */ |
||
79 | #define LFS_DOSTATS 3 |
||
80 | #define LFS_MAXPAGES 4 |
||
81 | #define LFS_FS_PAGETRIP 5 |
||
82 | #define LFS_STATS 6 |
||
83 | #define LFS_DO_RFW 7 |
||
84 | #define LFS_DEBUGLOG 8 |
||
85 | #define LFS_IGNORE_LAZY_SYNC 9 |
||
86 | #define LFS_MAXID 10 |
||
87 | |||
88 | /* not ours */
|
||
89 | struct fid;
|
||
90 | struct mount;
|
||
91 | struct nameidata;
|
||
92 | struct proc;
|
||
93 | struct statvfs;
|
||
94 | struct timeval;
|
||
95 | struct uio;
|
||
96 | struct mbuf;
|
||
97 | struct buf;
|
||
98 | struct vnode;
|
||
99 | |||
100 | /* ours */
|
||
101 | struct inode;
|
||
102 | union lfs_dinode;
|
||
103 | struct dlfs;
|
||
104 | struct lfs;
|
||
105 | struct segment;
|
||
106 | struct block_info;
|
||
107 | |||
108 | __BEGIN_DECLS |
||
109 | |||
110 | #if defined(_KERNEL)
|
||
111 | |||
112 | extern int lfs_allclean_wakeup; |
||
113 | extern struct pool lfs_inode_pool; /* memory pool for inodes */ |
||
114 | extern struct pool lfs_dinode_pool; /* memory pool for dinodes */ |
||
115 | extern struct pool lfs_inoext_pool; /* memory pool for inode extension */ |
||
116 | extern struct pool lfs_lbnentry_pool; /* memory pool for balloc accounting */ |
||
117 | |||
118 | extern int locked_queue_count; |
||
119 | extern long locked_queue_bytes; |
||
120 | extern int lfs_subsys_pages; |
||
121 | extern int lfs_dirvcount; |
||
122 | extern kmutex_t lfs_lock;
|
||
123 | extern int lfs_debug_log_subsys[]; |
||
124 | extern kcondvar_t lfs_writing_cv;
|
||
125 | extern kcondvar_t locked_queue_cv;
|
||
126 | |||
127 | /* lfs_alloc.c */
|
||
128 | int lfs_valloc(struct vnode *, int, kauth_cred_t, ino_t *, int *); |
||
129 | int lfs_valloc_fixed(struct lfs *, ino_t, int); |
||
130 | int lfs_vfree(struct vnode *, ino_t, int); |
||
131 | void lfs_order_freelist(struct lfs *); |
||
132 | int lfs_extend_ifile(struct lfs *, kauth_cred_t); |
||
133 | void lfs_orphan(struct lfs *, ino_t); |
||
134 | |||
135 | /* lfs_balloc.c */
|
||
136 | int lfs_balloc(struct vnode *, off_t, int, kauth_cred_t, int, struct buf **); |
||
137 | void lfs_register_block(struct vnode *, daddr_t); |
||
138 | void lfs_deregister_block(struct vnode *, daddr_t); |
||
139 | void lfs_deregister_all(struct vnode *); |
||
140 | |||
141 | /* lfs_bio.c */
|
||
142 | int lfs_availwait(struct lfs *, int); |
||
143 | int lfs_bwrite_ext(struct buf *, int); |
||
144 | int lfs_fits(struct lfs *, int); |
||
145 | void lfs_flush_fs(struct lfs *, int); |
||
146 | void lfs_flush(struct lfs *, int, int); |
||
147 | int lfs_check(struct vnode *, daddr_t, int); |
||
148 | void lfs_freebuf(struct lfs *, struct buf *); |
||
149 | struct buf *lfs_newbuf(struct lfs *, struct vnode *, daddr_t, size_t, int); |
||
150 | void lfs_countlocked(int *, long *, const char *); |
||
151 | int lfs_reserve(struct lfs *, struct vnode *, struct vnode *, int); |
||
152 | |||
153 | /* lfs_debug.c */
|
||
154 | #ifdef DEBUG
|
||
155 | int lfs_bwrite_log(struct buf *, const char *, int); |
||
156 | void lfs_dumplog(void); |
||
157 | void lfs_dump_super(struct lfs *); |
||
158 | void lfs_dump_dinode(struct lfs *, union lfs_dinode *); |
||
159 | void lfs_check_bpp(struct lfs *, struct segment *, char *, int); |
||
160 | void lfs_check_segsum(struct lfs *, struct segment *, char *, int); |
||
161 | void lfs_debug_log(int, const char *, ...); |
||
162 | #endif /* DEBUG */ |
||
163 | |||
164 | /* lfs_inode.c */
|
||
165 | int lfs_update(struct vnode *, const struct timespec *, const struct timespec *, |
||
166 | int);
|
||
167 | int lfs_truncate(struct vnode *, off_t, int, kauth_cred_t); |
||
168 | union lfs_dinode *lfs_ifind(struct lfs *, ino_t, struct buf *); |
||
169 | void lfs_finalize_ino_seguse(struct lfs *, struct inode *); |
||
170 | void lfs_finalize_fs_seguse(struct lfs *); |
||
171 | |||
172 | /* lfs_rename.c */
|
||
173 | int lfs_rename(void *); |
||
174 | |||
175 | /* lfs_rfw.c */
|
||
176 | int lfs_rf_valloc(struct lfs *, ino_t, int, struct lwp *, struct vnode **); |
||
177 | void lfs_roll_forward(struct lfs *, struct mount *, struct lwp *); |
||
178 | |||
179 | /* lfs_segment.c */
|
||
180 | void lfs_imtime(struct lfs *); |
||
181 | int lfs_vflush(struct vnode *); |
||
182 | int lfs_segwrite(struct mount *, int); |
||
183 | int lfs_writefile(struct lfs *, struct segment *, struct vnode *); |
||
184 | int lfs_writeinode(struct lfs *, struct segment *, struct inode *); |
||
185 | int lfs_gatherblock(struct segment *, struct buf *, kmutex_t *); |
||
186 | int lfs_gather(struct lfs *, struct segment *, struct vnode *, int (*match )(struct lfs *, struct buf *)); |
||
187 | void lfs_update_single(struct lfs *, struct segment *, struct vnode *, |
||
188 | daddr_t, daddr_t, int);
|
||
189 | void lfs_updatemeta(struct segment *); |
||
190 | int lfs_rewind(struct lfs *, int); |
||
191 | void lfs_unset_inval_all(struct lfs *); |
||
192 | int lfs_initseg(struct lfs *); |
||
193 | int lfs_writeseg(struct lfs *, struct segment *); |
||
194 | void lfs_writesuper(struct lfs *, daddr_t); |
||
195 | int lfs_match_data(struct lfs *, struct buf *); |
||
196 | int lfs_match_indir(struct lfs *, struct buf *); |
||
197 | int lfs_match_dindir(struct lfs *, struct buf *); |
||
198 | int lfs_match_tindir(struct lfs *, struct buf *); |
||
199 | void lfs_callback(struct buf *); |
||
200 | void lfs_acquire_finfo(struct lfs *fs, ino_t, int); |
||
201 | void lfs_release_finfo(struct lfs *fs); |
||
202 | |||
203 | /* lfs_subr.c */
|
||
204 | void lfs_setup_resblks(struct lfs *); |
||
205 | void lfs_pad_check(unsigned char *, int, char *, int); |
||
206 | void lfs_free_resblks(struct lfs *); |
||
207 | void *lfs_malloc(struct lfs *, size_t, int); |
||
208 | void lfs_free(struct lfs *, void *, int); |
||
209 | int lfs_seglock(struct lfs *, unsigned long); |
||
210 | void lfs_segunlock(struct lfs *); |
||
211 | void lfs_segunlock_relock(struct lfs *); |
||
212 | int lfs_writer_enter(struct lfs *, const char *); |
||
213 | void lfs_writer_leave(struct lfs *); |
||
214 | void lfs_wakeup_cleaner(struct lfs *); |
||
215 | |||
216 | /* lfs_syscalls.c */
|
||
217 | int lfs_do_segclean(struct lfs *, unsigned long); |
||
218 | int lfs_segwait(fsid_t *, struct timeval *); |
||
219 | int lfs_bmapv(struct lwp *, fsid_t *, struct block_info *, int); |
||
220 | int lfs_markv(struct lwp *, fsid_t *, struct block_info *, int); |
||
221 | |||
222 | /* lfs_vfsops.c */
|
||
223 | VFS_PROTOS(lfs); |
||
224 | void lfs_vinit(struct mount *, struct vnode **); |
||
225 | int lfs_resize_fs(struct lfs *, int); |
||
226 | |||
227 | /* lfs_vnops.c */
|
||
228 | void lfs_mark_vnode(struct vnode *); |
||
229 | void lfs_unmark_vnode(struct vnode *); |
||
230 | int lfs_gop_alloc(struct vnode *, off_t, off_t, int, kauth_cred_t); |
||
231 | void lfs_gop_size(struct vnode *, off_t, off_t *, int); |
||
232 | int lfs_putpages_ext(void *, int); |
||
233 | int lfs_gatherpages(struct vnode *); |
||
234 | int lfs_flush_dirops(struct lfs *); |
||
235 | int lfs_flush_pchain(struct lfs *); |
||
236 | |||
237 | int lfs_bwrite (void *); |
||
238 | int lfs_fsync (void *); |
||
239 | int lfs_symlink (void *); |
||
240 | int lfs_mknod (void *); |
||
241 | int lfs_create (void *); |
||
242 | int lfs_mkdir (void *); |
||
243 | int lfs_read (void *); |
||
244 | int lfs_remove (void *); |
||
245 | int lfs_rmdir (void *); |
||
246 | int lfs_link (void *); |
||
247 | int lfs_mmap (void *); |
||
248 | int lfs_rename (void *); |
||
249 | int lfs_getattr (void *); |
||
250 | int lfs_setattr (void *); |
||
251 | int lfs_close (void *); |
||
252 | int lfsspec_close(void *); |
||
253 | int lfsfifo_close(void *); |
||
254 | int lfs_fcntl (void *); |
||
255 | int lfs_inactive (void *); |
||
256 | int lfs_reclaim (void *); |
||
257 | int lfs_strategy (void *); |
||
258 | int lfs_write (void *); |
||
259 | int lfs_getpages (void *); |
||
260 | int lfs_putpages (void *); |
||
261 | |||
262 | int lfs_bufrd(struct vnode *, struct uio *, int, kauth_cred_t); |
||
263 | int lfs_bufwr(struct vnode *, struct uio *, int, kauth_cred_t); |
||
264 | |||
265 | extern int lfs_mount_type; |
||
266 | extern int (**lfs_vnodeop_p)(void *); |
||
267 | extern int (**lfs_specop_p)(void *); |
||
268 | extern int (**lfs_fifoop_p)(void *); |
||
269 | extern const struct genfs_ops lfs_genfsops; |
||
270 | |||
271 | #endif /* defined(_KERNEL) */ |
||
272 | |||
273 | /* lfs_cksum.c */
|
||
274 | u_int32_t cksum(void *, size_t);
|
||
275 | u_int32_t lfs_cksum_part(void *, size_t, u_int32_t);
|
||
276 | #define lfs_cksum_fold(sum) (sum)
|
||
277 | u_int32_t lfs_sb_cksum(struct lfs *);
|
||
278 | |||
279 | __END_DECLS |
||
280 | |||
281 | #endif /* !_UFS_LFS_LFS_EXTERN_H_ */ |