The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/ufs/lfs/lfs_extern.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: lfs_extern.h,v 1.59.2.1 2004/05/23 10:44:28 tron 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  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the NetBSD
   21  *      Foundation, Inc. and its contributors.
   22  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23  *    contributors may be used to endorse or promote products derived
   24  *    from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36  * POSSIBILITY OF SUCH DAMAGE.
   37  */
   38 /*-
   39  * Copyright (c) 1991, 1993, 1994
   40  *      The Regents of the University of California.  All rights reserved.
   41  *
   42  * Redistribution and use in source and binary forms, with or without
   43  * modification, are permitted provided that the following conditions
   44  * are met:
   45  * 1. Redistributions of source code must retain the above copyright
   46  *    notice, this list of conditions and the following disclaimer.
   47  * 2. Redistributions in binary form must reproduce the above copyright
   48  *    notice, this list of conditions and the following disclaimer in the
   49  *    documentation and/or other materials provided with the distribution.
   50  * 3. Neither the name of the University nor the names of its contributors
   51  *    may be used to endorse or promote products derived from this software
   52  *    without specific prior written permission.
   53  *
   54  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   55  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   56  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   57  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   58  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   59  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   60  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   61  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   62  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   63  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   64  * SUCH DAMAGE.
   65  *
   66  *      @(#)lfs_extern.h        8.6 (Berkeley) 5/8/95
   67  */
   68 
   69 #ifndef _UFS_LFS_LFS_EXTERN_H_
   70 #define _UFS_LFS_LFS_EXTERN_H_
   71 
   72 #ifdef _KERNEL
   73 #include <sys/mallocvar.h>
   74 
   75 MALLOC_DECLARE(M_SEGMENT);
   76 #endif
   77 
   78 /* Copied from ext2fs for ITIMES.  XXX This is a bogus use of v_tag. */
   79 #define IS_LFS_VNODE(vp)   (vp->v_tag == VT_LFS)
   80 
   81 /*
   82  * Sysctl values for LFS.
   83  */
   84 #define LFS_WRITEINDIR   1 /* flush indirect blocks on non-checkpoint writes */
   85 #define LFS_CLEAN_VNHEAD 2 /* put prev unrefed cleaned vnodes on head of free list */
   86 #define LFS_DOSTATS      3
   87 #define LFS_MAXPAGES     4
   88 #define LFS_MAXID        5
   89 
   90 #define LFS_NAMES { \
   91         { 0, 0 }, \
   92         { "flushindir", CTLTYPE_INT }, \
   93         { "clean_vnhead", CTLTYPE_INT }, \
   94         { "dostats", CTLTYPE_INT }, \
   95         { "maxpages", CTLTYPE_INT }, \
   96 }
   97 
   98 struct fid;
   99 struct mount;
  100 struct nameidata;
  101 struct proc;
  102 struct statfs;
  103 struct timeval;
  104 struct inode;
  105 struct uio;
  106 struct mbuf;
  107 struct ufs1_dinode;
  108 struct buf;
  109 struct vnode;
  110 struct dlfs;
  111 struct lfs;
  112 struct segment;
  113 struct ucred;
  114 struct block_info;
  115 
  116 extern int lfs_allclean_wakeup;
  117 extern struct pool lfs_inode_pool;              /* memory pool for inodes */
  118 extern struct pool lfs_dinode_pool;             /* memory pool for dinodes */
  119 extern struct pool lfs_inoext_pool;     /* memory pool for inode extension */
  120 
  121 extern int locked_queue_count;
  122 extern long locked_queue_bytes;
  123 extern int lfs_subsys_pages;    
  124 extern int lfs_dirvcount;
  125 extern struct simplelock lfs_subsys_lock;
  126 
  127 __BEGIN_DECLS
  128 /* lfs_alloc.c */
  129 int lfs_rf_valloc(struct lfs *, ino_t, int, struct proc *, struct vnode **);
  130 void lfs_vcreate(struct mount *, ino_t, struct vnode *);
  131 /* lfs_bio.c */
  132 int lfs_availwait(struct lfs *, int);
  133 int lfs_bwrite_ext(struct buf *, int);
  134 int lfs_fits(struct lfs *, int);
  135 void lfs_flush_fs(struct lfs *, int);
  136 void lfs_flush(struct lfs *, int);
  137 int lfs_check(struct vnode *, daddr_t, int);
  138 void lfs_freebuf(struct lfs *, struct buf *);
  139 struct buf *lfs_newbuf(struct lfs *, struct vnode *, daddr_t, size_t, int);
  140 void lfs_countlocked(int *, long *, char *);
  141 int lfs_reserve(struct lfs *, struct vnode *, struct vnode *, int);
  142 
  143 /* lfs_cksum.c */
  144 u_int32_t cksum(void *, size_t);
  145 u_int32_t lfs_cksum_part(void *, size_t, u_int32_t);
  146 #define lfs_cksum_fold(sum)     (sum)
  147 u_int32_t lfs_sb_cksum(struct dlfs *);
  148 
  149 /* lfs_debug.c */
  150 #ifdef DEBUG
  151 int lfs_bwrite_log(struct buf *, char *, int);
  152 void lfs_dumplog(void);
  153 void lfs_dump_super(struct lfs *);
  154 void lfs_dump_dinode(struct ufs1_dinode *);
  155 void lfs_check_bpp(struct lfs *, struct segment *, char *, int);
  156 void lfs_check_segsum(struct lfs *, struct segment *, char *, int);
  157 #endif /* DEBUG */
  158 
  159 /* lfs_inode.c */
  160 struct ufs1_dinode *lfs_ifind(struct lfs *, ino_t, struct buf *);
  161 
  162 /* lfs_segment.c */
  163 void lfs_imtime(struct lfs *);
  164 int lfs_vflush(struct vnode *);
  165 int lfs_segwrite(struct mount *, int);
  166 void lfs_writefile(struct lfs *, struct segment *, struct vnode *);
  167 int lfs_writeinode(struct lfs *, struct segment *, struct inode *);
  168 int lfs_gatherblock(struct segment *, struct buf *, int *);
  169 int lfs_gather(struct lfs *, struct segment *, struct vnode *, int (*match )(struct lfs *, struct buf *));
  170 void lfs_update_single(struct lfs *, struct segment *, struct vnode *,
  171     daddr_t, int32_t, int);
  172 void lfs_updatemeta(struct segment *);
  173 int lfs_initseg(struct lfs *);
  174 int lfs_writeseg(struct lfs *, struct segment *);
  175 void lfs_writesuper(struct lfs *, daddr_t);
  176 int lfs_match_data(struct lfs *, struct buf *);
  177 int lfs_match_indir(struct lfs *, struct buf *);
  178 int lfs_match_dindir(struct lfs *, struct buf *);
  179 int lfs_match_tindir(struct lfs *, struct buf *);
  180 void lfs_callback(struct buf *);
  181 int lfs_vref(struct vnode *);
  182 void lfs_vunref(struct vnode *);
  183 void lfs_vunref_head(struct vnode *);
  184 
  185 /* lfs_subr.c */
  186 void lfs_setup_resblks(struct lfs *);
  187 void lfs_pad_check(unsigned char *, int, char *, int);
  188 void lfs_free_resblks(struct lfs *);
  189 void *lfs_malloc(struct lfs *, size_t, int);
  190 void lfs_free(struct lfs *, void *, int);
  191 int lfs_seglock(struct lfs *, unsigned long);
  192 void lfs_segunlock(struct lfs *);
  193 int lfs_writer_enter(struct lfs *, const char *);
  194 void lfs_writer_leave(struct lfs *);
  195 
  196 /* lfs_syscalls.c */
  197 int lfs_fastvget(struct mount *, ino_t, daddr_t, struct vnode **, struct ufs1_dinode *);
  198 struct buf *lfs_fakebuf(struct lfs *, struct vnode *, int, size_t, caddr_t);
  199 int lfs_do_segclean(struct lfs *, unsigned long);
  200 void lfs_fakebuf_iodone(struct buf *);
  201 int lfs_segwait(fsid_t *, struct timeval *);
  202 int lfs_bmapv(struct proc *, fsid_t *, struct block_info *, int);
  203 int lfs_markv(struct proc *, fsid_t *, struct block_info *, int);
  204 
  205 /* lfs_vfsops.c */
  206 void lfs_init(void);
  207 void lfs_reinit(void);
  208 void lfs_done(void);
  209 int lfs_mountroot(void);
  210 int lfs_mount(struct mount *, const char *, void *, struct nameidata *, struct proc *);
  211 int lfs_unmount(struct mount *, int, struct proc *);
  212 int lfs_statfs(struct mount *, struct statfs *, struct proc *);
  213 int lfs_sync(struct mount *, int, struct ucred *, struct proc *);
  214 int lfs_vget(struct mount *, ino_t, struct vnode **);
  215 int lfs_fhtovp(struct mount *, struct fid *, struct vnode **);
  216 int lfs_vptofh(struct vnode *, struct fid *);
  217 void lfs_vinit(struct mount *mp, struct vnode **);
  218 
  219 /* lfs_vnops.c */
  220 void lfs_mark_vnode(struct vnode *);
  221 void lfs_unmark_vnode(struct vnode *);
  222 void lfs_itimes(struct inode *, struct timespec *, struct timespec *,
  223                 struct timespec *);
  224 int lfs_gop_alloc(struct vnode *, off_t, off_t, int, struct ucred *);
  225 void lfs_gop_size(struct vnode *, off_t, off_t *, int);
  226 int lfs_putpages_ext(void *, int);
  227 int lfs_gatherpages(struct vnode *);
  228 
  229 int lfs_balloc   (void *);
  230 int lfs_valloc   (void *);
  231 int lfs_vfree    (void *);
  232 int lfs_bwrite   (void *);
  233 int lfs_update   (void *);
  234 int lfs_truncate (void *);
  235 int lfs_blkatoff (void *);
  236 int lfs_fsync    (void *);
  237 int lfs_symlink  (void *);
  238 int lfs_mknod    (void *);
  239 int lfs_create   (void *);
  240 int lfs_mkdir    (void *);
  241 int lfs_read     (void *);
  242 int lfs_remove   (void *);
  243 int lfs_rmdir    (void *);
  244 int lfs_link     (void *);
  245 int lfs_mmap     (void *);
  246 int lfs_rename   (void *);
  247 int lfs_getattr  (void *);
  248 int lfs_setattr  (void *);
  249 int lfs_close    (void *);
  250 int lfsspec_close(void *);
  251 int lfsfifo_close(void *);
  252 int lfs_fcntl    (void *);
  253 int lfs_inactive (void *);
  254 int lfs_reclaim  (void *);
  255 int lfs_strategy (void *);
  256 int lfs_write    (void *);
  257 int lfs_getpages (void *);
  258 int lfs_putpages (void *);
  259 
  260 #ifdef SYSCTL_SETUP_PROTO
  261 SYSCTL_SETUP_PROTO(sysctl_vfs_lfs_setup);
  262 #endif /* SYSCTL_SETUP_PROTO */
  263 
  264 __END_DECLS
  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 struct genfs_ops lfs_genfsops;
  270 
  271 #endif /* !_UFS_LFS_LFS_EXTERN_H_ */

Cache object: cf44dca83e2d0515b40ff2bba5e69113


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.