ffs_extern.h revision 182365
11541Srgrimes/*- 21541Srgrimes * Copyright (c) 1991, 1993, 1994 31541Srgrimes * The Regents of the University of California. All rights reserved. 41541Srgrimes * 51541Srgrimes * Redistribution and use in source and binary forms, with or without 61541Srgrimes * modification, are permitted provided that the following conditions 71541Srgrimes * are met: 81541Srgrimes * 1. Redistributions of source code must retain the above copyright 91541Srgrimes * notice, this list of conditions and the following disclaimer. 101541Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 111541Srgrimes * notice, this list of conditions and the following disclaimer in the 121541Srgrimes * documentation and/or other materials provided with the distribution. 131541Srgrimes * 4. Neither the name of the University nor the names of its contributors 141541Srgrimes * may be used to endorse or promote products derived from this software 151541Srgrimes * without specific prior written permission. 161541Srgrimes * 171541Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 181541Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 191541Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 201541Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 211541Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 221541Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 231541Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 241541Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 251541Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 261541Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 271541Srgrimes * SUCH DAMAGE. 281541Srgrimes * 2922521Sdyson * @(#)ffs_extern.h 8.6 (Berkeley) 3/30/95 3050477Speter * $FreeBSD: head/sys/ufs/ffs/ffs_extern.h 182365 2008-08-28 09:18:20Z kib $ 311541Srgrimes */ 321541Srgrimes 3315493Sbde#ifndef _UFS_FFS_EXTERN_H 3415493Sbde#define _UFS_FFS_EXTERN_H 3515493Sbde 3622521Sdysonstruct buf; 3777508Sjhbstruct cg; 381541Srgrimesstruct fid; 391541Srgrimesstruct fs; 401541Srgrimesstruct inode; 4133054Sbdestruct malloc_type; 421541Srgrimesstruct mount; 4383366Sjulianstruct thread; 4428270Swollmanstruct sockaddr; 451541Srgrimesstruct statfs; 4633054Sbdestruct ucred; 471541Srgrimesstruct vnode; 4834826Sbdestruct vop_fsync_args; 4933054Sbdestruct vop_reallocblks_args; 501541Srgrimes 5192728Salfredint ffs_alloc(struct inode *, 5298542Smckusick ufs2_daddr_t, ufs2_daddr_t, int, struct ucred *, ufs2_daddr_t *); 5398542Smckusickint ffs_balloc_ufs1(struct vnode *a_vp, off_t a_startoffset, int a_size, 5492728Salfred struct ucred *a_cred, int a_flags, struct buf **a_bpp); 5598542Smckusickint ffs_balloc_ufs2(struct vnode *a_vp, off_t a_startoffset, int a_size, 5698542Smckusick struct ucred *a_cred, int a_flags, struct buf **a_bpp); 5792728Salfredint ffs_blkatoff(struct vnode *, off_t, char **, struct buf **); 58140701Sjeffvoid ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *, 59140701Sjeff ufs2_daddr_t, long, ino_t); 6098542Smckusickufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *); 6198542Smckusickufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *); 62111239Smckusickint ffs_checkfreefile(struct fs *, struct vnode *, ino_t); 6398542Smckusickvoid ffs_clrblock(struct fs *, u_char *, ufs1_daddr_t); 64166193Skibvoid ffs_bdflush(struct bufobj *, struct buf *); 65136963Sphkint ffs_copyonwrite(struct vnode *, struct buf *); 6692728Salfredint ffs_flushfiles(struct mount *, int, struct thread *); 6792728Salfredvoid ffs_fragacct(struct fs *, int, int32_t [], int); 68140701Sjeffint ffs_freefile(struct ufsmount *, struct fs *, struct vnode *, ino_t, 69140701Sjeff int); 7098542Smckusickint ffs_isblock(struct fs *, u_char *, ufs1_daddr_t); 71108315Sphkvoid ffs_load_inode(struct buf *, struct inode *, struct fs *, ino_t); 7292728Salfredint ffs_mountroot(void); 7392728Salfredint ffs_reallocblks(struct vop_reallocblks_args *); 74100344Smckusickint ffs_realloccg(struct inode *, ufs2_daddr_t, ufs2_daddr_t, 75100344Smckusick ufs2_daddr_t, int, int, struct ucred *, struct buf **); 76163841Spjdint ffs_sbupdate(struct ufsmount *, int, int); 7798542Smckusickvoid ffs_setblock(struct fs *, u_char *, ufs1_daddr_t); 7898542Smckusickint ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t); 7992728Salfredvoid ffs_snapremove(struct vnode *vp); 8092728Salfredint ffs_snapshot(struct mount *mp, char *snapfile); 8192728Salfredvoid ffs_snapshot_mount(struct mount *mp); 8292728Salfredvoid ffs_snapshot_unmount(struct mount *mp); 83141522Sphkint ffs_syncvnode(struct vnode *vp, int waitfor); 8492728Salfredint ffs_truncate(struct vnode *, off_t, int, struct ucred *, struct thread *); 8592728Salfredint ffs_update(struct vnode *, int); 8692728Salfredint ffs_valloc(struct vnode *, int, struct ucred *, struct vnode **); 8730474Sphk 8892728Salfredint ffs_vfree(struct vnode *, ino_t, int); 89101777Sphkvfs_vget_t ffs_vget; 90182365Skibint ffs_vgetf(struct mount *, ino_t, int, struct vnode **, int); 911541Srgrimes 92182365Skib#define FFSV_FORCEINSMQ 0x0001 93182365Skib 94141542Sphkextern struct vop_vector ffs_vnodeops1; 95141542Sphkextern struct vop_vector ffs_fifoops1; 96141542Sphkextern struct vop_vector ffs_vnodeops2; 97141542Sphkextern struct vop_vector ffs_fifoops2; 9815493Sbde 9934266Sjulian/* 10034266Sjulian * Soft update function prototypes. 10134266Sjulian */ 102156451Stegge 103156451Steggeint softdep_check_suspend(struct mount *, struct vnode *, 104156451Stegge int, int, int, int); 105156451Steggevoid softdep_get_depcounts(struct mount *, int *, int *); 10692728Salfredvoid softdep_initialize(void); 10799206Siedowsevoid softdep_uninitialize(void); 10892728Salfredint softdep_mount(struct vnode *, struct mount *, struct fs *, 10992728Salfred struct ucred *); 110141539Sphkvoid softdep_move_dependencies(struct buf *, struct buf *); 11192728Salfredint softdep_flushworklist(struct mount *, int *, struct thread *); 11292728Salfredint softdep_flushfiles(struct mount *, int, struct thread *); 11392728Salfredvoid softdep_update_inodeblock(struct inode *, struct buf *, int); 11492728Salfredvoid softdep_load_inodeblock(struct inode *); 11592728Salfredvoid softdep_freefile(struct vnode *, ino_t, int); 11692728Salfredint softdep_request_cleanup(struct fs *, struct vnode *); 117100344Smckusickvoid softdep_setup_freeblocks(struct inode *, off_t, int); 11892728Salfredvoid softdep_setup_inomapdep(struct buf *, struct inode *, ino_t); 119156203Sjeffvoid softdep_setup_blkmapdep(struct buf *, struct mount *, ufs2_daddr_t); 12098542Smckusickvoid softdep_setup_allocdirect(struct inode *, ufs_lbn_t, ufs2_daddr_t, 12198542Smckusick ufs2_daddr_t, long, long, struct buf *); 122100344Smckusickvoid softdep_setup_allocext(struct inode *, ufs_lbn_t, ufs2_daddr_t, 123100344Smckusick ufs2_daddr_t, long, long, struct buf *); 12492728Salfredvoid softdep_setup_allocindir_meta(struct buf *, struct inode *, 12598542Smckusick struct buf *, int, ufs2_daddr_t); 12692728Salfredvoid softdep_setup_allocindir_page(struct inode *, ufs_lbn_t, 12798542Smckusick struct buf *, int, ufs2_daddr_t, ufs2_daddr_t, struct buf *); 12892728Salfredvoid softdep_fsync_mountdev(struct vnode *); 129141522Sphkint softdep_sync_metadata(struct vnode *); 130156203Sjeffint softdep_process_worklist(struct mount *, int); 131156203Sjeffint softdep_fsync(struct vnode *); 132156203Sjeffint softdep_waitidle(struct mount *); 13334266Sjulian 13415493Sbde#endif /* !_UFS_FFS_EXTERN_H */ 135