Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ****************************************************************************
     11  ****************************************************************************/
     12 #ifndef _LINUX_NFS_XDR_H
     13 #define _LINUX_NFS_XDR_H
     14 
     15 #include <linux/sunrpc/xprt.h>
     16 #include <linux/nfsacl.h>
     17 
     18 #define NFS_MAX_FILE_IO_SIZE (1048576U)
     19 #define NFS_DEF_FILE_IO_SIZE (4096U)
     20 #define NFS_MIN_FILE_IO_SIZE (1024U)
     21 
     22 struct nfs_fsid {
     23  uint64_t major;
     24  uint64_t minor;
     25 };
     26 
     27 #define NFS_ATTR_WCC 0x0001
     28 #define NFS_ATTR_FATTR 0x0002
     29 #define NFS_ATTR_FATTR_V3 0x0004
     30 #define NFS_ATTR_FATTR_V4 0x0008
     31 #define NFS_ATTR_FATTR_V4_REFERRAL 0x0010
     32 
     33 struct nfs_fsinfo {
     34  struct nfs_fattr *fattr;
     35  __u32 rtmax;
     36  __u32 rtpref;
     37  __u32 rtmult;
     38  __u32 wtmax;
     39  __u32 wtpref;
     40  __u32 wtmult;
     41  __u32 dtpref;
     42  __u64 maxfilesize;
     43  __u32 lease_time;
     44 };
     45 
     46 struct nfs_fsstat {
     47  struct nfs_fattr *fattr;
     48  __u64 tbytes;
     49  __u64 fbytes;
     50  __u64 abytes;
     51  __u64 tfiles;
     52  __u64 ffiles;
     53  __u64 afiles;
     54 };
     55 
     56 struct nfs2_fsstat {
     57  __u32 tsize;
     58  __u32 bsize;
     59  __u32 blocks;
     60  __u32 bfree;
     61  __u32 bavail;
     62 };
     63 
     64 struct nfs_pathconf {
     65  struct nfs_fattr *fattr;
     66  __u32 max_link;
     67  __u32 max_namelen;
     68 };
     69 
     70 struct nfs4_change_info {
     71  u32 atomic;
     72  u64 before;
     73  u64 after;
     74 };
     75 
     76 struct nfs_seqid;
     77 
     78 struct nfs_openargs {
     79  const struct nfs_fh * fh;
     80  struct nfs_seqid * seqid;
     81  int open_flags;
     82  __u64 clientid;
     83  __u32 id;
     84  union {
     85  struct iattr * attrs;
     86  nfs4_verifier verifier;
     87  nfs4_stateid delegation;
     88  int delegation_type;
     89  } u;
     90  const struct qstr * name;
     91  const struct nfs_server *server;
     92  const u32 * bitmask;
     93  __u32 claim;
     94 };
     95 
     96 struct nfs_openres {
     97  nfs4_stateid stateid;
     98  struct nfs_fh fh;
     99  struct nfs4_change_info cinfo;
    100  __u32 rflags;
    101  struct nfs_fattr * f_attr;
    102  struct nfs_fattr * dir_attr;
    103  const struct nfs_server *server;
    104  int delegation_type;
    105  nfs4_stateid delegation;
    106  __u32 do_recall;
    107  __u64 maxsize;
    108 };
    109 
    110 struct nfs_open_confirmargs {
    111  const struct nfs_fh * fh;
    112  nfs4_stateid * stateid;
    113  struct nfs_seqid * seqid;
    114 };
    115 
    116 struct nfs_open_confirmres {
    117  nfs4_stateid stateid;
    118 };
    119 
    120 struct nfs_closeargs {
    121  struct nfs_fh * fh;
    122  nfs4_stateid * stateid;
    123  struct nfs_seqid * seqid;
    124  int open_flags;
    125  const u32 * bitmask;
    126 };
    127 
    128 struct nfs_closeres {
    129  nfs4_stateid stateid;
    130  struct nfs_fattr * fattr;
    131  const struct nfs_server *server;
    132 };
    133 
    134 struct nfs_lowner {
    135  __u64 clientid;
    136  u32 id;
    137 };
    138 
    139 struct nfs_lock_args {
    140  struct nfs_fh * fh;
    141  struct file_lock * fl;
    142  struct nfs_seqid * lock_seqid;
    143  nfs4_stateid * lock_stateid;
    144  struct nfs_seqid * open_seqid;
    145  nfs4_stateid * open_stateid;
    146  struct nfs_lowner lock_owner;
    147  unsigned char block : 1;
    148  unsigned char reclaim : 1;
    149  unsigned char new_lock_owner : 1;
    150 };
    151 
    152 struct nfs_lock_res {
    153  nfs4_stateid stateid;
    154 };
    155 
    156 struct nfs_locku_args {
    157  struct nfs_fh * fh;
    158  struct file_lock * fl;
    159  struct nfs_seqid * seqid;
    160  nfs4_stateid * stateid;
    161 };
    162 
    163 struct nfs_locku_res {
    164  nfs4_stateid stateid;
    165 };
    166 
    167 struct nfs_lockt_args {
    168  struct nfs_fh * fh;
    169  struct file_lock * fl;
    170  struct nfs_lowner lock_owner;
    171 };
    172 
    173 struct nfs_lockt_res {
    174  struct file_lock * denied;
    175 };
    176 
    177 struct nfs4_delegreturnargs {
    178  const struct nfs_fh *fhandle;
    179  const nfs4_stateid *stateid;
    180  const u32 * bitmask;
    181 };
    182 
    183 struct nfs4_delegreturnres {
    184  struct nfs_fattr * fattr;
    185  const struct nfs_server *server;
    186 };
    187 
    188 struct nfs_readargs {
    189  struct nfs_fh * fh;
    190  struct nfs_open_context *context;
    191  __u64 offset;
    192  __u32 count;
    193  unsigned int pgbase;
    194  struct page ** pages;
    195 };
    196 
    197 struct nfs_readres {
    198  struct nfs_fattr * fattr;
    199  __u32 count;
    200  int eof;
    201 };
    202 
    203 struct nfs_writeargs {
    204  struct nfs_fh * fh;
    205  struct nfs_open_context *context;
    206  __u64 offset;
    207  __u32 count;
    208  enum nfs3_stable_how stable;
    209  unsigned int pgbase;
    210  struct page ** pages;
    211  const u32 * bitmask;
    212 };
    213 
    214 struct nfs_writeverf {
    215  enum nfs3_stable_how committed;
    216  __u32 verifier[2];
    217 };
    218 
    219 struct nfs_writeres {
    220  struct nfs_fattr * fattr;
    221  struct nfs_writeverf * verf;
    222  __u32 count;
    223  const struct nfs_server *server;
    224 };
    225 
    226 struct nfs_entry {
    227  __u64 ino;
    228  __u64 cookie,
    229  prev_cookie;
    230  const char * name;
    231  unsigned int len;
    232  int eof;
    233  struct nfs_fh * fh;
    234  struct nfs_fattr * fattr;
    235 };
    236 
    237 struct nfs_sattrargs {
    238  struct nfs_fh * fh;
    239  struct iattr * sattr;
    240 };
    241 
    242 struct nfs_diropargs {
    243  struct nfs_fh * fh;
    244  const char * name;
    245  unsigned int len;
    246 };
    247 
    248 struct nfs_createargs {
    249  struct nfs_fh * fh;
    250  const char * name;
    251  unsigned int len;
    252  struct iattr * sattr;
    253 };
    254 
    255 struct nfs_renameargs {
    256  struct nfs_fh * fromfh;
    257  const char * fromname;
    258  unsigned int fromlen;
    259  struct nfs_fh * tofh;
    260  const char * toname;
    261  unsigned int tolen;
    262 };
    263 
    264 struct nfs_setattrargs {
    265  struct nfs_fh * fh;
    266  nfs4_stateid stateid;
    267  struct iattr * iap;
    268  const struct nfs_server * server;
    269  const u32 * bitmask;
    270 };
    271 
    272 struct nfs_setaclargs {
    273  struct nfs_fh * fh;
    274  size_t acl_len;
    275  unsigned int acl_pgbase;
    276  struct page ** acl_pages;
    277 };
    278 
    279 struct nfs_getaclargs {
    280  struct nfs_fh * fh;
    281  size_t acl_len;
    282  unsigned int acl_pgbase;
    283  struct page ** acl_pages;
    284 };
    285 
    286 struct nfs_setattrres {
    287  struct nfs_fattr * fattr;
    288  const struct nfs_server * server;
    289 };
    290 
    291 struct nfs_linkargs {
    292  struct nfs_fh * fromfh;
    293  struct nfs_fh * tofh;
    294  const char * toname;
    295  unsigned int tolen;
    296 };
    297 
    298 struct nfs_symlinkargs {
    299  struct nfs_fh * fromfh;
    300  const char * fromname;
    301  unsigned int fromlen;
    302  const char * topath;
    303  unsigned int tolen;
    304  struct iattr * sattr;
    305 };
    306 
    307 struct nfs_readdirargs {
    308  struct nfs_fh * fh;
    309  __u32 cookie;
    310  unsigned int count;
    311  struct page ** pages;
    312 };
    313 
    314 struct nfs3_getaclargs {
    315  struct nfs_fh * fh;
    316  int mask;
    317  struct page ** pages;
    318 };
    319 
    320 struct nfs3_setaclargs {
    321  struct inode * inode;
    322  int mask;
    323  struct posix_acl * acl_access;
    324  struct posix_acl * acl_default;
    325  struct page ** pages;
    326 };
    327 
    328 struct nfs_diropok {
    329  struct nfs_fh * fh;
    330  struct nfs_fattr * fattr;
    331 };
    332 
    333 struct nfs_readlinkargs {
    334  struct nfs_fh * fh;
    335  unsigned int pgbase;
    336  unsigned int pglen;
    337  struct page ** pages;
    338 };
    339 
    340 struct nfs3_sattrargs {
    341  struct nfs_fh * fh;
    342  struct iattr * sattr;
    343  unsigned int guard;
    344  struct timespec guardtime;
    345 };
    346 
    347 struct nfs3_diropargs {
    348  struct nfs_fh * fh;
    349  const char * name;
    350  unsigned int len;
    351 };
    352 
    353 struct nfs3_accessargs {
    354  struct nfs_fh * fh;
    355  __u32 access;
    356 };
    357 
    358 struct nfs3_createargs {
    359  struct nfs_fh * fh;
    360  const char * name;
    361  unsigned int len;
    362  struct iattr * sattr;
    363  enum nfs3_createmode createmode;
    364  __u32 verifier[2];
    365 };
    366 
    367 struct nfs3_mkdirargs {
    368  struct nfs_fh * fh;
    369  const char * name;
    370  unsigned int len;
    371  struct iattr * sattr;
    372 };
    373 
    374 struct nfs3_symlinkargs {
    375  struct nfs_fh * fromfh;
    376  const char * fromname;
    377  unsigned int fromlen;
    378  const char * topath;
    379  unsigned int tolen;
    380  struct iattr * sattr;
    381 };
    382 
    383 struct nfs3_mknodargs {
    384  struct nfs_fh * fh;
    385  const char * name;
    386  unsigned int len;
    387  enum nfs3_ftype type;
    388  struct iattr * sattr;
    389  dev_t rdev;
    390 };
    391 
    392 struct nfs3_renameargs {
    393  struct nfs_fh * fromfh;
    394  const char * fromname;
    395  unsigned int fromlen;
    396  struct nfs_fh * tofh;
    397  const char * toname;
    398  unsigned int tolen;
    399 };
    400 
    401 struct nfs3_linkargs {
    402  struct nfs_fh * fromfh;
    403  struct nfs_fh * tofh;
    404  const char * toname;
    405  unsigned int tolen;
    406 };
    407 
    408 struct nfs3_readdirargs {
    409  struct nfs_fh * fh;
    410  __u64 cookie;
    411  __u32 verf[2];
    412  int plus;
    413  unsigned int count;
    414  struct page ** pages;
    415 };
    416 
    417 struct nfs3_diropres {
    418  struct nfs_fattr * dir_attr;
    419  struct nfs_fh * fh;
    420  struct nfs_fattr * fattr;
    421 };
    422 
    423 struct nfs3_accessres {
    424  struct nfs_fattr * fattr;
    425  __u32 access;
    426 };
    427 
    428 struct nfs3_readlinkargs {
    429  struct nfs_fh * fh;
    430  unsigned int pgbase;
    431  unsigned int pglen;
    432  struct page ** pages;
    433 };
    434 
    435 struct nfs3_renameres {
    436  struct nfs_fattr * fromattr;
    437  struct nfs_fattr * toattr;
    438 };
    439 
    440 struct nfs3_linkres {
    441  struct nfs_fattr * dir_attr;
    442  struct nfs_fattr * fattr;
    443 };
    444 
    445 struct nfs3_readdirres {
    446  struct nfs_fattr * dir_attr;
    447  __u32 * verf;
    448  int plus;
    449 };
    450 
    451 struct nfs3_getaclres {
    452  struct nfs_fattr * fattr;
    453  int mask;
    454  unsigned int acl_access_count;
    455  unsigned int acl_default_count;
    456  struct posix_acl * acl_access;
    457  struct posix_acl * acl_default;
    458 };
    459 
    460 struct nfs_page;
    461 
    462 #define NFS_PAGEVEC_SIZE (8U)
    463 
    464 struct nfs_read_data {
    465  int flags;
    466  struct rpc_task task;
    467  struct inode *inode;
    468  struct rpc_cred *cred;
    469  struct nfs_fattr fattr;
    470  struct list_head pages;
    471  struct nfs_page *req;
    472  struct page **pagevec;
    473  unsigned int npages;
    474  struct nfs_readargs args;
    475  struct nfs_readres res;
    476  struct page *page_array[NFS_PAGEVEC_SIZE];
    477 };
    478 
    479 struct nfs_write_data {
    480  int flags;
    481  struct rpc_task task;
    482  struct inode *inode;
    483  struct rpc_cred *cred;
    484  struct nfs_fattr fattr;
    485  struct nfs_writeverf verf;
    486  struct list_head pages;
    487  struct nfs_page *req;
    488  struct page **pagevec;
    489  unsigned int npages;
    490  struct nfs_writeargs args;
    491  struct nfs_writeres res;
    492  struct page *page_array[NFS_PAGEVEC_SIZE];
    493 };
    494 
    495 struct nfs_access_entry;
    496 
    497 struct nfs_rpc_ops {
    498  int version;
    499  struct dentry_operations *dentry_ops;
    500  struct inode_operations *dir_inode_ops;
    501  struct inode_operations *file_inode_ops;
    502 
    503  int (*getroot) (struct nfs_server *, struct nfs_fh *,
    504  struct nfs_fsinfo *);
    505  int (*getattr) (struct nfs_server *, struct nfs_fh *,
    506  struct nfs_fattr *);
    507  int (*setattr) (struct dentry *, struct nfs_fattr *,
    508  struct iattr *);
    509  int (*lookup) (struct inode *, struct qstr *,
    510  struct nfs_fh *, struct nfs_fattr *);
    511  int (*access) (struct inode *, struct nfs_access_entry *);
    512  int (*readlink)(struct inode *, struct page *, unsigned int,
    513  unsigned int);
    514  int (*read) (struct nfs_read_data *);
    515  int (*write) (struct nfs_write_data *);
    516  int (*commit) (struct nfs_write_data *);
    517  int (*create) (struct inode *, struct dentry *,
    518  struct iattr *, int, struct nameidata *);
    519  int (*remove) (struct inode *, struct qstr *);
    520  int (*unlink_setup) (struct rpc_message *,
    521  struct dentry *, struct qstr *);
    522  int (*unlink_done) (struct dentry *, struct rpc_task *);
    523  int (*rename) (struct inode *, struct qstr *,
    524  struct inode *, struct qstr *);
    525  int (*link) (struct inode *, struct inode *, struct qstr *);
    526  int (*symlink) (struct inode *, struct qstr *, struct qstr *,
    527  struct iattr *, struct nfs_fh *,
    528  struct nfs_fattr *);
    529  int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
    530  int (*rmdir) (struct inode *, struct qstr *);
    531  int (*readdir) (struct dentry *, struct rpc_cred *,
    532  u64, struct page *, unsigned int, int);
    533  int (*mknod) (struct inode *, struct dentry *, struct iattr *,
    534  dev_t);
    535  int (*statfs) (struct nfs_server *, struct nfs_fh *,
    536  struct nfs_fsstat *);
    537  int (*fsinfo) (struct nfs_server *, struct nfs_fh *,
    538  struct nfs_fsinfo *);
    539  int (*pathconf) (struct nfs_server *, struct nfs_fh *,
    540  struct nfs_pathconf *);
    541  u32 * (*decode_dirent)(u32 *, struct nfs_entry *, int plus);
    542  void (*read_setup) (struct nfs_read_data *);
    543  int (*read_done) (struct rpc_task *, struct nfs_read_data *);
    544  void (*write_setup) (struct nfs_write_data *, int how);
    545  int (*write_done) (struct rpc_task *, struct nfs_write_data *);
    546  void (*commit_setup) (struct nfs_write_data *, int how);
    547  int (*commit_done) (struct rpc_task *, struct nfs_write_data *);
    548  int (*file_open) (struct inode *, struct file *);
    549  int (*file_release) (struct inode *, struct file *);
    550  int (*lock)(struct file *, int, struct file_lock *);
    551  void (*clear_acl_cache)(struct inode *);
    552 };
    553 
    554 #define NFS_CALL(op, inode, args) NFS_PROTO(inode)->op args
    555 
    556 #endif
    557