4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
25 #ifndef _SYS_FS_ZFS_VNOPS_H
26 #define _SYS_FS_ZFS_VNOPS_H
28 #include <sys/vnode.h>
29 #include <sys/xvattr.h>
32 #include <sys/fcntl.h>
33 #include <sys/pathname.h>
40 extern int zfs_open(struct inode
*ip
, int mode
, int flag
, cred_t
*cr
);
41 extern int zfs_close(struct inode
*ip
, int flag
, cred_t
*cr
);
42 extern int zfs_holey(struct inode
*ip
, int cmd
, loff_t
*off
);
43 extern int zfs_read(struct inode
*ip
, uio_t
*uio
, int ioflag
, cred_t
*cr
);
44 extern int zfs_write(struct inode
*ip
, uio_t
*uio
, int ioflag
, cred_t
*cr
);
45 extern int zfs_access(struct inode
*ip
, int mode
, int flag
, cred_t
*cr
);
46 extern int zfs_lookup(struct inode
*dip
, char *nm
, struct inode
**ipp
,
47 int flags
, cred_t
*cr
, int *direntflags
, pathname_t
*realpnp
);
48 extern int zfs_create(struct inode
*dip
, char *name
, vattr_t
*vap
, int excl
,
49 int mode
, struct inode
**ipp
, cred_t
*cr
, int flag
, vsecattr_t
*vsecp
);
50 extern int zfs_remove(struct inode
*dip
, char *name
, cred_t
*cr
, int flags
);
51 extern int zfs_mkdir(struct inode
*dip
, char *dirname
, vattr_t
*vap
,
52 struct inode
**ipp
, cred_t
*cr
, int flags
, vsecattr_t
*vsecp
);
53 extern int zfs_rmdir(struct inode
*dip
, char *name
, struct inode
*cwd
,
54 cred_t
*cr
, int flags
);
55 extern int zfs_readdir(struct inode
*ip
, struct dir_context
*ctx
, cred_t
*cr
);
56 extern int zfs_fsync(struct inode
*ip
, int syncflag
, cred_t
*cr
);
57 extern int zfs_getattr(struct inode
*ip
, vattr_t
*vap
, int flag
, cred_t
*cr
);
58 extern int zfs_getattr_fast(struct inode
*ip
, struct kstat
*sp
);
59 extern int zfs_setattr(struct inode
*ip
, vattr_t
*vap
, int flag
, cred_t
*cr
);
60 extern int zfs_rename(struct inode
*sdip
, char *snm
, struct inode
*tdip
,
61 char *tnm
, cred_t
*cr
, int flags
);
62 extern int zfs_symlink(struct inode
*dip
, char *name
, vattr_t
*vap
,
63 char *link
, struct inode
**ipp
, cred_t
*cr
, int flags
);
64 extern int zfs_follow_link(struct dentry
*dentry
, struct nameidata
*nd
);
65 extern int zfs_readlink(struct inode
*ip
, uio_t
*uio
, cred_t
*cr
);
66 extern int zfs_link(struct inode
*tdip
, struct inode
*sip
,
67 char *name
, cred_t
*cr
, int flags
);
68 extern void zfs_inactive(struct inode
*ip
);
69 extern int zfs_space(struct inode
*ip
, int cmd
, flock64_t
*bfp
, int flag
,
70 offset_t offset
, cred_t
*cr
);
71 extern int zfs_fid(struct inode
*ip
, fid_t
*fidp
);
72 extern int zfs_getsecattr(struct inode
*ip
, vsecattr_t
*vsecp
, int flag
,
74 extern int zfs_setsecattr(struct inode
*ip
, vsecattr_t
*vsecp
, int flag
,
76 extern int zfs_getpage(struct inode
*ip
, struct page
*pl
[], int nr_pages
);
77 extern int zfs_putpage(struct inode
*ip
, struct page
*pp
,
78 struct writeback_control
*wbc
);
79 extern int zfs_dirty_inode(struct inode
*ip
, int flags
);
80 extern int zfs_map(struct inode
*ip
, offset_t off
, caddr_t
*addrp
,
81 size_t len
, unsigned long vm_flags
);
82 extern void zfs_iput_async(struct inode
*ip
);
88 #endif /* _SYS_FS_ZFS_VNOPS_H */