| 1 | /* $NetBSD: ufs_extern.h,v 1.83 2016/10/28 20:38:12 jdolecek Exp $ */ |
| 2 | |
| 3 | /*- |
| 4 | * Copyright (c) 1991, 1993, 1994 |
| 5 | * The Regents of the University of California. All rights reserved. |
| 6 | * |
| 7 | * Redistribution and use in source and binary forms, with or without |
| 8 | * modification, are permitted provided that the following conditions |
| 9 | * are met: |
| 10 | * 1. Redistributions of source code must retain the above copyright |
| 11 | * notice, this list of conditions and the following disclaimer. |
| 12 | * 2. Redistributions in binary form must reproduce the above copyright |
| 13 | * notice, this list of conditions and the following disclaimer in the |
| 14 | * documentation and/or other materials provided with the distribution. |
| 15 | * 3. Neither the name of the University nor the names of its contributors |
| 16 | * may be used to endorse or promote products derived from this software |
| 17 | * without specific prior written permission. |
| 18 | * |
| 19 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
| 20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| 22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| 23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| 24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| 25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| 26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| 27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| 28 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| 29 | * SUCH DAMAGE. |
| 30 | * |
| 31 | * @(#)ufs_extern.h 8.10 (Berkeley) 5/14/95 |
| 32 | */ |
| 33 | |
| 34 | #ifndef _UFS_UFS_EXTERN_H_ |
| 35 | #define _UFS_UFS_EXTERN_H_ |
| 36 | |
| 37 | #include <sys/mutex.h> |
| 38 | |
| 39 | struct buf; |
| 40 | struct componentname; |
| 41 | struct direct; |
| 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 lwp; |
| 52 | struct ufid; |
| 53 | struct ufs_args; |
| 54 | struct ufs_lookup_results; |
| 55 | struct ufsmount; |
| 56 | struct uio; |
| 57 | struct vattr; |
| 58 | struct vnode; |
| 59 | |
| 60 | extern pool_cache_t ufs_direct_cache; /* memory pool for directs */ |
| 61 | |
| 62 | __BEGIN_DECLS |
| 63 | #define ufs_abortop genfs_abortop |
| 64 | int ufs_access(void *); |
| 65 | int ufs_advlock(void *); |
| 66 | int ufs_bmap(void *); |
| 67 | int ufs_close(void *); |
| 68 | int ufs_create(void *); |
| 69 | int ufs_getattr(void *); |
| 70 | int ufs_inactive(void *); |
| 71 | #define ufs_fcntl genfs_fcntl |
| 72 | #define ufs_ioctl genfs_enoioctl |
| 73 | #define ufs_islocked genfs_islocked |
| 74 | int ufs_link(void *); |
| 75 | #define ufs_lock genfs_lock |
| 76 | int ufs_lookup(void *); |
| 77 | int ufs_mkdir(void *); |
| 78 | int ufs_mknod(void *); |
| 79 | #define ufs_mmap genfs_mmap |
| 80 | #define ufs_revoke genfs_revoke |
| 81 | int ufs_open(void *); |
| 82 | int ufs_pathconf(void *); |
| 83 | int ufs_print(void *); |
| 84 | int ufs_readdir(void *); |
| 85 | int ufs_readlink(void *); |
| 86 | int ufs_remove(void *); |
| 87 | int ufs_rename(void *); |
| 88 | int ufs_rmdir(void *); |
| 89 | #define ufs_seek genfs_seek |
| 90 | #define ufs_poll genfs_poll |
| 91 | int ufs_setattr(void *); |
| 92 | int ufs_strategy(void *); |
| 93 | int ufs_symlink(void *); |
| 94 | #define ufs_unlock genfs_unlock |
| 95 | int ufs_whiteout(void *); |
| 96 | int ufsspec_close(void *); |
| 97 | int ufsspec_read(void *); |
| 98 | int ufsspec_write(void *); |
| 99 | |
| 100 | int ufsfifo_read(void *); |
| 101 | int ufsfifo_write(void *); |
| 102 | int ufsfifo_close(void *); |
| 103 | |
| 104 | /* ufs_bmap.c */ |
| 105 | typedef bool (*ufs_issequential_callback_t)(const struct ufsmount *, |
| 106 | daddr_t, daddr_t); |
| 107 | int ufs_bmaparray(struct vnode *, daddr_t, daddr_t *, struct indir *, |
| 108 | int *, int *, ufs_issequential_callback_t); |
| 109 | int ufs_getlbns(struct vnode *, daddr_t, struct indir *, int *); |
| 110 | |
| 111 | /* ufs_inode.c */ |
| 112 | int ufs_reclaim(struct vnode *); |
| 113 | int ufs_balloc_range(struct vnode *, off_t, off_t, kauth_cred_t, int); |
| 114 | int ufs_truncate_retry(struct vnode *, uint64_t, kauth_cred_t); |
| 115 | |
| 116 | /* ufs_lookup.c */ |
| 117 | void ufs_dirbad(struct inode *, doff_t, const char *); |
| 118 | const char *ufs_dirbadentry(const struct vnode *, const struct direct *, int); |
| 119 | void ufs_makedirentry(struct inode *, struct componentname *, |
| 120 | struct direct *); |
| 121 | int ufs_direnter(struct vnode *, const struct ufs_lookup_results *, |
| 122 | struct vnode *, struct direct *, |
| 123 | struct componentname *, struct buf *); |
| 124 | int ufs_dirremove(struct vnode *, const struct ufs_lookup_results *, |
| 125 | struct inode *, int, int); |
| 126 | int ufs_dirrewrite(struct inode *, off_t, |
| 127 | struct inode *, ino_t, int, int, int); |
| 128 | int ufs_dirempty(struct inode *, ino_t, kauth_cred_t); |
| 129 | int ufs_blkatoff(struct vnode *, off_t, void *, struct buf **, bool); |
| 130 | |
| 131 | /* ufs_rename.c -- for lfs */ |
| 132 | bool ufs_gro_directory_empty_p(struct mount *, kauth_cred_t, |
| 133 | struct vnode *, struct vnode *); |
| 134 | int ufs_gro_rename_check_possible(struct mount *, |
| 135 | struct vnode *, struct vnode *, struct vnode *, struct vnode *); |
| 136 | int ufs_gro_rename_check_permitted(struct mount *, kauth_cred_t, |
| 137 | struct vnode *, struct vnode *, struct vnode *, struct vnode *); |
| 138 | int ufs_gro_remove_check_possible(struct mount *, |
| 139 | struct vnode *, struct vnode *); |
| 140 | int ufs_gro_remove_check_permitted(struct mount *, kauth_cred_t, |
| 141 | struct vnode *, struct vnode *); |
| 142 | int ufs_gro_rename(struct mount *, kauth_cred_t, |
| 143 | struct vnode *, struct componentname *, void *, struct vnode *, |
| 144 | struct vnode *, struct componentname *, void *, struct vnode *); |
| 145 | int ufs_gro_remove(struct mount *, kauth_cred_t, |
| 146 | struct vnode *, struct componentname *, void *, struct vnode *); |
| 147 | int ufs_gro_lookup(struct mount *, struct vnode *, |
| 148 | struct componentname *, void *, struct vnode **); |
| 149 | int ufs_gro_genealogy(struct mount *, kauth_cred_t, |
| 150 | struct vnode *, struct vnode *, struct vnode **); |
| 151 | int ufs_gro_lock_directory(struct mount *, struct vnode *); |
| 152 | |
| 153 | |
| 154 | /* ufs_quota.c */ |
| 155 | /* |
| 156 | * Flags to chkdq() and chkiq() |
| 157 | */ |
| 158 | #define FORCE 0x01 /* force usage changes independent of limits */ |
| 159 | void ufsquota_init(struct inode *); |
| 160 | void ufsquota_free(struct inode *); |
| 161 | int chkdq(struct inode *, int64_t, kauth_cred_t, int); |
| 162 | int chkiq(struct inode *, int32_t, kauth_cred_t, int); |
| 163 | int quota_handle_cmd(struct mount *, struct lwp *, |
| 164 | struct quotactl_args *); |
| 165 | |
| 166 | int qsync(struct mount *); |
| 167 | |
| 168 | /* ufs_quota1.c */ |
| 169 | int quota1_umount(struct mount *, int); |
| 170 | |
| 171 | /* ufs_quota2.c */ |
| 172 | int quota2_umount(struct mount *, int); |
| 173 | |
| 174 | /* ufs_vfsops.c */ |
| 175 | void ufs_init(void); |
| 176 | void ufs_reinit(void); |
| 177 | void ufs_done(void); |
| 178 | int ufs_start(struct mount *, int); |
| 179 | int ufs_root(struct mount *, struct vnode **); |
| 180 | int ufs_vget(struct mount *, ino_t, struct vnode **); |
| 181 | int ufs_quotactl(struct mount *, struct quotactl_args *); |
| 182 | int ufs_fhtovp(struct mount *, struct ufid *, struct vnode **); |
| 183 | |
| 184 | /* ufs_vnops.c */ |
| 185 | void ufs_vinit(struct mount *, int (**)(void *), |
| 186 | int (**)(void *), struct vnode **); |
| 187 | int ufs_gop_alloc(struct vnode *, off_t, off_t, int, kauth_cred_t); |
| 188 | void ufs_gop_markupdate(struct vnode *, int); |
| 189 | int ufs_bufio(enum uio_rw, struct vnode *, void *, size_t, off_t, int, |
| 190 | kauth_cred_t, size_t *, struct lwp *); |
| 191 | |
| 192 | __END_DECLS |
| 193 | |
| 194 | extern kmutex_t ufs_hashlock; |
| 195 | |
| 196 | #endif /* !_UFS_UFS_EXTERN_H_ */ |
| 197 | |