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