| /**************************************************************************** |
| **************************************************************************** |
| *** |
| *** 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 |