Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

NFS: kill off complicated macro 'PROC'

kill off obscure macro 'PROC' of NFSv2&3 in order to make the code more clear.

Among other things, this makes it simpler to grep for callers of these
functions--something which has frequently caused confusion among nfs
developers.

Signed-off-by: Yu Zhiguo <yuzg@cn.fujitsu.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

authored by

Yu Zhiguo and committed by
J. Bruce Fields
b9081d90 59fb3066

+379 -56
+213 -24
fs/nfsd/nfs3proc.c
··· 652 652 * NFSv3 Server procedures. 653 653 * Only the results of non-idempotent operations are cached. 654 654 */ 655 - #define nfs3svc_decode_voidargs NULL 656 - #define nfs3svc_release_void NULL 657 655 #define nfs3svc_decode_fhandleargs nfs3svc_decode_fhandle 658 656 #define nfs3svc_encode_attrstatres nfs3svc_encode_attrstat 659 657 #define nfs3svc_encode_wccstatres nfs3svc_encode_wccstat ··· 684 686 #define WC (7+pAT) /* WCC attributes */ 685 687 686 688 static struct svc_procedure nfsd_procedures3[22] = { 687 - PROC(null, void, void, void, RC_NOCACHE, ST), 688 - PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE, ST+AT), 689 - PROC(setattr, sattr, wccstat, fhandle, RC_REPLBUFF, ST+WC), 690 - PROC(lookup, dirop, dirop, fhandle2, RC_NOCACHE, ST+FH+pAT+pAT), 691 - PROC(access, access, access, fhandle, RC_NOCACHE, ST+pAT+1), 692 - PROC(readlink, readlink, readlink, fhandle, RC_NOCACHE, ST+pAT+1+NFS3_MAXPATHLEN/4), 693 - PROC(read, read, read, fhandle, RC_NOCACHE, ST+pAT+4+NFSSVC_MAXBLKSIZE/4), 694 - PROC(write, write, write, fhandle, RC_REPLBUFF, ST+WC+4), 695 - PROC(create, create, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC), 696 - PROC(mkdir, mkdir, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC), 697 - PROC(symlink, symlink, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC), 698 - PROC(mknod, mknod, create, fhandle2, RC_REPLBUFF, ST+(1+FH+pAT)+WC), 699 - PROC(remove, dirop, wccstat, fhandle, RC_REPLBUFF, ST+WC), 700 - PROC(rmdir, dirop, wccstat, fhandle, RC_REPLBUFF, ST+WC), 701 - PROC(rename, rename, rename, fhandle2, RC_REPLBUFF, ST+WC+WC), 702 - PROC(link, link, link, fhandle2, RC_REPLBUFF, ST+pAT+WC), 703 - PROC(readdir, readdir, readdir, fhandle, RC_NOCACHE, 0), 704 - PROC(readdirplus,readdirplus, readdir, fhandle, RC_NOCACHE, 0), 705 - PROC(fsstat, fhandle, fsstat, void, RC_NOCACHE, ST+pAT+2*6+1), 706 - PROC(fsinfo, fhandle, fsinfo, void, RC_NOCACHE, ST+pAT+12), 707 - PROC(pathconf, fhandle, pathconf, void, RC_NOCACHE, ST+pAT+6), 708 - PROC(commit, commit, commit, fhandle, RC_NOCACHE, ST+WC+2), 689 + [NFS3PROC_NULL] = { 690 + .pc_func = (svc_procfunc) nfsd3_proc_null, 691 + .pc_encode = (kxdrproc_t) nfs3svc_encode_voidres, 692 + .pc_argsize = sizeof(struct nfsd3_voidargs), 693 + .pc_ressize = sizeof(struct nfsd3_voidres), 694 + .pc_cachetype = RC_NOCACHE, 695 + .pc_xdrressize = ST, 696 + }, 697 + [NFS3PROC_GETATTR] = { 698 + .pc_func = (svc_procfunc) nfsd3_proc_getattr, 699 + .pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs, 700 + .pc_encode = (kxdrproc_t) nfs3svc_encode_attrstatres, 701 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 702 + .pc_argsize = sizeof(struct nfsd3_fhandleargs), 703 + .pc_ressize = sizeof(struct nfsd3_attrstatres), 704 + .pc_cachetype = RC_NOCACHE, 705 + .pc_xdrressize = ST+AT, 706 + }, 707 + [NFS3PROC_SETATTR] = { 708 + .pc_func = (svc_procfunc) nfsd3_proc_setattr, 709 + .pc_decode = (kxdrproc_t) nfs3svc_decode_sattrargs, 710 + .pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres, 711 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 712 + .pc_argsize = sizeof(struct nfsd3_sattrargs), 713 + .pc_ressize = sizeof(struct nfsd3_wccstatres), 714 + .pc_cachetype = RC_REPLBUFF, 715 + .pc_xdrressize = ST+WC, 716 + }, 717 + [NFS3PROC_LOOKUP] = { 718 + .pc_func = (svc_procfunc) nfsd3_proc_lookup, 719 + .pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs, 720 + .pc_encode = (kxdrproc_t) nfs3svc_encode_diropres, 721 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 722 + .pc_argsize = sizeof(struct nfsd3_diropargs), 723 + .pc_ressize = sizeof(struct nfsd3_diropres), 724 + .pc_cachetype = RC_NOCACHE, 725 + .pc_xdrressize = ST+FH+pAT+pAT, 726 + }, 727 + [NFS3PROC_ACCESS] = { 728 + .pc_func = (svc_procfunc) nfsd3_proc_access, 729 + .pc_decode = (kxdrproc_t) nfs3svc_decode_accessargs, 730 + .pc_encode = (kxdrproc_t) nfs3svc_encode_accessres, 731 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 732 + .pc_argsize = sizeof(struct nfsd3_accessargs), 733 + .pc_ressize = sizeof(struct nfsd3_accessres), 734 + .pc_cachetype = RC_NOCACHE, 735 + .pc_xdrressize = ST+pAT+1, 736 + }, 737 + [NFS3PROC_READLINK] = { 738 + .pc_func = (svc_procfunc) nfsd3_proc_readlink, 739 + .pc_decode = (kxdrproc_t) nfs3svc_decode_readlinkargs, 740 + .pc_encode = (kxdrproc_t) nfs3svc_encode_readlinkres, 741 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 742 + .pc_argsize = sizeof(struct nfsd3_readlinkargs), 743 + .pc_ressize = sizeof(struct nfsd3_readlinkres), 744 + .pc_cachetype = RC_NOCACHE, 745 + .pc_xdrressize = ST+pAT+1+NFS3_MAXPATHLEN/4, 746 + }, 747 + [NFS3PROC_READ] = { 748 + .pc_func = (svc_procfunc) nfsd3_proc_read, 749 + .pc_decode = (kxdrproc_t) nfs3svc_decode_readargs, 750 + .pc_encode = (kxdrproc_t) nfs3svc_encode_readres, 751 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 752 + .pc_argsize = sizeof(struct nfsd3_readargs), 753 + .pc_ressize = sizeof(struct nfsd3_readres), 754 + .pc_cachetype = RC_NOCACHE, 755 + .pc_xdrressize = ST+pAT+4+NFSSVC_MAXBLKSIZE/4, 756 + }, 757 + [NFS3PROC_WRITE] = { 758 + .pc_func = (svc_procfunc) nfsd3_proc_write, 759 + .pc_decode = (kxdrproc_t) nfs3svc_decode_writeargs, 760 + .pc_encode = (kxdrproc_t) nfs3svc_encode_writeres, 761 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 762 + .pc_argsize = sizeof(struct nfsd3_writeargs), 763 + .pc_ressize = sizeof(struct nfsd3_writeres), 764 + .pc_cachetype = RC_REPLBUFF, 765 + .pc_xdrressize = ST+WC+4, 766 + }, 767 + [NFS3PROC_CREATE] = { 768 + .pc_func = (svc_procfunc) nfsd3_proc_create, 769 + .pc_decode = (kxdrproc_t) nfs3svc_decode_createargs, 770 + .pc_encode = (kxdrproc_t) nfs3svc_encode_createres, 771 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 772 + .pc_argsize = sizeof(struct nfsd3_createargs), 773 + .pc_ressize = sizeof(struct nfsd3_createres), 774 + .pc_cachetype = RC_REPLBUFF, 775 + .pc_xdrressize = ST+(1+FH+pAT)+WC, 776 + }, 777 + [NFS3PROC_MKDIR] = { 778 + .pc_func = (svc_procfunc) nfsd3_proc_mkdir, 779 + .pc_decode = (kxdrproc_t) nfs3svc_decode_mkdirargs, 780 + .pc_encode = (kxdrproc_t) nfs3svc_encode_createres, 781 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 782 + .pc_argsize = sizeof(struct nfsd3_mkdirargs), 783 + .pc_ressize = sizeof(struct nfsd3_createres), 784 + .pc_cachetype = RC_REPLBUFF, 785 + .pc_xdrressize = ST+(1+FH+pAT)+WC, 786 + }, 787 + [NFS3PROC_SYMLINK] = { 788 + .pc_func = (svc_procfunc) nfsd3_proc_symlink, 789 + .pc_decode = (kxdrproc_t) nfs3svc_decode_symlinkargs, 790 + .pc_encode = (kxdrproc_t) nfs3svc_encode_createres, 791 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 792 + .pc_argsize = sizeof(struct nfsd3_symlinkargs), 793 + .pc_ressize = sizeof(struct nfsd3_createres), 794 + .pc_cachetype = RC_REPLBUFF, 795 + .pc_xdrressize = ST+(1+FH+pAT)+WC, 796 + }, 797 + [NFS3PROC_MKNOD] = { 798 + .pc_func = (svc_procfunc) nfsd3_proc_mknod, 799 + .pc_decode = (kxdrproc_t) nfs3svc_decode_mknodargs, 800 + .pc_encode = (kxdrproc_t) nfs3svc_encode_createres, 801 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 802 + .pc_argsize = sizeof(struct nfsd3_mknodargs), 803 + .pc_ressize = sizeof(struct nfsd3_createres), 804 + .pc_cachetype = RC_REPLBUFF, 805 + .pc_xdrressize = ST+(1+FH+pAT)+WC, 806 + }, 807 + [NFS3PROC_REMOVE] = { 808 + .pc_func = (svc_procfunc) nfsd3_proc_remove, 809 + .pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs, 810 + .pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres, 811 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 812 + .pc_argsize = sizeof(struct nfsd3_diropargs), 813 + .pc_ressize = sizeof(struct nfsd3_wccstatres), 814 + .pc_cachetype = RC_REPLBUFF, 815 + .pc_xdrressize = ST+WC, 816 + }, 817 + [NFS3PROC_RMDIR] = { 818 + .pc_func = (svc_procfunc) nfsd3_proc_rmdir, 819 + .pc_decode = (kxdrproc_t) nfs3svc_decode_diropargs, 820 + .pc_encode = (kxdrproc_t) nfs3svc_encode_wccstatres, 821 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 822 + .pc_argsize = sizeof(struct nfsd3_diropargs), 823 + .pc_ressize = sizeof(struct nfsd3_wccstatres), 824 + .pc_cachetype = RC_REPLBUFF, 825 + .pc_xdrressize = ST+WC, 826 + }, 827 + [NFS3PROC_RENAME] = { 828 + .pc_func = (svc_procfunc) nfsd3_proc_rename, 829 + .pc_decode = (kxdrproc_t) nfs3svc_decode_renameargs, 830 + .pc_encode = (kxdrproc_t) nfs3svc_encode_renameres, 831 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 832 + .pc_argsize = sizeof(struct nfsd3_renameargs), 833 + .pc_ressize = sizeof(struct nfsd3_renameres), 834 + .pc_cachetype = RC_REPLBUFF, 835 + .pc_xdrressize = ST+WC+WC, 836 + }, 837 + [NFS3PROC_LINK] = { 838 + .pc_func = (svc_procfunc) nfsd3_proc_link, 839 + .pc_decode = (kxdrproc_t) nfs3svc_decode_linkargs, 840 + .pc_encode = (kxdrproc_t) nfs3svc_encode_linkres, 841 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle2, 842 + .pc_argsize = sizeof(struct nfsd3_linkargs), 843 + .pc_ressize = sizeof(struct nfsd3_linkres), 844 + .pc_cachetype = RC_REPLBUFF, 845 + .pc_xdrressize = ST+pAT+WC, 846 + }, 847 + [NFS3PROC_READDIR] = { 848 + .pc_func = (svc_procfunc) nfsd3_proc_readdir, 849 + .pc_decode = (kxdrproc_t) nfs3svc_decode_readdirargs, 850 + .pc_encode = (kxdrproc_t) nfs3svc_encode_readdirres, 851 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 852 + .pc_argsize = sizeof(struct nfsd3_readdirargs), 853 + .pc_ressize = sizeof(struct nfsd3_readdirres), 854 + .pc_cachetype = RC_NOCACHE, 855 + }, 856 + [NFS3PROC_READDIRPLUS] = { 857 + .pc_func = (svc_procfunc) nfsd3_proc_readdirplus, 858 + .pc_decode = (kxdrproc_t) nfs3svc_decode_readdirplusargs, 859 + .pc_encode = (kxdrproc_t) nfs3svc_encode_readdirres, 860 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 861 + .pc_argsize = sizeof(struct nfsd3_readdirplusargs), 862 + .pc_ressize = sizeof(struct nfsd3_readdirres), 863 + .pc_cachetype = RC_NOCACHE, 864 + }, 865 + [NFS3PROC_FSSTAT] = { 866 + .pc_func = (svc_procfunc) nfsd3_proc_fsstat, 867 + .pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs, 868 + .pc_encode = (kxdrproc_t) nfs3svc_encode_fsstatres, 869 + .pc_argsize = sizeof(struct nfsd3_fhandleargs), 870 + .pc_ressize = sizeof(struct nfsd3_fsstatres), 871 + .pc_cachetype = RC_NOCACHE, 872 + .pc_xdrressize = ST+pAT+2*6+1, 873 + }, 874 + [NFS3PROC_FSINFO] = { 875 + .pc_func = (svc_procfunc) nfsd3_proc_fsinfo, 876 + .pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs, 877 + .pc_encode = (kxdrproc_t) nfs3svc_encode_fsinfores, 878 + .pc_argsize = sizeof(struct nfsd3_fhandleargs), 879 + .pc_ressize = sizeof(struct nfsd3_fsinfores), 880 + .pc_cachetype = RC_NOCACHE, 881 + .pc_xdrressize = ST+pAT+12, 882 + }, 883 + [NFS3PROC_PATHCONF] = { 884 + .pc_func = (svc_procfunc) nfsd3_proc_pathconf, 885 + .pc_decode = (kxdrproc_t) nfs3svc_decode_fhandleargs, 886 + .pc_encode = (kxdrproc_t) nfs3svc_encode_pathconfres, 887 + .pc_argsize = sizeof(struct nfsd3_fhandleargs), 888 + .pc_ressize = sizeof(struct nfsd3_pathconfres), 889 + .pc_cachetype = RC_NOCACHE, 890 + .pc_xdrressize = ST+pAT+6, 891 + }, 892 + [NFS3PROC_COMMIT] = { 893 + .pc_func = (svc_procfunc) nfsd3_proc_commit, 894 + .pc_decode = (kxdrproc_t) nfs3svc_decode_commitargs, 895 + .pc_encode = (kxdrproc_t) nfs3svc_encode_commitres, 896 + .pc_release = (kxdrproc_t) nfs3svc_release_fhandle, 897 + .pc_argsize = sizeof(struct nfsd3_commitargs), 898 + .pc_ressize = sizeof(struct nfsd3_commitres), 899 + .pc_cachetype = RC_NOCACHE, 900 + .pc_xdrressize = ST+WC+2, 901 + }, 709 902 }; 710 903 711 904 struct svc_version nfsd_version3 = {
+166 -32
fs/nfsd/nfsproc.c
··· 533 533 * NFSv2 Server procedures. 534 534 * Only the results of non-idempotent operations are cached. 535 535 */ 536 - #define nfsd_proc_none NULL 537 - #define nfssvc_release_none NULL 538 536 struct nfsd_void { int dummy; }; 539 - 540 - #define PROC(name, argt, rest, relt, cache, respsize) \ 541 - { (svc_procfunc) nfsd_proc_##name, \ 542 - (kxdrproc_t) nfssvc_decode_##argt, \ 543 - (kxdrproc_t) nfssvc_encode_##rest, \ 544 - (kxdrproc_t) nfssvc_release_##relt, \ 545 - sizeof(struct nfsd_##argt), \ 546 - sizeof(struct nfsd_##rest), \ 547 - 0, \ 548 - cache, \ 549 - respsize, \ 550 - } 551 537 552 538 #define ST 1 /* status */ 553 539 #define FH 8 /* filehandle */ 554 540 #define AT 18 /* attributes */ 555 541 556 542 static struct svc_procedure nfsd_procedures2[18] = { 557 - PROC(null, void, void, none, RC_NOCACHE, ST), 558 - PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE, ST+AT), 559 - PROC(setattr, sattrargs, attrstat, fhandle, RC_REPLBUFF, ST+AT), 560 - PROC(none, void, void, none, RC_NOCACHE, ST), 561 - PROC(lookup, diropargs, diropres, fhandle, RC_NOCACHE, ST+FH+AT), 562 - PROC(readlink, readlinkargs, readlinkres, none, RC_NOCACHE, ST+1+NFS_MAXPATHLEN/4), 563 - PROC(read, readargs, readres, fhandle, RC_NOCACHE, ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4), 564 - PROC(none, void, void, none, RC_NOCACHE, ST), 565 - PROC(write, writeargs, attrstat, fhandle, RC_REPLBUFF, ST+AT), 566 - PROC(create, createargs, diropres, fhandle, RC_REPLBUFF, ST+FH+AT), 567 - PROC(remove, diropargs, void, none, RC_REPLSTAT, ST), 568 - PROC(rename, renameargs, void, none, RC_REPLSTAT, ST), 569 - PROC(link, linkargs, void, none, RC_REPLSTAT, ST), 570 - PROC(symlink, symlinkargs, void, none, RC_REPLSTAT, ST), 571 - PROC(mkdir, createargs, diropres, fhandle, RC_REPLBUFF, ST+FH+AT), 572 - PROC(rmdir, diropargs, void, none, RC_REPLSTAT, ST), 573 - PROC(readdir, readdirargs, readdirres, none, RC_NOCACHE, 0), 574 - PROC(statfs, fhandle, statfsres, none, RC_NOCACHE, ST+5), 543 + [NFSPROC_NULL] = { 544 + .pc_func = (svc_procfunc) nfsd_proc_null, 545 + .pc_decode = (kxdrproc_t) nfssvc_decode_void, 546 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 547 + .pc_argsize = sizeof(struct nfsd_void), 548 + .pc_ressize = sizeof(struct nfsd_void), 549 + .pc_cachetype = RC_NOCACHE, 550 + .pc_xdrressize = ST, 551 + }, 552 + [NFSPROC_GETATTR] = { 553 + .pc_func = (svc_procfunc) nfsd_proc_getattr, 554 + .pc_decode = (kxdrproc_t) nfssvc_decode_fhandle, 555 + .pc_encode = (kxdrproc_t) nfssvc_encode_attrstat, 556 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 557 + .pc_argsize = sizeof(struct nfsd_fhandle), 558 + .pc_ressize = sizeof(struct nfsd_attrstat), 559 + .pc_cachetype = RC_NOCACHE, 560 + .pc_xdrressize = ST+AT, 561 + }, 562 + [NFSPROC_SETATTR] = { 563 + .pc_func = (svc_procfunc) nfsd_proc_setattr, 564 + .pc_decode = (kxdrproc_t) nfssvc_decode_sattrargs, 565 + .pc_encode = (kxdrproc_t) nfssvc_encode_attrstat, 566 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 567 + .pc_argsize = sizeof(struct nfsd_sattrargs), 568 + .pc_ressize = sizeof(struct nfsd_attrstat), 569 + .pc_cachetype = RC_REPLBUFF, 570 + .pc_xdrressize = ST+AT, 571 + }, 572 + [NFSPROC_ROOT] = { 573 + .pc_decode = (kxdrproc_t) nfssvc_decode_void, 574 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 575 + .pc_argsize = sizeof(struct nfsd_void), 576 + .pc_ressize = sizeof(struct nfsd_void), 577 + .pc_cachetype = RC_NOCACHE, 578 + .pc_xdrressize = ST, 579 + }, 580 + [NFSPROC_LOOKUP] = { 581 + .pc_func = (svc_procfunc) nfsd_proc_lookup, 582 + .pc_decode = (kxdrproc_t) nfssvc_decode_diropargs, 583 + .pc_encode = (kxdrproc_t) nfssvc_encode_diropres, 584 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 585 + .pc_argsize = sizeof(struct nfsd_diropargs), 586 + .pc_ressize = sizeof(struct nfsd_diropres), 587 + .pc_cachetype = RC_NOCACHE, 588 + .pc_xdrressize = ST+FH+AT, 589 + }, 590 + [NFSPROC_READLINK] = { 591 + .pc_func = (svc_procfunc) nfsd_proc_readlink, 592 + .pc_decode = (kxdrproc_t) nfssvc_decode_readlinkargs, 593 + .pc_encode = (kxdrproc_t) nfssvc_encode_readlinkres, 594 + .pc_argsize = sizeof(struct nfsd_readlinkargs), 595 + .pc_ressize = sizeof(struct nfsd_readlinkres), 596 + .pc_cachetype = RC_NOCACHE, 597 + .pc_xdrressize = ST+1+NFS_MAXPATHLEN/4, 598 + }, 599 + [NFSPROC_READ] = { 600 + .pc_func = (svc_procfunc) nfsd_proc_read, 601 + .pc_decode = (kxdrproc_t) nfssvc_decode_readargs, 602 + .pc_encode = (kxdrproc_t) nfssvc_encode_readres, 603 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 604 + .pc_argsize = sizeof(struct nfsd_readargs), 605 + .pc_ressize = sizeof(struct nfsd_readres), 606 + .pc_cachetype = RC_NOCACHE, 607 + .pc_xdrressize = ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4, 608 + }, 609 + [NFSPROC_WRITECACHE] = { 610 + .pc_decode = (kxdrproc_t) nfssvc_decode_void, 611 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 612 + .pc_argsize = sizeof(struct nfsd_void), 613 + .pc_ressize = sizeof(struct nfsd_void), 614 + .pc_cachetype = RC_NOCACHE, 615 + .pc_xdrressize = ST, 616 + }, 617 + [NFSPROC_WRITE] = { 618 + .pc_func = (svc_procfunc) nfsd_proc_write, 619 + .pc_decode = (kxdrproc_t) nfssvc_decode_writeargs, 620 + .pc_encode = (kxdrproc_t) nfssvc_encode_attrstat, 621 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 622 + .pc_argsize = sizeof(struct nfsd_writeargs), 623 + .pc_ressize = sizeof(struct nfsd_attrstat), 624 + .pc_cachetype = RC_REPLBUFF, 625 + .pc_xdrressize = ST+AT, 626 + }, 627 + [NFSPROC_CREATE] = { 628 + .pc_func = (svc_procfunc) nfsd_proc_create, 629 + .pc_decode = (kxdrproc_t) nfssvc_decode_createargs, 630 + .pc_encode = (kxdrproc_t) nfssvc_encode_diropres, 631 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 632 + .pc_argsize = sizeof(struct nfsd_createargs), 633 + .pc_ressize = sizeof(struct nfsd_diropres), 634 + .pc_cachetype = RC_REPLBUFF, 635 + .pc_xdrressize = ST+FH+AT, 636 + }, 637 + [NFSPROC_REMOVE] = { 638 + .pc_func = (svc_procfunc) nfsd_proc_remove, 639 + .pc_decode = (kxdrproc_t) nfssvc_decode_diropargs, 640 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 641 + .pc_argsize = sizeof(struct nfsd_diropargs), 642 + .pc_ressize = sizeof(struct nfsd_void), 643 + .pc_cachetype = RC_REPLSTAT, 644 + .pc_xdrressize = ST, 645 + }, 646 + [NFSPROC_RENAME] = { 647 + .pc_func = (svc_procfunc) nfsd_proc_rename, 648 + .pc_decode = (kxdrproc_t) nfssvc_decode_renameargs, 649 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 650 + .pc_argsize = sizeof(struct nfsd_renameargs), 651 + .pc_ressize = sizeof(struct nfsd_void), 652 + .pc_cachetype = RC_REPLSTAT, 653 + .pc_xdrressize = ST, 654 + }, 655 + [NFSPROC_LINK] = { 656 + .pc_func = (svc_procfunc) nfsd_proc_link, 657 + .pc_decode = (kxdrproc_t) nfssvc_decode_linkargs, 658 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 659 + .pc_argsize = sizeof(struct nfsd_linkargs), 660 + .pc_ressize = sizeof(struct nfsd_void), 661 + .pc_cachetype = RC_REPLSTAT, 662 + .pc_xdrressize = ST, 663 + }, 664 + [NFSPROC_SYMLINK] = { 665 + .pc_func = (svc_procfunc) nfsd_proc_symlink, 666 + .pc_decode = (kxdrproc_t) nfssvc_decode_symlinkargs, 667 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 668 + .pc_argsize = sizeof(struct nfsd_symlinkargs), 669 + .pc_ressize = sizeof(struct nfsd_void), 670 + .pc_cachetype = RC_REPLSTAT, 671 + .pc_xdrressize = ST, 672 + }, 673 + [NFSPROC_MKDIR] = { 674 + .pc_func = (svc_procfunc) nfsd_proc_mkdir, 675 + .pc_decode = (kxdrproc_t) nfssvc_decode_createargs, 676 + .pc_encode = (kxdrproc_t) nfssvc_encode_diropres, 677 + .pc_release = (kxdrproc_t) nfssvc_release_fhandle, 678 + .pc_argsize = sizeof(struct nfsd_createargs), 679 + .pc_ressize = sizeof(struct nfsd_diropres), 680 + .pc_cachetype = RC_REPLBUFF, 681 + .pc_xdrressize = ST+FH+AT, 682 + }, 683 + [NFSPROC_RMDIR] = { 684 + .pc_func = (svc_procfunc) nfsd_proc_rmdir, 685 + .pc_decode = (kxdrproc_t) nfssvc_decode_diropargs, 686 + .pc_encode = (kxdrproc_t) nfssvc_encode_void, 687 + .pc_argsize = sizeof(struct nfsd_diropargs), 688 + .pc_ressize = sizeof(struct nfsd_void), 689 + .pc_cachetype = RC_REPLSTAT, 690 + .pc_xdrressize = ST, 691 + }, 692 + [NFSPROC_READDIR] = { 693 + .pc_func = (svc_procfunc) nfsd_proc_readdir, 694 + .pc_decode = (kxdrproc_t) nfssvc_decode_readdirargs, 695 + .pc_encode = (kxdrproc_t) nfssvc_encode_readdirres, 696 + .pc_argsize = sizeof(struct nfsd_readdirargs), 697 + .pc_ressize = sizeof(struct nfsd_readdirres), 698 + .pc_cachetype = RC_NOCACHE, 699 + }, 700 + [NFSPROC_STATFS] = { 701 + .pc_func = (svc_procfunc) nfsd_proc_statfs, 702 + .pc_decode = (kxdrproc_t) nfssvc_decode_fhandle, 703 + .pc_encode = (kxdrproc_t) nfssvc_encode_statfsres, 704 + .pc_argsize = sizeof(struct nfsd_fhandle), 705 + .pc_ressize = sizeof(struct nfsd_statfsres), 706 + .pc_cachetype = RC_NOCACHE, 707 + .pc_xdrressize = ST+5, 708 + }, 575 709 }; 576 710 577 711