111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_NFS_XDR_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_NFS_XDR_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/sunrpc/xprt.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/nfsacl.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_MAX_FILE_IO_SIZE (1048576U)
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_DEF_FILE_IO_SIZE (4096U)
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_MIN_FILE_IO_SIZE (1024U)
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_fsid {
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert uint64_t major;
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert uint64_t minor;
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_ATTR_WCC 0x0001
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_ATTR_FATTR 0x0002
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_ATTR_FATTR_V3 0x0004
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_ATTR_FATTR_V4 0x0008
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_ATTR_FATTR_V4_REFERRAL 0x0010
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_fsinfo {
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr *fattr;
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rtmax;
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rtpref;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rtmult;
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 wtmax;
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 wtpref;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 wtmult;
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 dtpref;
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 maxfilesize;
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 lease_time;
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_fsstat {
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr *fattr;
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 tbytes;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 fbytes;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 abytes;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 tfiles;
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ffiles;
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 afiles;
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs2_fsstat {
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tsize;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 bsize;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 blocks;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 bfree;
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 bavail;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_pathconf {
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr *fattr;
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 max_link;
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 max_namelen;
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs4_change_info {
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 atomic;
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u64 before;
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u64 after;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_seqid;
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_openargs {
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_fh * fh;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * seqid;
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int open_flags;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 clientid;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 id;
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * attrs;
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_verifier verifier;
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid delegation;
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int delegation_type;
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct qstr * name;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server *server;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const u32 * bitmask;
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 claim;
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_openres {
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh fh;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs4_change_info cinfo;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rflags;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * f_attr;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * dir_attr;
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server *server;
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int delegation_type;
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid delegation;
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 do_recall;
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 maxsize;
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_open_confirmargs {
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_fh * fh;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid * stateid;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * seqid;
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_open_confirmres {
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_closeargs {
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid * stateid;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * seqid;
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int open_flags;
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const u32 * bitmask;
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_closeres {
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server *server;
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_lowner {
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 clientid;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 id;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_lock_args {
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct file_lock * fl;
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * lock_seqid;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid * lock_stateid;
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * open_seqid;
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid * open_stateid;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_lowner lock_owner;
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char block : 1;
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char reclaim : 1;
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char new_lock_owner : 1;
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_lock_res {
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_locku_args {
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct file_lock * fl;
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_seqid * seqid;
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid * stateid;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_locku_res {
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_lockt_args {
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct file_lock * fl;
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_lowner lock_owner;
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_lockt_res {
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct file_lock * denied;
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs4_delegreturnargs {
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_fh *fhandle;
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const nfs4_stateid *stateid;
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const u32 * bitmask;
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs4_delegreturnres {
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server *server;
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_readargs {
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_open_context *context;
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 offset;
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 count;
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pgbase;
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_readres {
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 count;
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int eof;
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_writeargs {
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_open_context *context;
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 offset;
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 count;
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert enum nfs3_stable_how stable;
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pgbase;
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const u32 * bitmask;
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_writeverf {
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert enum nfs3_stable_how committed;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 verifier[2];
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_writeres {
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_writeverf * verf;
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 count;
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server *server;
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_entry {
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 ino;
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 cookie,
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert prev_cookie;
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int eof;
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_sattrargs {
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_diropargs {
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_createargs {
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_renameargs {
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * fromname;
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int fromlen;
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * tofh;
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * toname;
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_setattrargs {
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert nfs4_stateid stateid;
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * iap;
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server * server;
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const u32 * bitmask;
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_setaclargs {
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t acl_len;
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int acl_pgbase;
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** acl_pages;
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_getaclargs {
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t acl_len;
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int acl_pgbase;
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** acl_pages;
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_setattrres {
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const struct nfs_server * server;
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_linkargs {
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * tofh;
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * toname;
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_symlinkargs {
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * fromname;
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int fromlen;
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * topath;
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_readdirargs {
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cookie;
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int count;
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_getaclargs {
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int mask;
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_setaclargs {
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode * inode;
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int mask;
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct posix_acl * acl_access;
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct posix_acl * acl_default;
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_diropok {
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_readlinkargs {
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pgbase;
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pglen;
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_sattrargs {
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int guard;
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct timespec guardtime;
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_diropargs {
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_accessargs {
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 access;
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_createargs {
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert enum nfs3_createmode createmode;
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 verifier[2];
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_mkdirargs {
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_symlinkargs {
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * fromname;
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int fromlen;
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * topath;
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_mknodargs {
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * name;
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int len;
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert enum nfs3_ftype type;
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr * sattr;
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dev_t rdev;
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_renameargs {
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * fromname;
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int fromlen;
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * tofh;
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * toname;
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_linkargs {
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fromfh;
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * tofh;
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const char * toname;
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tolen;
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_readdirargs {
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 cookie;
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 verf[2];
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int plus;
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int count;
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_diropres {
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * dir_attr;
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_accessres {
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 access;
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_readlinkargs {
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh * fh;
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pgbase;
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int pglen;
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page ** pages;
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_renameres {
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fromattr;
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * toattr;
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_linkres {
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * dir_attr;
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_readdirres {
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * dir_attr;
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 * verf;
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int plus;
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs3_getaclres {
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr * fattr;
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int mask;
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int acl_access_count;
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int acl_default_count;
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct posix_acl * acl_access;
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct posix_acl * acl_default;
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_page;
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_PAGEVEC_SIZE (8U)
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_read_data {
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int flags;
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_task task;
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode *inode;
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_cred *cred;
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr fattr;
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct list_head pages;
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_page *req;
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page **pagevec;
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int npages;
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_readargs args;
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_readres res;
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page *page_array[NFS_PAGEVEC_SIZE];
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_write_data {
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int flags;
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_task task;
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode *inode;
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_cred *cred;
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr fattr;
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_writeverf verf;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct list_head pages;
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_page *req;
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page **pagevec;
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int npages;
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_writeargs args;
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_writeres res;
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page *page_array[NFS_PAGEVEC_SIZE];
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_access_entry;
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct nfs_rpc_ops {
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int version;
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dentry_operations *dentry_ops;
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode_operations *dir_inode_ops;
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode_operations *file_inode_ops;
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*getroot) (struct nfs_server *, struct nfs_fh *,
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fsinfo *);
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*getattr) (struct nfs_server *, struct nfs_fh *,
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr *);
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*setattr) (struct dentry *, struct nfs_fattr *,
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr *);
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*lookup) (struct inode *, struct qstr *,
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fh *, struct nfs_fattr *);
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*access) (struct inode *, struct nfs_access_entry *);
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*readlink)(struct inode *, struct page *, unsigned int,
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int);
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*read) (struct nfs_read_data *);
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*write) (struct nfs_write_data *);
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*commit) (struct nfs_write_data *);
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*create) (struct inode *, struct dentry *,
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr *, int, struct nameidata *);
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*remove) (struct inode *, struct qstr *);
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*unlink_setup) (struct rpc_message *,
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dentry *, struct qstr *);
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*unlink_done) (struct dentry *, struct rpc_task *);
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*rename) (struct inode *, struct qstr *,
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct inode *, struct qstr *);
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*link) (struct inode *, struct inode *, struct qstr *);
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*symlink) (struct inode *, struct qstr *, struct qstr *,
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct iattr *, struct nfs_fh *,
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fattr *);
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*rmdir) (struct inode *, struct qstr *);
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*readdir) (struct dentry *, struct rpc_cred *,
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u64, struct page *, unsigned int, int);
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*mknod) (struct inode *, struct dentry *, struct iattr *,
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dev_t);
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*statfs) (struct nfs_server *, struct nfs_fh *,
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fsstat *);
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*fsinfo) (struct nfs_server *, struct nfs_fh *,
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_fsinfo *);
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*pathconf) (struct nfs_server *, struct nfs_fh *,
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct nfs_pathconf *);
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 * (*decode_dirent)(u32 *, struct nfs_entry *, int plus);
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*read_setup) (struct nfs_read_data *);
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*read_done) (struct rpc_task *, struct nfs_read_data *);
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*write_setup) (struct nfs_write_data *, int how);
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*write_done) (struct rpc_task *, struct nfs_write_data *);
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*commit_setup) (struct nfs_write_data *, int how);
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*commit_done) (struct rpc_task *, struct nfs_write_data *);
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*file_open) (struct inode *, struct file *);
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*file_release) (struct inode *, struct file *);
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*lock)(struct file *, int, struct file_lock *);
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*clear_acl_cache)(struct inode *);
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NFS_CALL(op, inode, args) NFS_PROTO(inode)->op args
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
557