1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _LINUX_NFS_XDR_H 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _LINUX_NFS_XDR_H 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/sunrpc/xprt.h> 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/nfsacl.h> 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * To change the maximum rsize and wsize supported by the NFS client, adjust 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * NFS_MAX_FILE_IO_SIZE. 64KB is a typical maximum, but some servers can 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * support a megabyte or more. The default is left at 4096 bytes, which is 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * reasonable for NFS over UDP. 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_MAX_FILE_IO_SIZE (1048576U) 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_DEF_FILE_IO_SIZE (4096U) 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_MIN_FILE_IO_SIZE (1024U) 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_fsid { 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint64_t major; 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru uint64_t minor; 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Helper for checking equality between 2 fsids. 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustatic inline int nfs_fsid_equal(const struct nfs_fsid *a, const struct nfs_fsid *b) 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru{ 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru return a->major == b->major && a->minor == b->minor; 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_fattr { 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short valid; /* which fields are valid */ 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 pre_size; /* pre_op_attr.size */ 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec pre_mtime; /* pre_op_attr.mtime */ 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec pre_ctime; /* pre_op_attr.ctime */ 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru enum nfs_ftype type; /* always use NFSv2 types */ 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 mode; 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 nlink; 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 uid; 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 gid; 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 size; 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru union { 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 blocksize; 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 blocks; 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } nfs2; 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 used; 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } nfs3; 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } du; 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru dev_t rdev; 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fsid fsid; 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 fileid; 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec atime; 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec mtime; 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec ctime; 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 bitmap[2]; /* NFSv4 returned attribute bitmap */ 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 change_attr; /* NFSv4 change attribute */ 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 pre_change_attr;/* pre-op NFSv4 change attribute */ 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned long time_start; 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_ATTR_WCC 0x0001 /* pre-op WCC data */ 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_ATTR_FATTR 0x0002 /* post-op attributes */ 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_ATTR_FATTR_V3 0x0004 /* NFSv3 attributes */ 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_ATTR_FATTR_V4 0x0008 /* NFSv4 change attribute */ 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_ATTR_FATTR_V4_REFERRAL 0x0010 /* NFSv4 referral */ 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Info on the file system 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_fsinfo { 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr *fattr; /* Post-op attributes */ 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 rtmax; /* max. read transfer size */ 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 rtpref; /* pref. read transfer size */ 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 rtmult; /* reads should be multiple of this */ 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 wtmax; /* max. write transfer size */ 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 wtpref; /* pref. write transfer size */ 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 wtmult; /* writes should be multiple of this */ 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 dtpref; /* pref. readdir transfer size */ 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 maxfilesize; 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 lease_time; /* in seconds */ 82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_fsstat { 85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr *fattr; /* Post-op attributes */ 86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 tbytes; /* total size in bytes */ 87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 fbytes; /* # of free bytes */ 88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 abytes; /* # of bytes available to user */ 89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 tfiles; /* # of files */ 90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 ffiles; /* # of free files */ 91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 afiles; /* # of files available to user */ 92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs2_fsstat { 95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 tsize; /* Server transfer size */ 96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 bsize; /* Filesystem block size */ 97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 blocks; /* No. of "bsize" blocks on filesystem */ 98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 bfree; /* No. of free "bsize" blocks */ 99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 bavail; /* No. of available "bsize" blocks */ 100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_pathconf { 103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr *fattr; /* Post-op attributes */ 104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 max_link; /* max # of hard links */ 105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 max_namelen; /* max name length */ 106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_change_info { 109c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 atomic; 110c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u64 before; 111c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u64 after; 112c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 113c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 114c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_seqid; 115c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 116c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Arguments to the open call. 117c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 118c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_openargs { 119c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 120c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * seqid; 121c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int open_flags; 122c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 clientid; 123c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 id; 124c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru union { 125c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * attrs; /* UNCHECKED, GUARDED */ 126c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_verifier verifier; /* EXCLUSIVE */ 127c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid delegation; /* CLAIM_DELEGATE_CUR */ 128c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int delegation_type; /* CLAIM_PREVIOUS */ 129c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } u; 130c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * name; 131c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; /* Needed for ID mapping */ 132c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 133c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 claim; 134c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 135c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 136c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_openres { 137c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 138c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh fh; 139c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info cinfo; 140c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 rflags; 141c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * f_attr; 142c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 143c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; 144c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int delegation_type; 145c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid delegation; 146c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 do_recall; 147c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 maxsize; 148c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 149c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 150c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 151c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Arguments to the open_confirm call. 152c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 153c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_open_confirmargs { 154c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 155c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid * stateid; 156c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * seqid; 157c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 158c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 159c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_open_confirmres { 160c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 161c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 162c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 163c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 164c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Arguments to the close call. 165c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 166c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_closeargs { 167c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 168c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid * stateid; 169c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * seqid; 170c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int open_flags; 171c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 172c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 173c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 174c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_closeres { 175c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 176c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 177c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; 178c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 179c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 180c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * * Arguments to the lock,lockt, and locku call. 181c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * */ 182c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_lowner { 183c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 clientid; 184c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 id; 185c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 186c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 187c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_lock_args { 188c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 189c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct file_lock * fl; 190c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * lock_seqid; 191c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid * lock_stateid; 192c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * open_seqid; 193c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid * open_stateid; 194c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_lowner lock_owner; 195c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned char block : 1; 196c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned char reclaim : 1; 197c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned char new_lock_owner : 1; 198c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 199c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 200c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_lock_res { 201c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 202c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 203c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 204c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_locku_args { 205c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 206c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct file_lock * fl; 207c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_seqid * seqid; 208c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid * stateid; 209c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 210c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 211c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_locku_res { 212c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 213c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 214c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 215c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_lockt_args { 216c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 217c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct file_lock * fl; 218c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_lowner lock_owner; 219c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 220c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 221c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_lockt_res { 222c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct file_lock * denied; /* LOCK, LOCKT failed */ 223c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 224c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 225c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_delegreturnargs { 226c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh *fhandle; 227c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const nfs4_stateid *stateid; 228c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 229c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 230c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 231c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_delegreturnres { 232c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 233c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; 234c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 235c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 236c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 237c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Arguments to the read call. 238c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 239c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_readargs { 240c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 241c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_open_context *context; 242c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 offset; 243c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 count; 244c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 245c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 246c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 247c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 248c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_readres { 249c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 250c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 count; 251c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int eof; 252c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 253c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 254c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 255c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Arguments to the write call. 256c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 257c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_writeargs { 258c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 259c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_open_context *context; 260c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 offset; 261c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 count; 262c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru enum nfs3_stable_how stable; 263c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 264c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 265c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 266c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 267c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 268c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_writeverf { 269c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru enum nfs3_stable_how committed; 270c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 verifier[2]; 271c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 272c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 273c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_writeres { 274c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 275c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_writeverf * verf; 276c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 count; 277c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; 278c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 279c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 280c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 281c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Argument struct for decode_entry function 282c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 283c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_entry { 284c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 ino; 285c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 cookie, 286c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru prev_cookie; 287c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 288c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 289c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int eof; 290c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 291c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 292c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 293c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 294c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 295c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * The following types are for NFSv2 only. 296c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 297c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_sattrargs { 298c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 299c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 300c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 301c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 302c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_diropargs { 303c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 304c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 305c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 306c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 307c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 308c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_createargs { 309c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 310c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 311c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 312c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 313c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 314c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 315c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_renameargs { 316c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 317c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * fromname; 318c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int fromlen; 319c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * tofh; 320c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * toname; 321c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 322c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 323c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 324c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_setattrargs { 325c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 326c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_stateid stateid; 327c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * iap; 328c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; /* Needed for name mapping */ 329c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 330c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 331c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 332c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_setaclargs { 333c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 334c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru size_t acl_len; 335c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int acl_pgbase; 336c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** acl_pages; 337c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 338c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 339c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_getaclargs { 340c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 341c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru size_t acl_len; 342c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int acl_pgbase; 343c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** acl_pages; 344c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 345c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 346c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_setattrres { 347c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 348c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 349c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 350c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 351c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_linkargs { 352c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 353c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * tofh; 354c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * toname; 355c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 356c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 357c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 358c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_symlinkargs { 359c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 360c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * fromname; 361c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int fromlen; 362c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * topath; 363c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 364c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 365c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 366c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 367c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_readdirargs { 368c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 369c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 cookie; 370c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int count; 371c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 372c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 373c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 374c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_getaclargs { 375c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 376c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int mask; 377c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 378c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 379c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 380c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_setaclargs { 381c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode * inode; 382c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int mask; 383c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct posix_acl * acl_access; 384c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct posix_acl * acl_default; 385c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 386c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 387c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 388c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_diropok { 389c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 390c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 391c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 392c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 393c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_readlinkargs { 394c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 395c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 396c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pglen; 397c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 398c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 399c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 400c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_sattrargs { 401c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 402c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 403c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int guard; 404c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct timespec guardtime; 405c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 406c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 407c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_diropargs { 408c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 409c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 410c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 411c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 412c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 413c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_accessargs { 414c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 415c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 access; 416c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 417c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 418c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_createargs { 419c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 420c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 421c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 422c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 423c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru enum nfs3_createmode createmode; 424c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 verifier[2]; 425c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 426c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 427c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_mkdirargs { 428c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 429c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 430c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 431c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 432c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 433c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 434c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_symlinkargs { 435c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 436c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * fromname; 437c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int fromlen; 438c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * topath; 439c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 440c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 441c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 442c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 443c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_mknodargs { 444c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 445c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * name; 446c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 447c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru enum nfs3_ftype type; 448c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr * sattr; 449c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru dev_t rdev; 450c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 451c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 452c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_renameargs { 453c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 454c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * fromname; 455c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int fromlen; 456c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * tofh; 457c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * toname; 458c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 459c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 460c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 461c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_linkargs { 462c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fromfh; 463c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * tofh; 464c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const char * toname; 465c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int tolen; 466c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 467c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 468c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_readdirargs { 469c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 470c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u64 cookie; 471c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 verf[2]; 472c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int plus; 473c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int count; 474c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 475c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 476c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 477c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_diropres { 478c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 479c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 480c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 481c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 482c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 483c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_accessres { 484c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 485c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 access; 486c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 487c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 488c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_readlinkargs { 489c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 490c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 491c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pglen; 492c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; 493c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 494c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 495c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_renameres { 496c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fromattr; 497c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * toattr; 498c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 499c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 500c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_linkres { 501c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 502c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 503c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 504c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 505c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_readdirres { 506c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 507c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 * verf; 508c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int plus; 509c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 510c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 511c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs3_getaclres { 512c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 513c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int mask; 514c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int acl_access_count; 515c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int acl_default_count; 516c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct posix_acl * acl_access; 517c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct posix_acl * acl_default; 518c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 519c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 520c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_NFS_V4 521c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 522c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef u64 clientid4; 523c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 524c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_accessargs { 525c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 526c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 access; 527c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 528c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 529c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_accessres { 530c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 supported; 531c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 access; 532c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 533c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 534c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_create_arg { 535c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 ftype; 536c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru union { 537c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct qstr * symlink; /* NF4LNK */ 538c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 539c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 specdata1; 540c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 specdata2; 541c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } device; /* NF4BLK, NF4CHR */ 542c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } u; 543c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * name; 544c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 545c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct iattr * attrs; 546c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * dir_fh; 547c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 548c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 549c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 550c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_create_res { 551c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 552c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 553c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 554c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info dir_cinfo; 555c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_fattr; 556c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 557c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 558c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_fsinfo_arg { 559c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 560c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 561c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 562c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 563c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_getattr_arg { 564c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 565c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 566c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 567c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 568c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_getattr_res { 569c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 570c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 571c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 572c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 573c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_link_arg { 574c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 575c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * dir_fh; 576c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * name; 577c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 578c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 579c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 580c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_link_res { 581c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 582c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 583c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info cinfo; 584c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 585c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 586c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 587c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 588c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_lookup_arg { 589c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * dir_fh; 590c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * name; 591c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 592c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 593c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 594c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_lookup_res { 595c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 596c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * fattr; 597c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh * fh; 598c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 599c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 600c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_lookup_root_arg { 601c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 602c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 603c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 604c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_pathconf_arg { 605c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 606c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 607c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 608c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 609c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_readdir_arg { 610c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 611c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u64 cookie; 612c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_verifier verifier; 613c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 count; 614c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; /* zero-copy data */ 615c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; /* zero-copy data */ 616c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 617c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 618c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 619c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_readdir_res { 620c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru nfs4_verifier verifier; 621c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 622c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 623c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 624c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_readlink { 625c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 626c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pgbase; 627c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int pglen; /* zero-copy data */ 628c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page ** pages; /* zero-copy data */ 629c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 630c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 631c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_remove_arg { 632c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 633c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * name; 634c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 635c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 636c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 637c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_remove_res { 638c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 639c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info cinfo; 640c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * dir_attr; 641c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 642c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 643c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_rename_arg { 644c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * old_dir; 645c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * new_dir; 646c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * old_name; 647c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr * new_name; 648c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 649c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 650c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 651c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_rename_res { 652c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server * server; 653c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info old_cinfo; 654c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * old_fattr; 655c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_change_info new_cinfo; 656c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr * new_fattr; 657c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 658c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 659c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_setclientid { 660c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const nfs4_verifier * sc_verifier; /* request */ 661c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int sc_name_len; 662c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char sc_name[48]; /* request */ 663c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 sc_prog; /* request */ 664c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int sc_netid_len; 665c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char sc_netid[4]; /* request */ 666c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int sc_uaddr_len; 667c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char sc_uaddr[24]; /* request */ 668c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 sc_cb_ident; /* request */ 669c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 670c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 671c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_statfs_arg { 672c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh * fh; 673c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 * bitmask; 674c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 675c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 676c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_server_caps_res { 677c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 attr_bitmask[2]; 678c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 acl_bitmask; 679c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 has_links; 680c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 has_symlinks; 681c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 682c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 683c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_string { 684c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int len; 685c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char *data; 686c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 687c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 688c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS4_PATHNAME_MAXCOMPONENTS 512 689c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_pathname { 690c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int ncomponents; 691c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_string components[NFS4_PATHNAME_MAXCOMPONENTS]; 692c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 693c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 694c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS4_FS_LOCATION_MAXSERVERS 10 695c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_fs_location { 696c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int nservers; 697c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_string servers[NFS4_FS_LOCATION_MAXSERVERS]; 698c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_pathname rootpath; 699c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 700c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 701c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS4_FS_LOCATIONS_MAXENTRIES 10 702c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_fs_locations { 703c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr fattr; 704c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_server *server; 705c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_pathname fs_path; 706c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int nlocations; 707c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs4_fs_location locations[NFS4_FS_LOCATIONS_MAXENTRIES]; 708c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 709c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 710c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs4_fs_locations_arg { 711c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct nfs_fh *dir_fh; 712c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const struct qstr *name; 713c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page *page; 714c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru const u32 *bitmask; 715c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 716c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 717c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* CONFIG_NFS_V4 */ 718c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 719c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_page; 720c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 721c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_PAGEVEC_SIZE (8U) 722c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 723c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_read_data { 724c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int flags; 725c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct rpc_task task; 726c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode *inode; 727c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct rpc_cred *cred; 728c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr fattr; /* fattr storage */ 729c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct list_head pages; /* Coalesced read requests */ 730c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_page *req; /* multi ops per nfs_page */ 731c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page **pagevec; 732c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int npages; /* Max length of pagevec */ 733c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_readargs args; 734c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_readres res; 735c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_NFS_V4 736c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned long timestamp; /* For lease renewal */ 737c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 738c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page *page_array[NFS_PAGEVEC_SIZE]; 739c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 740c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 741c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_write_data { 742c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int flags; 743c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct rpc_task task; 744c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode *inode; 745c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct rpc_cred *cred; 746c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr fattr; 747c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_writeverf verf; 748c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct list_head pages; /* Coalesced requests we wish to flush */ 749c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_page *req; /* multi ops per nfs_page */ 750c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page **pagevec; 751c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int npages; /* Max length of pagevec */ 752c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_writeargs args; /* argument struct */ 753c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_writeres res; /* result struct */ 754c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef CONFIG_NFS_V4 755c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned long timestamp; /* For lease renewal */ 756c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 757c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct page *page_array[NFS_PAGEVEC_SIZE]; 758c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 759c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 760c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_access_entry; 761c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 762c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 763c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * RPC procedure vector for NFSv2/NFSv3 demuxing 764c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 765c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct nfs_rpc_ops { 766c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int version; /* Protocol version */ 767c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct dentry_operations *dentry_ops; 768c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode_operations *dir_inode_ops; 769c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode_operations *file_inode_ops; 770c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 771c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*getroot) (struct nfs_server *, struct nfs_fh *, 772c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fsinfo *); 773c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*getattr) (struct nfs_server *, struct nfs_fh *, 774c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr *); 775c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*setattr) (struct dentry *, struct nfs_fattr *, 776c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr *); 777c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*lookup) (struct inode *, struct qstr *, 778c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fh *, struct nfs_fattr *); 779c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*access) (struct inode *, struct nfs_access_entry *); 780c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*readlink)(struct inode *, struct page *, unsigned int, 781c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int); 782c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*read) (struct nfs_read_data *); 783c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*write) (struct nfs_write_data *); 784c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*commit) (struct nfs_write_data *); 785c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*create) (struct inode *, struct dentry *, 786c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr *, int, struct nameidata *); 787c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*remove) (struct inode *, struct qstr *); 788c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*unlink_setup) (struct rpc_message *, 789c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct dentry *, struct qstr *); 790c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*unlink_done) (struct dentry *, struct rpc_task *); 791c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*rename) (struct inode *, struct qstr *, 792c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct inode *, struct qstr *); 793c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*link) (struct inode *, struct inode *, struct qstr *); 794c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*symlink) (struct inode *, struct qstr *, struct qstr *, 795c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct iattr *, struct nfs_fh *, 796c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fattr *); 797c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*mkdir) (struct inode *, struct dentry *, struct iattr *); 798c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*rmdir) (struct inode *, struct qstr *); 799c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*readdir) (struct dentry *, struct rpc_cred *, 800c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u64, struct page *, unsigned int, int); 801c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*mknod) (struct inode *, struct dentry *, struct iattr *, 802c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru dev_t); 803c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*statfs) (struct nfs_server *, struct nfs_fh *, 804c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fsstat *); 805c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*fsinfo) (struct nfs_server *, struct nfs_fh *, 806c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_fsinfo *); 807c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*pathconf) (struct nfs_server *, struct nfs_fh *, 808c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct nfs_pathconf *); 809c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 * (*decode_dirent)(u32 *, struct nfs_entry *, int plus); 810c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru void (*read_setup) (struct nfs_read_data *); 811c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*read_done) (struct rpc_task *, struct nfs_read_data *); 812c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru void (*write_setup) (struct nfs_write_data *, int how); 813c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*write_done) (struct rpc_task *, struct nfs_write_data *); 814c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru void (*commit_setup) (struct nfs_write_data *, int how); 815c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*commit_done) (struct rpc_task *, struct nfs_write_data *); 816c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*file_open) (struct inode *, struct file *); 817c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*file_release) (struct inode *, struct file *); 818c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int (*lock)(struct file *, int, struct file_lock *); 819c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru void (*clear_acl_cache)(struct inode *); 820c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 821c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 822c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 823c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * NFS_CALL(getattr, inode, (fattr)); 824c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * into 825c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * NFS_PROTO(inode)->getattr(fattr); 826c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 827c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NFS_CALL(op, inode, args) NFS_PROTO(inode)->op args 828c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 829c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 830c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Function vectors etc. for the NFS client 831c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 832c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct nfs_rpc_ops nfs_v2_clientops; 833c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct nfs_rpc_ops nfs_v3_clientops; 834c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct nfs_rpc_ops nfs_v4_clientops; 835c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct rpc_version nfs_version2; 836c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct rpc_version nfs_version3; 837c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct rpc_version nfs_version4; 838c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 839c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct rpc_version nfsacl_version3; 840c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern struct rpc_program nfsacl_program; 841c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 842c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 843