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