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 * @(#)ufs_extern.h 8.10 (Berkeley) 5/14/95 3050477Speter * $FreeBSD: releng/11.0/sys/ufs/ufs/ufs_extern.h 262678 2014-03-02 02:52:34Z pfg $ 311541Srgrimes */ 321541Srgrimes 334464Sbde#ifndef _UFS_UFS_EXTERN_H_ 344464Sbde#define _UFS_UFS_EXTERN_H_ 352177Spaul 3630779Sbdestruct componentname; 371541Srgrimesstruct direct; 3830779Sbdestruct indir; 391541Srgrimesstruct inode; 401541Srgrimesstruct mount; 4183366Sjulianstruct thread; 4228270Swollmanstruct sockaddr; 431541Srgrimesstruct ucred; 4430779Sbdestruct ufid; 4522521Sdysonstruct vfsconf; 461541Srgrimesstruct vnode; 4730779Sbdestruct vop_bmap_args; 4830779Sbdestruct vop_cachedlookup_args; 4930779Sbdestruct vop_generic_args; 5030779Sbdestruct vop_inactive_args; 5130779Sbdestruct vop_reclaim_args; 521541Srgrimes 53138290Sphkextern struct vop_vector ufs_fifoops; 54138290Sphkextern struct vop_vector ufs_vnodeops; 5530439Sphk 5692728Salfredint ufs_bmap(struct vop_bmap_args *); 57100344Smckusickint ufs_bmaparray(struct vnode *, ufs2_daddr_t, ufs2_daddr_t *, 58100344Smckusick struct buf *, int *, int *); 59222167Srmacklemint ufs_fhtovp(struct mount *, struct ufid *, int, struct vnode **); 60207141Sjeffint ufs_checkpath(ino_t, ino_t, struct inode *, struct ucred *, ino_t *); 6192728Salfredvoid ufs_dirbad(struct inode *, doff_t, char *); 6292728Salfredint ufs_dirbadentry(struct vnode *, struct direct *, int); 6392728Salfredint ufs_dirempty(struct inode *, ino_t, struct ucred *); 64100344Smckusickint ufs_extread(struct vop_read_args *); 65100344Smckusickint ufs_extwrite(struct vop_write_args *); 6692728Salfredvoid ufs_makedirentry(struct inode *, struct componentname *, 6792728Salfred struct direct *); 6892728Salfredint ufs_direnter(struct vnode *, struct vnode *, struct direct *, 69207141Sjeff struct componentname *, struct buf *, int); 7092728Salfredint ufs_dirremove(struct vnode *, struct inode *, int, int); 7192728Salfredint ufs_dirrewrite(struct inode *, struct inode *, ino_t, int, int); 72207141Sjeffint ufs_lookup_ino(struct vnode *, struct vnode **, struct componentname *, 73207141Sjeff ino_t *); 7498542Smckusickint ufs_getlbns(struct vnode *, ufs2_daddr_t, struct indir *, int *); 7592728Salfredint ufs_inactive(struct vop_inactive_args *); 7692728Salfredint ufs_init(struct vfsconf *); 7792728Salfredvoid ufs_itimes(struct vnode *vp); 7892728Salfredint ufs_lookup(struct vop_cachedlookup_args *); 79220985Skibvoid ufs_prepare_reclaim(struct vnode *vp); 8092728Salfredint ufs_readdir(struct vop_readdir_args *); 8192728Salfredint ufs_reclaim(struct vop_reclaim_args *); 8292728Salfredvoid ffs_snapgone(struct inode *); 83101777Sphkvfs_root_t ufs_root; 8499101Siedowseint ufs_uninit(struct vfsconf *); 85138290Sphkint ufs_vinit(struct mount *, struct vop_vector *, struct vnode **); 861541Srgrimes 87207141Sjeff#include <sys/sysctl.h> 88207141SjeffSYSCTL_DECL(_vfs_ufs); 89207141Sjeff 9034266Sjulian/* 9134266Sjulian * Soft update function prototypes. 9234266Sjulian */ 9392728Salfredint softdep_setup_directory_add(struct buf *, struct inode *, off_t, 9498542Smckusick ino_t, struct buf *, int); 95207141Sjeffvoid softdep_change_directoryentry_offset(struct buf *, struct inode *, 96207141Sjeff caddr_t, caddr_t, caddr_t, int); 9792728Salfredvoid softdep_setup_remove(struct buf *,struct inode *, struct inode *, int); 9892728Salfredvoid softdep_setup_directory_change(struct buf *, struct inode *, 9998542Smckusick struct inode *, ino_t, int); 10092728Salfredvoid softdep_change_linkcnt(struct inode *); 10192728Salfredint softdep_slowdown(struct vnode *); 102207141Sjeffvoid softdep_setup_create(struct inode *, struct inode *); 103207141Sjeffvoid softdep_setup_dotdot_link(struct inode *, struct inode *); 104207141Sjeffvoid softdep_setup_link(struct inode *, struct inode *); 105207141Sjeffvoid softdep_setup_mkdir(struct inode *, struct inode *); 106207141Sjeffvoid softdep_setup_rmdir(struct inode *, struct inode *); 107207141Sjeffvoid softdep_setup_unlink(struct inode *, struct inode *); 108207141Sjeffvoid softdep_revert_create(struct inode *, struct inode *); 109207141Sjeffvoid softdep_revert_link(struct inode *, struct inode *); 110207141Sjeffvoid softdep_revert_mkdir(struct inode *, struct inode *); 111207141Sjeffvoid softdep_revert_rmdir(struct inode *, struct inode *); 11234266Sjulian 113100344Smckusick/* 114105422Sdillon * Flags to low-level allocation routines. The low 16-bits are reserved 115105422Sdillon * for IO_ flags from vnode.h. 116105422Sdillon * 117105422Sdillon * Note: The general vfs code typically limits the sequential heuristic 118105422Sdillon * count to 127. See sequential_heuristic() in kern/vfs_vnops.c 119100344Smckusick */ 120262678Spfg#define BA_CLRBUF 0x00010000 /* Clear invalid areas of buffer. */ 121262678Spfg#define BA_METAONLY 0x00020000 /* Return indirect block buffer. */ 122248521Skib#define BA_UNMAPPED 0x00040000 /* Do not mmap resulted buffer. */ 123262678Spfg#define BA_SEQMASK 0x7F000000 /* Bits holding seq heuristic. */ 124262678Spfg#define BA_SEQSHIFT 24 125262678Spfg#define BA_SEQMAX 0x7F 12696072Sphk 1274464Sbde#endif /* !_UFS_UFS_EXTERN_H_ */ 128