Home | History | Annotate | Line # | Download | only in genfs
      1  1.39  christos /*	$NetBSD: genfs.h,v 1.39 2022/03/27 17:10:55 christos Exp $	*/
      2  1.24      elad 
      3  1.24      elad #ifndef	_MISCFS_GENFS_GENFS_H_
      4  1.24      elad #define	_MISCFS_GENFS_GENFS_H_
      5  1.24      elad 
      6  1.24      elad #include <sys/vnode.h>
      7  1.30  riastrad #include <sys/types.h>
      8  1.30  riastrad 
      9  1.30  riastrad struct componentname;
     10  1.30  riastrad struct mount;
     11  1.34  christos struct acl;
     12   1.4     perry 
     13  1.34  christos int	genfs_access(void *);
     14  1.34  christos int	genfs_accessx(void *);
     15  1.18   xtraeme int	genfs_badop(void *);
     16  1.18   xtraeme int	genfs_nullop(void *);
     17  1.18   xtraeme int	genfs_enoioctl(void *);
     18  1.18   xtraeme int	genfs_enoextops(void *);
     19  1.18   xtraeme int	genfs_einval(void *);
     20  1.18   xtraeme int	genfs_eopnotsupp(void *);
     21  1.39  christos int	genfs_erofs_link(void *);
     22  1.39  christos #define	genfs_erofs_symlink genfs_erofs_link
     23  1.18   xtraeme int	genfs_ebadf(void *);
     24  1.18   xtraeme int	genfs_nolock(void *);
     25  1.18   xtraeme int	genfs_noislocked(void *);
     26  1.18   xtraeme int	genfs_nounlock(void *);
     27   1.1   mycroft 
     28  1.32   hannken int	genfs_deadlock(void *);
     29  1.32   hannken #define	genfs_deadislocked genfs_islocked
     30  1.32   hannken int	genfs_deadunlock(void *);
     31  1.32   hannken 
     32  1.37  dholland int	genfs_parsepath(void *);
     33  1.18   xtraeme int	genfs_poll(void *);
     34  1.18   xtraeme int	genfs_kqfilter(void *);
     35  1.18   xtraeme int	genfs_fcntl(void *);
     36  1.18   xtraeme int	genfs_seek(void *);
     37  1.18   xtraeme int	genfs_abortop(void *);
     38  1.18   xtraeme int	genfs_revoke(void *);
     39  1.18   xtraeme int	genfs_lock(void *);
     40  1.18   xtraeme int	genfs_islocked(void *);
     41  1.18   xtraeme int	genfs_unlock(void *);
     42  1.18   xtraeme int	genfs_mmap(void *);
     43  1.18   xtraeme int	genfs_getpages(void *);
     44  1.18   xtraeme int	genfs_putpages(void *);
     45  1.18   xtraeme int	genfs_null_putpages(void *);
     46  1.18   xtraeme int	genfs_compat_getpages(void *);
     47  1.35  christos int	genfs_pathconf(void *v);
     48  1.21  perseant 
     49  1.21  perseant int	genfs_do_putpages(struct vnode *, off_t, off_t, int, struct vm_page **);
     50  1.23  dholland 
     51  1.28     pooka int	genfs_statvfs(struct mount *, struct statvfs *);
     52  1.28     pooka 
     53  1.23  dholland int	genfs_renamelock_enter(struct mount *);
     54  1.23  dholland void	genfs_renamelock_exit(struct mount *);
     55  1.24      elad 
     56  1.33   hannken int	genfs_suspendctl(struct mount *, int);
     57  1.33   hannken 
     58  1.34  christos int	genfs_can_access(struct vnode *, kauth_cred_t, uid_t, gid_t, mode_t,
     59  1.34  christos     struct acl *, accmode_t);
     60  1.34  christos int	genfs_can_access_acl_posix1e(struct vnode *, kauth_cred_t, uid_t,
     61  1.34  christos     gid_t, mode_t, struct acl *, accmode_t);
     62  1.34  christos int	genfs_can_access_acl_nfs4(struct vnode *, kauth_cred_t, uid_t, gid_t,
     63  1.34  christos     mode_t, struct acl *, accmode_t);
     64  1.34  christos int	genfs_can_chmod(struct vnode *, kauth_cred_t, uid_t, gid_t, mode_t);
     65  1.34  christos int	genfs_can_chown(struct vnode *, kauth_cred_t, uid_t, gid_t, uid_t,
     66  1.34  christos     gid_t);
     67  1.34  christos int	genfs_can_chtimes(struct vnode *, kauth_cred_t, uid_t, u_int);
     68  1.34  christos int	genfs_can_chflags(struct vnode *, kauth_cred_t, uid_t, bool);
     69  1.34  christos int	genfs_can_sticky(struct vnode *, kauth_cred_t, uid_t, uid_t);
     70  1.36  christos int	genfs_can_extattr(struct vnode *, kauth_cred_t, accmode_t, int);
     71  1.24      elad 
     72  1.30  riastrad /*
     73  1.30  riastrad  * Rename is complicated.  Sorry.
     74  1.30  riastrad  */
     75  1.30  riastrad 
     76  1.30  riastrad struct genfs_rename_ops;
     77  1.30  riastrad 
     78  1.30  riastrad 
     79  1.30  riastrad int	genfs_insane_rename(void *,
     80  1.30  riastrad 	    int (*)(struct vnode *, struct componentname *,
     81  1.30  riastrad 		struct vnode *, struct componentname *,
     82  1.30  riastrad 		kauth_cred_t, bool));
     83  1.30  riastrad int	genfs_sane_rename(const struct genfs_rename_ops *,
     84  1.30  riastrad 	    struct vnode *, struct componentname *, void *,
     85  1.30  riastrad 	    struct vnode *, struct componentname *, void *,
     86  1.30  riastrad 	    kauth_cred_t, bool);
     87  1.30  riastrad 
     88  1.30  riastrad void	genfs_rename_knote(struct vnode *, struct vnode *, struct vnode *,
     89  1.38   thorpej 	    struct vnode *, nlink_t);
     90  1.30  riastrad void	genfs_rename_cache_purge(struct vnode *, struct vnode *, struct vnode *,
     91  1.30  riastrad 	    struct vnode *);
     92  1.30  riastrad 
     93  1.30  riastrad int	genfs_ufslike_rename_check_possible(unsigned long, unsigned long,
     94  1.30  riastrad 	    unsigned long, unsigned long, bool,
     95  1.30  riastrad 	    unsigned long, unsigned long);
     96  1.30  riastrad int	genfs_ufslike_rename_check_permitted(kauth_cred_t,
     97  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
     98  1.30  riastrad 	    struct vnode *, uid_t,
     99  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
    100  1.30  riastrad 	    struct vnode *, uid_t);
    101  1.30  riastrad int	genfs_ufslike_remove_check_possible(unsigned long, unsigned long,
    102  1.30  riastrad 	    unsigned long, unsigned long);
    103  1.30  riastrad int	genfs_ufslike_remove_check_permitted(kauth_cred_t,
    104  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
    105  1.30  riastrad 	    struct vnode *, uid_t);
    106  1.30  riastrad 
    107  1.30  riastrad struct genfs_rename_ops {
    108  1.30  riastrad 	bool (*gro_directory_empty_p)(struct mount *mp, kauth_cred_t cred,
    109  1.30  riastrad 	    struct vnode *vp, struct vnode *dvp);
    110  1.30  riastrad 	int (*gro_rename_check_possible)(struct mount *mp,
    111  1.30  riastrad 	    struct vnode *fdvp, struct vnode *fvp,
    112  1.30  riastrad 	    struct vnode *tdvp, struct vnode *tvp);
    113  1.30  riastrad 	int (*gro_rename_check_permitted)(struct mount *mp, kauth_cred_t cred,
    114  1.30  riastrad 	    struct vnode *fdvp, struct vnode *fvp,
    115  1.30  riastrad 	    struct vnode *tdvp, struct vnode *tvp);
    116  1.30  riastrad 	int (*gro_remove_check_possible)(struct mount *mp,
    117  1.30  riastrad 	    struct vnode *dvp, struct vnode *vp);
    118  1.30  riastrad 	int (*gro_remove_check_permitted)(struct mount *mp, kauth_cred_t cred,
    119  1.30  riastrad 	    struct vnode *dvp, struct vnode *vp);
    120  1.30  riastrad 	int (*gro_rename)(struct mount *mp, kauth_cred_t cred,
    121  1.30  riastrad 	    struct vnode *fdvp, struct componentname *fcnp,
    122  1.30  riastrad 	    void *fde, struct vnode *fvp,
    123  1.30  riastrad 	    struct vnode *tdvp, struct componentname *tcnp,
    124  1.38   thorpej 	    void *tde, struct vnode *tvp, nlink_t *tvp_nlinkp);
    125  1.30  riastrad 	int (*gro_remove)(struct mount *mp, kauth_cred_t cred,
    126  1.30  riastrad 	    struct vnode *dvp, struct componentname *cnp, void *de,
    127  1.38   thorpej 	    struct vnode *vp, nlink_t *tvp_nlinkp);
    128  1.30  riastrad 	int (*gro_lookup)(struct mount *mp, struct vnode *dvp,
    129  1.31  riastrad 	    struct componentname *cnp, void *de_ret, struct vnode **vp_ret);
    130  1.30  riastrad 	int (*gro_genealogy)(struct mount *mp, kauth_cred_t cred,
    131  1.30  riastrad 	    struct vnode *fdvp, struct vnode *tdvp,
    132  1.30  riastrad 	    struct vnode **intermediate_node_ret);
    133  1.30  riastrad 	int (*gro_lock_directory)(struct mount *mp, struct vnode *vp);
    134  1.30  riastrad };
    135  1.30  riastrad 
    136  1.24      elad #endif /* !_MISCFS_GENFS_GENFS_H_ */
    137