[BACK]Return to ffs_extern.h CVS log [TXT][DIR] Up to [local] / sys / ufs / ffs

Annotation of sys/ufs/ffs/ffs_extern.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ffs_extern.h,v 1.32 2007/06/01 20:23:25 pedro Exp $   */
        !             2: /*     $NetBSD: ffs_extern.h,v 1.4 1996/02/09 22:22:22 christos Exp $  */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1991, 1993, 1994
        !             6:  *     The Regents of the University of California.  All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            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 the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  * 3. Neither the name of the University nor the names of its contributors
        !            17:  *    may be used to endorse or promote products derived from this software
        !            18:  *    without specific prior written permission.
        !            19:  *
        !            20:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            21:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            22:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            23:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            24:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            25:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            26:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            27:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            28:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            29:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            30:  * SUCH DAMAGE.
        !            31:  *
        !            32:  *     @(#)ffs_extern.h        8.3 (Berkeley) 4/16/94
        !            33:  */
        !            34:
        !            35: #define FFS_CLUSTERREAD                1       /* cluster reading enabled */
        !            36: #define FFS_CLUSTERWRITE       2       /* cluster writing enabled */
        !            37: #define FFS_REALLOCBLKS                3       /* block reallocation enabled */
        !            38: #define FFS_ASYNCFREE          4       /* asynchronous block freeing enabled */
        !            39: #define        FFS_MAX_SOFTDEPS        5       /* maximum structs before slowdown */
        !            40: #define        FFS_SD_TICKDELAY        6       /* ticks to pause during slowdown */
        !            41: #define        FFS_SD_WORKLIST_PUSH    7       /* # of worklist cleanups */
        !            42: #define        FFS_SD_BLK_LIMIT_PUSH   8       /* # of times block limit neared */
        !            43: #define        FFS_SD_INO_LIMIT_PUSH   9       /* # of times inode limit neared */
        !            44: #define        FFS_SD_BLK_LIMIT_HIT    10      /* # of times block slowdown imposed */
        !            45: #define        FFS_SD_INO_LIMIT_HIT    11      /* # of times inode slowdown imposed */
        !            46: #define        FFS_SD_SYNC_LIMIT_HIT   12      /* # of synchronous slowdowns imposed */
        !            47: #define        FFS_SD_INDIR_BLK_PTRS   13      /* bufs redirtied as indir ptrs not written */
        !            48: #define        FFS_SD_INODE_BITMAP     14      /* bufs redirtied as inode bitmap not written */
        !            49: #define        FFS_SD_DIRECT_BLK_PTRS  15      /* bufs redirtied as direct ptrs not written */
        !            50: #define        FFS_SD_DIR_ENTRY        16      /* bufs redirtied as dir entry cannot write */
        !            51: #define        FFS_DIRHASH_DIRSIZE     17      /* min directory size, in bytes */
        !            52: #define        FFS_DIRHASH_MAXMEM      18      /* max kvm to use, in bytes */
        !            53: #define        FFS_DIRHASH_MEM         19      /* current mem usage, in bytes */
        !            54: #define        FFS_MAXID               20      /* number of valid ffs ids */
        !            55:
        !            56: #define FFS_NAMES { \
        !            57:        { 0, 0 }, \
        !            58:        { "doclusterread", CTLTYPE_INT }, \
        !            59:        { "doclusterwrite", CTLTYPE_INT }, \
        !            60:        { "doreallocblks", CTLTYPE_INT }, \
        !            61:        { "doasyncfree", CTLTYPE_INT }, \
        !            62:        { "max_softdeps", CTLTYPE_INT }, \
        !            63:        { "sd_tickdelay", CTLTYPE_INT }, \
        !            64:        { "sd_worklist_push", CTLTYPE_INT }, \
        !            65:        { "sd_blk_limit_push", CTLTYPE_INT }, \
        !            66:        { "sd_ino_limit_push", CTLTYPE_INT }, \
        !            67:        { "sd_blk_limit_hit", CTLTYPE_INT }, \
        !            68:        { "sd_ino_limit_hit", CTLTYPE_INT }, \
        !            69:        { "sd_sync_limit_hit", CTLTYPE_INT }, \
        !            70:        { "sd_indir_blk_ptrs", CTLTYPE_INT }, \
        !            71:        { "sd_inode_bitmap", CTLTYPE_INT }, \
        !            72:        { "sd_direct_blk_ptrs", CTLTYPE_INT }, \
        !            73:        { "sd_dir_entry", CTLTYPE_INT }, \
        !            74:        { "dirhash_dirsize", CTLTYPE_INT }, \
        !            75:        { "dirhash_maxmem", CTLTYPE_INT }, \
        !            76:        { "dirhash_mem", CTLTYPE_INT }, \
        !            77: }
        !            78:
        !            79: struct buf;
        !            80: struct fid;
        !            81: struct fs;
        !            82: struct inode;
        !            83: struct mount;
        !            84: struct nameidata;
        !            85: struct proc;
        !            86: struct statfs;
        !            87: struct timeval;
        !            88: struct ucred;
        !            89: struct ufsmount;
        !            90: struct vfsconf;
        !            91: struct uio;
        !            92: struct vnode;
        !            93: struct mbuf;
        !            94: struct cg;
        !            95: struct vop_vfree_args;
        !            96:
        !            97: __BEGIN_DECLS
        !            98:
        !            99: /* ffs_alloc.c */
        !           100: int ffs_alloc(struct inode *, daddr_t, daddr_t , int, struct ucred *,
        !           101:                   daddr_t *);
        !           102: int ffs_realloccg(struct inode *, daddr_t, daddr_t, int, int ,
        !           103:                       struct ucred *, struct buf **, daddr_t *);
        !           104: int ffs_reallocblks(void *);
        !           105: int ffs_inode_alloc(struct inode *, mode_t, struct ucred *, struct vnode **);
        !           106: int ffs_inode_free(struct inode *, ino_t, mode_t);
        !           107: int ffs_freefile(struct inode *, ino_t, mode_t);
        !           108:
        !           109: int32_t ffs1_blkpref(struct inode *, daddr_t, int, int32_t *);
        !           110: #ifdef FFS2
        !           111: int64_t ffs2_blkpref(struct inode *, daddr_t, int, int64_t *);
        !           112: #endif
        !           113: void ffs_blkfree(struct inode *, daddr64_t, long);
        !           114: void ffs_clusteracct(struct fs *, struct cg *, daddr_t, int);
        !           115:
        !           116: /* ffs_balloc.c */
        !           117: int ffs_balloc(struct inode *, off_t, int, struct ucred *, int, struct buf **);
        !           118:
        !           119: /* ffs_inode.c */
        !           120: int ffs_init(struct vfsconf *);
        !           121: int ffs_update(struct inode *, struct timespec *, struct timespec *, int);
        !           122: int ffs_truncate(struct inode *, off_t, int, struct ucred *);
        !           123:
        !           124: /* ffs_subr.c */
        !           125: int ffs_bufatoff(struct inode *, off_t, char **, struct buf **);
        !           126: void ffs_fragacct(struct fs *, int, int32_t[], int);
        !           127: #ifdef DIAGNOSTIC
        !           128: void   ffs_checkoverlap(struct buf *, struct inode *);
        !           129: #endif
        !           130: int   ffs_isfreeblock(struct fs *, unsigned char *, daddr_t);
        !           131: int ffs_isblock(struct fs *, unsigned char *, daddr_t);
        !           132: void ffs_clrblock(struct fs *, u_char *, daddr_t);
        !           133: void ffs_setblock(struct fs *, unsigned char *, daddr_t);
        !           134:
        !           135: /* ffs_vfsops.c */
        !           136: int ffs_mountroot(void);
        !           137: int ffs_mount(struct mount *, const char *, void *, struct nameidata *,
        !           138:                   struct proc *);
        !           139: int ffs_reload(struct mount *, struct ucred *, struct proc *);
        !           140: int ffs_mountfs(struct vnode *, struct mount *, struct proc *);
        !           141: int ffs_oldfscompat(struct fs *);
        !           142: int ffs_unmount(struct mount *, int, struct proc *);
        !           143: int ffs_flushfiles(struct mount *, int, struct proc *);
        !           144: int ffs_statfs(struct mount *, struct statfs *, struct proc *);
        !           145: int ffs_sync(struct mount *, int, struct ucred *, struct proc *);
        !           146: int ffs_vget(struct mount *, ino_t, struct vnode **);
        !           147: int ffs_fhtovp(struct mount *, struct fid *, struct vnode **);
        !           148: int ffs_vptofh(struct vnode *, struct fid *);
        !           149: int ffs_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           150:                    struct proc *);
        !           151: int ffs_sbupdate(struct ufsmount *, int);
        !           152: int ffs_cgupdate(struct ufsmount *, int);
        !           153:
        !           154: /* ffs_vnops.c */
        !           155: int ffs_read(void *);
        !           156: int ffs_write(void *);
        !           157: int ffs_fsync(void *);
        !           158: int ffs_reclaim(void *);
        !           159: int ffsfifo_reclaim(void *);
        !           160:
        !           161: /*
        !           162:  * Soft dependency function prototypes.
        !           163:  */
        !           164:
        !           165: struct vop_vfree_args;
        !           166: struct vop_fsync_args;
        !           167:
        !           168: void  softdep_initialize(void);
        !           169: int   softdep_process_worklist(struct mount *);
        !           170: int   softdep_mount(struct vnode *, struct mount *, struct fs *,
        !           171:           struct ucred *);
        !           172: int   softdep_flushworklist(struct mount *, int *, struct proc *);
        !           173: int   softdep_flushfiles(struct mount *, int, struct proc *);
        !           174: void  softdep_update_inodeblock(struct inode *, struct buf *, int);
        !           175: void  softdep_load_inodeblock(struct inode *);
        !           176: void  softdep_freefile(struct vnode *, ino_t, mode_t);
        !           177: void  softdep_setup_freeblocks(struct inode *, off_t);
        !           178: void  softdep_setup_inomapdep(struct buf *, struct inode *, ino_t);
        !           179: void  softdep_setup_blkmapdep(struct buf *, struct fs *, daddr_t);
        !           180: void  softdep_setup_allocdirect(struct inode *, daddr64_t, daddr_t,
        !           181:             daddr_t, long, long, struct buf *);
        !           182: void  softdep_setup_allocindir_meta(struct buf *, struct inode *,
        !           183:             struct buf *, int, daddr_t);
        !           184: void  softdep_setup_allocindir_page(struct inode *, daddr64_t,
        !           185:             struct buf *, int, daddr_t, daddr_t, struct buf *);
        !           186: void  softdep_fsync_mountdev(struct vnode *, int);
        !           187: int   softdep_sync_metadata(struct vop_fsync_args *);
        !           188: int   softdep_fsync(struct vnode *);
        !           189: __END_DECLS
        !           190:
        !           191: extern int (**ffs_vnodeop_p)(void *);
        !           192: extern int (**ffs_specop_p)(void *);
        !           193: #ifdef FIFO
        !           194: extern int (**ffs_fifoop_p)(void *);
        !           195: #define FFS_FIFOOPS ffs_fifoop_p
        !           196: #else
        !           197: #define FFS_FIFOOPS NULL
        !           198: #endif
        !           199:
        !           200: extern struct pool ffs_ino_pool;       /* memory pool for inodes */
        !           201: extern struct pool ffs_dinode1_pool;   /* memory pool for UFS1 dinodes */
        !           202: #ifdef FFS2
        !           203: extern struct pool ffs_dinode2_pool;   /* memory pool for UFS2 dinodes */
        !           204: #endif

CVSweb