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 16 struct nfs_fsid { 17 uint64_t major; 18 uint64_t minor; 19 }; 20 21 /* 22 * Helper for checking equality between 2 fsids. 23 */ 24 static 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 29 struct 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 */ 71 struct 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 84 struct 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 94 struct 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 102 struct 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 108 struct nfs4_change_info { 109 u32 atomic; 110 u64 before; 111 u64 after; 112 }; 113 114 struct nfs_seqid; 115 /* 116 * Arguments to the open call. 117 */ 118 struct 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 136 struct 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 */ 154 struct nfs_open_confirmargs { 155 const struct nfs_fh * fh; 156 nfs4_stateid * stateid; 157 struct nfs_seqid * seqid; 158 }; 159 160 struct nfs_open_confirmres { 161 nfs4_stateid stateid; 162 }; 163 164 /* 165 * Arguments to the close call. 166 */ 167 struct 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 175 struct 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 * */ 183 struct nfs_lowner { 184 __u64 clientid; 185 __u64 id; 186 }; 187 188 struct 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 201 struct nfs_lock_res { 202 nfs4_stateid stateid; 203 }; 204 205 struct nfs_locku_args { 206 struct nfs_fh * fh; 207 struct file_lock * fl; 208 struct nfs_seqid * seqid; 209 nfs4_stateid * stateid; 210 }; 211 212 struct nfs_locku_res { 213 nfs4_stateid stateid; 214 }; 215 216 struct nfs_lockt_args { 217 struct nfs_fh * fh; 218 struct file_lock * fl; 219 struct nfs_lowner lock_owner; 220 }; 221 222 struct nfs_lockt_res { 223 struct file_lock * denied; /* LOCK, LOCKT failed */ 224 }; 225 226 struct nfs4_delegreturnargs { 227 const struct nfs_fh *fhandle; 228 const nfs4_stateid *stateid; 229 const u32 * bitmask; 230 }; 231 232 struct nfs4_delegreturnres { 233 struct nfs_fattr * fattr; 234 const struct nfs_server *server; 235 }; 236 237 /* 238 * Arguments to the read call. 239 */ 240 struct 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 249 struct nfs_readres { 250 struct nfs_fattr * fattr; 251 __u32 count; 252 int eof; 253 }; 254 255 /* 256 * Arguments to the write call. 257 */ 258 struct 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 269 struct nfs_writeverf { 270 enum nfs3_stable_how committed; 271 __be32 verifier[2]; 272 }; 273 274 struct 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 */ 284 struct nfs_removeargs { 285 const struct nfs_fh *fh; 286 struct qstr name; 287 const u32 * bitmask; 288 }; 289 290 struct 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 */ 299 struct 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 */ 313 struct nfs_sattrargs { 314 struct nfs_fh * fh; 315 struct iattr * sattr; 316 }; 317 318 struct nfs_diropargs { 319 struct nfs_fh * fh; 320 const char * name; 321 unsigned int len; 322 }; 323 324 struct nfs_createargs { 325 struct nfs_fh * fh; 326 const char * name; 327 unsigned int len; 328 struct iattr * sattr; 329 }; 330 331 struct 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 340 struct 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 348 struct nfs_setaclargs { 349 struct nfs_fh * fh; 350 size_t acl_len; 351 unsigned int acl_pgbase; 352 struct page ** acl_pages; 353 }; 354 355 struct nfs_getaclargs { 356 struct nfs_fh * fh; 357 size_t acl_len; 358 unsigned int acl_pgbase; 359 struct page ** acl_pages; 360 }; 361 362 struct nfs_setattrres { 363 struct nfs_fattr * fattr; 364 const struct nfs_server * server; 365 }; 366 367 struct nfs_linkargs { 368 struct nfs_fh * fromfh; 369 struct nfs_fh * tofh; 370 const char * toname; 371 unsigned int tolen; 372 }; 373 374 struct 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 383 struct nfs_readdirargs { 384 struct nfs_fh * fh; 385 __u32 cookie; 386 unsigned int count; 387 struct page ** pages; 388 }; 389 390 struct nfs3_getaclargs { 391 struct nfs_fh * fh; 392 int mask; 393 struct page ** pages; 394 }; 395 396 struct 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 404 struct nfs_diropok { 405 struct nfs_fh * fh; 406 struct nfs_fattr * fattr; 407 }; 408 409 struct nfs_readlinkargs { 410 struct nfs_fh * fh; 411 unsigned int pgbase; 412 unsigned int pglen; 413 struct page ** pages; 414 }; 415 416 struct nfs3_sattrargs { 417 struct nfs_fh * fh; 418 struct iattr * sattr; 419 unsigned int guard; 420 struct timespec guardtime; 421 }; 422 423 struct nfs3_diropargs { 424 struct nfs_fh * fh; 425 const char * name; 426 unsigned int len; 427 }; 428 429 struct nfs3_accessargs { 430 struct nfs_fh * fh; 431 __u32 access; 432 }; 433 434 struct 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 443 struct nfs3_mkdirargs { 444 struct nfs_fh * fh; 445 const char * name; 446 unsigned int len; 447 struct iattr * sattr; 448 }; 449 450 struct 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 459 struct 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 468 struct 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 477 struct nfs3_linkargs { 478 struct nfs_fh * fromfh; 479 struct nfs_fh * tofh; 480 const char * toname; 481 unsigned int tolen; 482 }; 483 484 struct 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 493 struct nfs3_diropres { 494 struct nfs_fattr * dir_attr; 495 struct nfs_fh * fh; 496 struct nfs_fattr * fattr; 497 }; 498 499 struct nfs3_accessres { 500 struct nfs_fattr * fattr; 501 __u32 access; 502 }; 503 504 struct nfs3_readlinkargs { 505 struct nfs_fh * fh; 506 unsigned int pgbase; 507 unsigned int pglen; 508 struct page ** pages; 509 }; 510 511 struct nfs3_renameres { 512 struct nfs_fattr * fromattr; 513 struct nfs_fattr * toattr; 514 }; 515 516 struct nfs3_linkres { 517 struct nfs_fattr * dir_attr; 518 struct nfs_fattr * fattr; 519 }; 520 521 struct nfs3_readdirres { 522 struct nfs_fattr * dir_attr; 523 __be32 * verf; 524 int plus; 525 }; 526 527 struct 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 538 typedef u64 clientid4; 539 540 struct nfs4_accessargs { 541 const struct nfs_fh * fh; 542 const u32 * bitmask; 543 u32 access; 544 }; 545 546 struct nfs4_accessres { 547 const struct nfs_server * server; 548 struct nfs_fattr * fattr; 549 u32 supported; 550 u32 access; 551 }; 552 553 struct 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 572 struct 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 580 struct nfs4_fsinfo_arg { 581 const struct nfs_fh * fh; 582 const u32 * bitmask; 583 }; 584 585 struct nfs4_getattr_arg { 586 const struct nfs_fh * fh; 587 const u32 * bitmask; 588 }; 589 590 struct nfs4_getattr_res { 591 const struct nfs_server * server; 592 struct nfs_fattr * fattr; 593 }; 594 595 struct 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 602 struct 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 610 struct nfs4_lookup_arg { 611 const struct nfs_fh * dir_fh; 612 const struct qstr * name; 613 const u32 * bitmask; 614 }; 615 616 struct nfs4_lookup_res { 617 const struct nfs_server * server; 618 struct nfs_fattr * fattr; 619 struct nfs_fh * fh; 620 }; 621 622 struct nfs4_lookup_root_arg { 623 const u32 * bitmask; 624 }; 625 626 struct nfs4_pathconf_arg { 627 const struct nfs_fh * fh; 628 const u32 * bitmask; 629 }; 630 631 struct 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 641 struct nfs4_readdir_res { 642 nfs4_verifier verifier; 643 unsigned int pgbase; 644 }; 645 646 struct 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 653 struct 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 661 struct 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) 670 struct 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 682 struct nfs4_statfs_arg { 683 const struct nfs_fh * fh; 684 const u32 * bitmask; 685 }; 686 687 struct nfs4_server_caps_res { 688 u32 attr_bitmask[2]; 689 u32 acl_bitmask; 690 u32 has_links; 691 u32 has_symlinks; 692 }; 693 694 struct nfs4_string { 695 unsigned int len; 696 char *data; 697 }; 698 699 #define NFS4_PATHNAME_MAXCOMPONENTS 512 700 struct nfs4_pathname { 701 unsigned int ncomponents; 702 struct nfs4_string components[NFS4_PATHNAME_MAXCOMPONENTS]; 703 }; 704 705 #define NFS4_FS_LOCATION_MAXSERVERS 10 706 struct 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 713 struct 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 721 struct 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 730 struct nfs_page; 731 732 #define NFS_PAGEVEC_SIZE (8U) 733 734 struct 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 752 struct 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 771 struct nfs_access_entry; 772 773 /* 774 * RPC procedure vector for NFSv2/NFSv3 demuxing 775 */ 776 struct 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 */ 842 extern const struct nfs_rpc_ops nfs_v2_clientops; 843 extern const struct nfs_rpc_ops nfs_v3_clientops; 844 extern const struct nfs_rpc_ops nfs_v4_clientops; 845 extern struct rpc_version nfs_version2; 846 extern struct rpc_version nfs_version3; 847 extern struct rpc_version nfs_version4; 848 849 extern struct rpc_version nfsacl_version3; 850 extern struct rpc_program nfsacl_program; 851 852 #endif 853