1 /* $NetBSD: ulfs_extern.h,v 1.26 2021/07/18 23:57:15 dholland Exp $ */ 2 /* from NetBSD: ufs_extern.h,v 1.79 2015/03/27 17:27:56 riastradh 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 * @(#)ufs_extern.h 8.10 (Berkeley) 5/14/95 33 */ 34 35 #ifndef _UFS_LFS_ULFS_EXTERN_H_ 36 #define _UFS_LFS_ULFS_EXTERN_H_ 37 38 #include <sys/mutex.h> 39 40 struct buf; 41 struct componentname; 42 struct disklabel; 43 struct dquot; 44 struct fid; 45 struct flock; 46 struct indir; 47 struct inode; 48 struct mbuf; 49 struct mount; 50 struct nameidata; 51 struct lfs_direct; 52 struct lwp; 53 struct ulfs_args; 54 struct ulfs_lookup_results; 55 struct ulfs_ufid; 56 struct ulfsmount; 57 struct uio; 58 struct vattr; 59 struct vnode; 60 61 __BEGIN_DECLS 62 int ulfs_access(void *); 63 int ulfs_advlock(void *); 64 int ulfs_bmap(void *); 65 int ulfs_close(void *); 66 int ulfs_create(void *); 67 int ulfs_getattr(void *); 68 int ulfs_inactive(void *); 69 int ulfs_link(void *); 70 int ulfs_lookup(void *); 71 int ulfs_open(void *); 72 int ulfs_pathconf(void *); 73 int ulfs_print(void *); 74 int ulfs_readdir(void *); 75 int ulfs_readlink(void *); 76 int ulfs_remove(void *); 77 int ulfs_rmdir(void *); 78 int ulfs_setattr(void *); 79 int ulfs_strategy(void *); 80 int ulfs_whiteout(void *); 81 int ulfsspec_close(void *); 82 int ulfsspec_read(void *); 83 int ulfsspec_write(void *); 84 85 int ulfsfifo_read(void *); 86 int ulfsfifo_write(void *); 87 int ulfsfifo_close(void *); 88 89 /* ulfs_bmap.c */ 90 typedef bool (*ulfs_issequential_callback_t)(const struct lfs *, 91 daddr_t, daddr_t); 92 int ulfs_bmaparray(struct vnode *, daddr_t, daddr_t *, struct indir *, 93 int *, int *, ulfs_issequential_callback_t); 94 int ulfs_getlbns(struct vnode *, daddr_t, struct indir *, int *); 95 96 /* ulfs_inode.c */ 97 int ulfs_reclaim(struct vnode *); 98 int ulfs_balloc_range(struct vnode *, off_t, off_t, kauth_cred_t, int); 99 100 /* ulfs_lookup.c */ 101 void ulfs_dirbad(struct inode *, doff_t, const char *); 102 int ulfs_dirbadentry(struct vnode *, LFS_DIRHEADER *, int); 103 int ulfs_direnter(struct vnode *, const struct ulfs_lookup_results *, 104 struct vnode *, 105 struct componentname *, ino_t, unsigned, 106 struct buf *); 107 int ulfs_dirremove(struct vnode *, const struct ulfs_lookup_results *, 108 struct inode *, int, int); 109 int ulfs_dirrewrite(struct inode *, off_t, 110 struct inode *, ino_t, int, int, int); 111 int ulfs_dirempty(struct inode *, ino_t, kauth_cred_t); 112 int ulfs_blkatoff(struct vnode *, off_t, char **, struct buf **, bool); 113 114 /* ulfs_quota.c */ 115 /* 116 * Flags to lfs_chkdq() and lfs_chkiq() 117 */ 118 #define FORCE 0x01 /* force usage changes independent of limits */ 119 void ulfsquota_init(struct inode *); 120 void ulfsquota_free(struct inode *); 121 int lfs_chkdq(struct inode *, int64_t, kauth_cred_t, int); 122 int lfs_chkiq(struct inode *, int32_t, kauth_cred_t, int); 123 int lfsquota_handle_cmd(struct mount *, struct lwp *, 124 struct quotactl_args *); 125 126 int lfs_qsync(struct mount *); 127 128 /* ulfs_quota1.c */ 129 int lfsquota1_umount(struct mount *, int); 130 131 /* ulfs_quota2.c */ 132 int lfsquota2_umount(struct mount *, int); 133 int lfs_quota2_mount(struct mount *); 134 135 /* ulfs_vfsops.c */ 136 void ulfs_init(void); 137 void ulfs_reinit(void); 138 void ulfs_done(void); 139 int ulfs_start(struct mount *, int); 140 int ulfs_root(struct mount *, int, struct vnode **); 141 int ulfs_quotactl(struct mount *, struct quotactl_args *); 142 int ulfs_fhtovp(struct mount *, struct ulfs_ufid *, int, struct vnode **); 143 144 /* ulfs_vnops.c */ 145 void ulfs_vinit(struct mount *, int (**)(void *), 146 int (**)(void *), struct vnode **); 147 int ulfs_gop_alloc(struct vnode *, off_t, off_t, int, kauth_cred_t); 148 void ulfs_gop_markupdate(struct vnode *, int); 149 int ulfs_bufio(enum uio_rw, struct vnode *, void *, size_t, off_t, int, 150 kauth_cred_t, size_t *, struct lwp *); 151 152 /* 153 * Snapshot function prototypes. 154 */ 155 156 void ulfs_snapgone(struct inode *); 157 158 __END_DECLS 159 160 #endif /* !_UFS_LFS_ULFS_EXTERN_H_ */ 161