/**************************************************************************** **************************************************************************** *** *** This header was automatically generated from a Linux kernel header *** of the same name, to make information necessary for userspace to *** call into the kernel available to libc. It contains only constants, *** structures, and macros generated from the original header, and thus, *** contains no copyrightable information. *** **************************************************************************** ****************************************************************************/ #ifndef _LINUX_NFS_XDR_H #define _LINUX_NFS_XDR_H #include <linux/sunrpc/xprt.h> #include <linux/nfsacl.h> #define NFS_MAX_FILE_IO_SIZE (1048576U) #define NFS_DEF_FILE_IO_SIZE (4096U) #define NFS_MIN_FILE_IO_SIZE (1024U) struct nfs_fsid { uint64_t major; uint64_t minor; }; #define NFS_ATTR_WCC 0x0001 #define NFS_ATTR_FATTR 0x0002 #define NFS_ATTR_FATTR_V3 0x0004 #define NFS_ATTR_FATTR_V4 0x0008 #define NFS_ATTR_FATTR_V4_REFERRAL 0x0010 struct nfs_fsinfo { struct nfs_fattr *fattr; __u32 rtmax; __u32 rtpref; __u32 rtmult; __u32 wtmax; __u32 wtpref; __u32 wtmult; __u32 dtpref; __u64 maxfilesize; __u32 lease_time; }; struct nfs_fsstat { struct nfs_fattr *fattr; __u64 tbytes; __u64 fbytes; __u64 abytes; __u64 tfiles; __u64 ffiles; __u64 afiles; }; struct nfs2_fsstat { __u32 tsize; __u32 bsize; __u32 blocks; __u32 bfree; __u32 bavail; }; struct nfs_pathconf { struct nfs_fattr *fattr; __u32 max_link; __u32 max_namelen; }; struct nfs4_change_info { u32 atomic; u64 before; u64 after; }; struct nfs_seqid; struct nfs_openargs { const struct nfs_fh * fh; struct nfs_seqid * seqid; int open_flags; __u64 clientid; __u32 id; union { struct iattr * attrs; nfs4_verifier verifier; nfs4_stateid delegation; int delegation_type; } u; const struct qstr * name; const struct nfs_server *server; const u32 * bitmask; __u32 claim; }; struct nfs_openres { nfs4_stateid stateid; struct nfs_fh fh; struct nfs4_change_info cinfo; __u32 rflags; struct nfs_fattr * f_attr; struct nfs_fattr * dir_attr; const struct nfs_server *server; int delegation_type; nfs4_stateid delegation; __u32 do_recall; __u64 maxsize; }; struct nfs_open_confirmargs { const struct nfs_fh * fh; nfs4_stateid * stateid; struct nfs_seqid * seqid; }; struct nfs_open_confirmres { nfs4_stateid stateid; }; struct nfs_closeargs { struct nfs_fh * fh; nfs4_stateid * stateid; struct nfs_seqid * seqid; int open_flags; const u32 * bitmask; }; struct nfs_closeres { nfs4_stateid stateid; struct nfs_fattr * fattr; const struct nfs_server *server; }; struct nfs_lowner { __u64 clientid; u32 id; }; struct nfs_lock_args { struct nfs_fh * fh; struct file_lock * fl; struct nfs_seqid * lock_seqid; nfs4_stateid * lock_stateid; struct nfs_seqid * open_seqid; nfs4_stateid * open_stateid; struct nfs_lowner lock_owner; unsigned char block : 1; unsigned char reclaim : 1; unsigned char new_lock_owner : 1; }; struct nfs_lock_res { nfs4_stateid stateid; }; struct nfs_locku_args { struct nfs_fh * fh; struct file_lock * fl; struct nfs_seqid * seqid; nfs4_stateid * stateid; }; struct nfs_locku_res { nfs4_stateid stateid; }; struct nfs_lockt_args { struct nfs_fh * fh; struct file_lock * fl; struct nfs_lowner lock_owner; }; struct nfs_lockt_res { struct file_lock * denied; }; struct nfs4_delegreturnargs { const struct nfs_fh *fhandle; const nfs4_stateid *stateid; const u32 * bitmask; }; struct nfs4_delegreturnres { struct nfs_fattr * fattr; const struct nfs_server *server; }; struct nfs_readargs { struct nfs_fh * fh; struct nfs_open_context *context; __u64 offset; __u32 count; unsigned int pgbase; struct page ** pages; }; struct nfs_readres { struct nfs_fattr * fattr; __u32 count; int eof; }; struct nfs_writeargs { struct nfs_fh * fh; struct nfs_open_context *context; __u64 offset; __u32 count; enum nfs3_stable_how stable; unsigned int pgbase; struct page ** pages; const u32 * bitmask; }; struct nfs_writeverf { enum nfs3_stable_how committed; __u32 verifier[2]; }; struct nfs_writeres { struct nfs_fattr * fattr; struct nfs_writeverf * verf; __u32 count; const struct nfs_server *server; }; struct nfs_entry { __u64 ino; __u64 cookie, prev_cookie; const char * name; unsigned int len; int eof; struct nfs_fh * fh; struct nfs_fattr * fattr; }; struct nfs_sattrargs { struct nfs_fh * fh; struct iattr * sattr; }; struct nfs_diropargs { struct nfs_fh * fh; const char * name; unsigned int len; }; struct nfs_createargs { struct nfs_fh * fh; const char * name; unsigned int len; struct iattr * sattr; }; struct nfs_renameargs { struct nfs_fh * fromfh; const char * fromname; unsigned int fromlen; struct nfs_fh * tofh; const char * toname; unsigned int tolen; }; struct nfs_setattrargs { struct nfs_fh * fh; nfs4_stateid stateid; struct iattr * iap; const struct nfs_server * server; const u32 * bitmask; }; struct nfs_setaclargs { struct nfs_fh * fh; size_t acl_len; unsigned int acl_pgbase; struct page ** acl_pages; }; struct nfs_getaclargs { struct nfs_fh * fh; size_t acl_len; unsigned int acl_pgbase; struct page ** acl_pages; }; struct nfs_setattrres { struct nfs_fattr * fattr; const struct nfs_server * server; }; struct nfs_linkargs { struct nfs_fh * fromfh; struct nfs_fh * tofh; const char * toname; unsigned int tolen; }; struct nfs_symlinkargs { struct nfs_fh * fromfh; const char * fromname; unsigned int fromlen; const char * topath; unsigned int tolen; struct iattr * sattr; }; struct nfs_readdirargs { struct nfs_fh * fh; __u32 cookie; unsigned int count; struct page ** pages; }; struct nfs3_getaclargs { struct nfs_fh * fh; int mask; struct page ** pages; }; struct nfs3_setaclargs { struct inode * inode; int mask; struct posix_acl * acl_access; struct posix_acl * acl_default; struct page ** pages; }; struct nfs_diropok { struct nfs_fh * fh; struct nfs_fattr * fattr; }; struct nfs_readlinkargs { struct nfs_fh * fh; unsigned int pgbase; unsigned int pglen; struct page ** pages; }; struct nfs3_sattrargs { struct nfs_fh * fh; struct iattr * sattr; unsigned int guard; struct timespec guardtime; }; struct nfs3_diropargs { struct nfs_fh * fh; const char * name; unsigned int len; }; struct nfs3_accessargs { struct nfs_fh * fh; __u32 access; }; struct nfs3_createargs { struct nfs_fh * fh; const char * name; unsigned int len; struct iattr * sattr; enum nfs3_createmode createmode; __u32 verifier[2]; }; struct nfs3_mkdirargs { struct nfs_fh * fh; const char * name; unsigned int len; struct iattr * sattr; }; struct nfs3_symlinkargs { struct nfs_fh * fromfh; const char * fromname; unsigned int fromlen; const char * topath; unsigned int tolen; struct iattr * sattr; }; struct nfs3_mknodargs { struct nfs_fh * fh; const char * name; unsigned int len; enum nfs3_ftype type; struct iattr * sattr; dev_t rdev; }; struct nfs3_renameargs { struct nfs_fh * fromfh; const char * fromname; unsigned int fromlen; struct nfs_fh * tofh; const char * toname; unsigned int tolen; }; struct nfs3_linkargs { struct nfs_fh * fromfh; struct nfs_fh * tofh; const char * toname; unsigned int tolen; }; struct nfs3_readdirargs { struct nfs_fh * fh; __u64 cookie; __u32 verf[2]; int plus; unsigned int count; struct page ** pages; }; struct nfs3_diropres { struct nfs_fattr * dir_attr; struct nfs_fh * fh; struct nfs_fattr * fattr; }; struct nfs3_accessres { struct nfs_fattr * fattr; __u32 access; }; struct nfs3_readlinkargs { struct nfs_fh * fh; unsigned int pgbase; unsigned int pglen; struct page ** pages; }; struct nfs3_renameres { struct nfs_fattr * fromattr; struct nfs_fattr * toattr; }; struct nfs3_linkres { struct nfs_fattr * dir_attr; struct nfs_fattr * fattr; }; struct nfs3_readdirres { struct nfs_fattr * dir_attr; __u32 * verf; int plus; }; struct nfs3_getaclres { struct nfs_fattr * fattr; int mask; unsigned int acl_access_count; unsigned int acl_default_count; struct posix_acl * acl_access; struct posix_acl * acl_default; }; struct nfs_page; #define NFS_PAGEVEC_SIZE (8U) struct nfs_read_data { int flags; struct rpc_task task; struct inode *inode; struct rpc_cred *cred; struct nfs_fattr fattr; struct list_head pages; struct nfs_page *req; struct page **pagevec; unsigned int npages; struct nfs_readargs args; struct nfs_readres res; struct page *page_array[NFS_PAGEVEC_SIZE]; }; struct nfs_write_data { int flags; struct rpc_task task; struct inode *inode; struct rpc_cred *cred; struct nfs_fattr fattr; struct nfs_writeverf verf; struct list_head pages; struct nfs_page *req; struct page **pagevec; unsigned int npages; struct nfs_writeargs args; struct nfs_writeres res; struct page *page_array[NFS_PAGEVEC_SIZE]; }; struct nfs_access_entry; struct nfs_rpc_ops { int version; struct dentry_operations *dentry_ops; struct inode_operations *dir_inode_ops; struct inode_operations *file_inode_ops; int (*getroot) (struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); int (*getattr) (struct nfs_server *, struct nfs_fh *, struct nfs_fattr *); int (*setattr) (struct dentry *, struct nfs_fattr *, struct iattr *); int (*lookup) (struct inode *, struct qstr *, struct nfs_fh *, struct nfs_fattr *); int (*access) (struct inode *, struct nfs_access_entry *); int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int); int (*read) (struct nfs_read_data *); int (*write) (struct nfs_write_data *); int (*commit) (struct nfs_write_data *); int (*create) (struct inode *, struct dentry *, struct iattr *, int, struct nameidata *); int (*remove) (struct inode *, struct qstr *); int (*unlink_setup) (struct rpc_message *, struct dentry *, struct qstr *); int (*unlink_done) (struct dentry *, struct rpc_task *); int (*rename) (struct inode *, struct qstr *, struct inode *, struct qstr *); int (*link) (struct inode *, struct inode *, struct qstr *); int (*symlink) (struct inode *, struct qstr *, struct qstr *, struct iattr *, struct nfs_fh *, struct nfs_fattr *); int (*mkdir) (struct inode *, struct dentry *, struct iattr *); int (*rmdir) (struct inode *, struct qstr *); int (*readdir) (struct dentry *, struct rpc_cred *, u64, struct page *, unsigned int, int); int (*mknod) (struct inode *, struct dentry *, struct iattr *, dev_t); int (*statfs) (struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *); int (*fsinfo) (struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); int (*pathconf) (struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *); u32 * (*decode_dirent)(u32 *, struct nfs_entry *, int plus); void (*read_setup) (struct nfs_read_data *); int (*read_done) (struct rpc_task *, struct nfs_read_data *); void (*write_setup) (struct nfs_write_data *, int how); int (*write_done) (struct rpc_task *, struct nfs_write_data *); void (*commit_setup) (struct nfs_write_data *, int how); int (*commit_done) (struct rpc_task *, struct nfs_write_data *); int (*file_open) (struct inode *, struct file *); int (*file_release) (struct inode *, struct file *); int (*lock)(struct file *, int, struct file_lock *); void (*clear_acl_cache)(struct inode *); }; #define NFS_CALL(op, inode, args) NFS_PROTO(inode)->op args #endif