diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2010-12-14 09:56:10 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2010-12-16 12:37:22 -0500 |
commit | 499ff710b2fd3a03c8195c82340e5166eed04205 (patch) | |
tree | e564eb74bc123ab536911c4a768e0c25813efd43 | |
parent | ad96b5b5eae59696b97e207d730b8c8cfb9d4e42 (diff) |
NFS: Remove unused old NFSv3 encoder functions
Clean up. Remove unused legacy argument encoder functions, and any
now unused encoder helper functions.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Tested-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/nfs/nfs3xdr.c | 328 |
1 files changed, 4 insertions, 324 deletions
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c index bbda89042053..b0af263e4db9 100644 --- a/fs/nfs/nfs3xdr.c +++ b/fs/nfs/nfs3xdr.c | |||
@@ -131,12 +131,6 @@ static void prepare_reply_buffer(struct rpc_rqst *req, struct page **pages, | |||
131 | * Common NFS XDR functions as inlines | 131 | * Common NFS XDR functions as inlines |
132 | */ | 132 | */ |
133 | static inline __be32 * | 133 | static inline __be32 * |
134 | xdr_encode_fhandle(__be32 *p, const struct nfs_fh *fh) | ||
135 | { | ||
136 | return xdr_encode_array(p, fh->data, fh->size); | ||
137 | } | ||
138 | |||
139 | static inline __be32 * | ||
140 | xdr_decode_fhandle(__be32 *p, struct nfs_fh *fh) | 134 | xdr_decode_fhandle(__be32 *p, struct nfs_fh *fh) |
141 | { | 135 | { |
142 | if ((fh->size = ntohl(*p++)) <= NFS3_FHSIZE) { | 136 | if ((fh->size = ntohl(*p++)) <= NFS3_FHSIZE) { |
@@ -564,21 +558,13 @@ static void encode_diropargs3(struct xdr_stream *xdr, const struct nfs_fh *fh, | |||
564 | 558 | ||
565 | 559 | ||
566 | /* | 560 | /* |
567 | * NFS encode functions | 561 | * NFSv3 XDR encode functions |
562 | * | ||
563 | * NFSv3 argument types are defined in section 3.3 of RFC 1813: | ||
564 | * "NFS Version 3 Protocol Specification". | ||
568 | */ | 565 | */ |
569 | 566 | ||
570 | /* | 567 | /* |
571 | * Encode file handle argument | ||
572 | */ | ||
573 | static int | ||
574 | nfs3_xdr_fhandle(struct rpc_rqst *req, __be32 *p, struct nfs_fh *fh) | ||
575 | { | ||
576 | p = xdr_encode_fhandle(p, fh); | ||
577 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
578 | return 0; | ||
579 | } | ||
580 | |||
581 | /* | ||
582 | * 3.3.1 GETATTR3args | 568 | * 3.3.1 GETATTR3args |
583 | * | 569 | * |
584 | * struct GETATTR3args { | 570 | * struct GETATTR3args { |
@@ -596,21 +582,6 @@ static int nfs3_xdr_enc_getattr3args(struct rpc_rqst *req, __be32 *p, | |||
596 | } | 582 | } |
597 | 583 | ||
598 | /* | 584 | /* |
599 | * Encode SETATTR arguments | ||
600 | */ | ||
601 | static int | ||
602 | nfs3_xdr_sattrargs(struct rpc_rqst *req, __be32 *p, struct nfs3_sattrargs *args) | ||
603 | { | ||
604 | p = xdr_encode_fhandle(p, args->fh); | ||
605 | p = xdr_encode_sattr(p, args->sattr); | ||
606 | *p++ = htonl(args->guard); | ||
607 | if (args->guard) | ||
608 | p = xdr_encode_time3(p, &args->guardtime); | ||
609 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
610 | return 0; | ||
611 | } | ||
612 | |||
613 | /* | ||
614 | * 3.3.2 SETATTR3args | 585 | * 3.3.2 SETATTR3args |
615 | * | 586 | * |
616 | * union sattrguard3 switch (bool check) { | 587 | * union sattrguard3 switch (bool check) { |
@@ -654,18 +625,6 @@ static int nfs3_xdr_enc_setattr3args(struct rpc_rqst *req, __be32 *p, | |||
654 | } | 625 | } |
655 | 626 | ||
656 | /* | 627 | /* |
657 | * Encode directory ops argument | ||
658 | */ | ||
659 | static int | ||
660 | nfs3_xdr_diropargs(struct rpc_rqst *req, __be32 *p, struct nfs3_diropargs *args) | ||
661 | { | ||
662 | p = xdr_encode_fhandle(p, args->fh); | ||
663 | p = xdr_encode_array(p, args->name, args->len); | ||
664 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
665 | return 0; | ||
666 | } | ||
667 | |||
668 | /* | ||
669 | * 3.3.3 LOOKUP3args | 628 | * 3.3.3 LOOKUP3args |
670 | * | 629 | * |
671 | * struct LOOKUP3args { | 630 | * struct LOOKUP3args { |
@@ -683,30 +642,6 @@ static int nfs3_xdr_enc_lookup3args(struct rpc_rqst *req, __be32 *p, | |||
683 | } | 642 | } |
684 | 643 | ||
685 | /* | 644 | /* |
686 | * Encode REMOVE argument | ||
687 | */ | ||
688 | static int | ||
689 | nfs3_xdr_removeargs(struct rpc_rqst *req, __be32 *p, const struct nfs_removeargs *args) | ||
690 | { | ||
691 | p = xdr_encode_fhandle(p, args->fh); | ||
692 | p = xdr_encode_array(p, args->name.name, args->name.len); | ||
693 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
694 | return 0; | ||
695 | } | ||
696 | |||
697 | /* | ||
698 | * Encode access() argument | ||
699 | */ | ||
700 | static int | ||
701 | nfs3_xdr_accessargs(struct rpc_rqst *req, __be32 *p, struct nfs3_accessargs *args) | ||
702 | { | ||
703 | p = xdr_encode_fhandle(p, args->fh); | ||
704 | *p++ = htonl(args->access); | ||
705 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
706 | return 0; | ||
707 | } | ||
708 | |||
709 | /* | ||
710 | * 3.3.4 ACCESS3args | 645 | * 3.3.4 ACCESS3args |
711 | * | 646 | * |
712 | * struct ACCESS3args { | 647 | * struct ACCESS3args { |
@@ -751,31 +686,6 @@ static int nfs3_xdr_enc_readlink3args(struct rpc_rqst *req, __be32 *p, | |||
751 | } | 686 | } |
752 | 687 | ||
753 | /* | 688 | /* |
754 | * Arguments to a READ call. Since we read data directly into the page | ||
755 | * cache, we also set up the reply iovec here so that iov[1] points | ||
756 | * exactly to the page we want to fetch. | ||
757 | */ | ||
758 | static int | ||
759 | nfs3_xdr_readargs(struct rpc_rqst *req, __be32 *p, struct nfs_readargs *args) | ||
760 | { | ||
761 | struct rpc_auth *auth = req->rq_cred->cr_auth; | ||
762 | unsigned int replen; | ||
763 | u32 count = args->count; | ||
764 | |||
765 | p = xdr_encode_fhandle(p, args->fh); | ||
766 | p = xdr_encode_hyper(p, args->offset); | ||
767 | *p++ = htonl(count); | ||
768 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
769 | |||
770 | /* Inline the page array */ | ||
771 | replen = (RPC_REPHDRSIZE + auth->au_rslack + NFS3_readres_sz) << 2; | ||
772 | xdr_inline_pages(&req->rq_rcv_buf, replen, | ||
773 | args->pages, args->pgbase, count); | ||
774 | req->rq_rcv_buf.flags |= XDRBUF_READ; | ||
775 | return 0; | ||
776 | } | ||
777 | |||
778 | /* | ||
779 | * 3.3.6 READ3args | 689 | * 3.3.6 READ3args |
780 | * | 690 | * |
781 | * struct READ3args { | 691 | * struct READ3args { |
@@ -810,28 +720,6 @@ static int nfs3_xdr_enc_read3args(struct rpc_rqst *req, __be32 *p, | |||
810 | } | 720 | } |
811 | 721 | ||
812 | /* | 722 | /* |
813 | * Write arguments. Splice the buffer to be written into the iovec. | ||
814 | */ | ||
815 | static int | ||
816 | nfs3_xdr_writeargs(struct rpc_rqst *req, __be32 *p, struct nfs_writeargs *args) | ||
817 | { | ||
818 | struct xdr_buf *sndbuf = &req->rq_snd_buf; | ||
819 | u32 count = args->count; | ||
820 | |||
821 | p = xdr_encode_fhandle(p, args->fh); | ||
822 | p = xdr_encode_hyper(p, args->offset); | ||
823 | *p++ = htonl(count); | ||
824 | *p++ = htonl(args->stable); | ||
825 | *p++ = htonl(count); | ||
826 | sndbuf->len = xdr_adjust_iovec(sndbuf->head, p); | ||
827 | |||
828 | /* Copy the page array */ | ||
829 | xdr_encode_pages(sndbuf, args->pages, args->pgbase, count); | ||
830 | sndbuf->flags |= XDRBUF_WRITE; | ||
831 | return 0; | ||
832 | } | ||
833 | |||
834 | /* | ||
835 | * 3.3.7 WRITE3args | 723 | * 3.3.7 WRITE3args |
836 | * | 724 | * |
837 | * enum stable_how { | 725 | * enum stable_how { |
@@ -878,26 +766,6 @@ static int nfs3_xdr_enc_write3args(struct rpc_rqst *req, __be32 *p, | |||
878 | } | 766 | } |
879 | 767 | ||
880 | /* | 768 | /* |
881 | * Encode CREATE arguments | ||
882 | */ | ||
883 | static int | ||
884 | nfs3_xdr_createargs(struct rpc_rqst *req, __be32 *p, struct nfs3_createargs *args) | ||
885 | { | ||
886 | p = xdr_encode_fhandle(p, args->fh); | ||
887 | p = xdr_encode_array(p, args->name, args->len); | ||
888 | |||
889 | *p++ = htonl(args->createmode); | ||
890 | if (args->createmode == NFS3_CREATE_EXCLUSIVE) { | ||
891 | *p++ = args->verifier[0]; | ||
892 | *p++ = args->verifier[1]; | ||
893 | } else | ||
894 | p = xdr_encode_sattr(p, args->sattr); | ||
895 | |||
896 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
897 | return 0; | ||
898 | } | ||
899 | |||
900 | /* | ||
901 | * 3.3.8 CREATE3args | 769 | * 3.3.8 CREATE3args |
902 | * | 770 | * |
903 | * enum createmode3 { | 771 | * enum createmode3 { |
@@ -948,19 +816,6 @@ static int nfs3_xdr_enc_create3args(struct rpc_rqst *req, __be32 *p, | |||
948 | } | 816 | } |
949 | 817 | ||
950 | /* | 818 | /* |
951 | * Encode MKDIR arguments | ||
952 | */ | ||
953 | static int | ||
954 | nfs3_xdr_mkdirargs(struct rpc_rqst *req, __be32 *p, struct nfs3_mkdirargs *args) | ||
955 | { | ||
956 | p = xdr_encode_fhandle(p, args->fh); | ||
957 | p = xdr_encode_array(p, args->name, args->len); | ||
958 | p = xdr_encode_sattr(p, args->sattr); | ||
959 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
960 | return 0; | ||
961 | } | ||
962 | |||
963 | /* | ||
964 | * 3.3.9 MKDIR3args | 819 | * 3.3.9 MKDIR3args |
965 | * | 820 | * |
966 | * struct MKDIR3args { | 821 | * struct MKDIR3args { |
@@ -980,23 +835,6 @@ static int nfs3_xdr_enc_mkdir3args(struct rpc_rqst *req, __be32 *p, | |||
980 | } | 835 | } |
981 | 836 | ||
982 | /* | 837 | /* |
983 | * Encode SYMLINK arguments | ||
984 | */ | ||
985 | static int | ||
986 | nfs3_xdr_symlinkargs(struct rpc_rqst *req, __be32 *p, struct nfs3_symlinkargs *args) | ||
987 | { | ||
988 | p = xdr_encode_fhandle(p, args->fromfh); | ||
989 | p = xdr_encode_array(p, args->fromname, args->fromlen); | ||
990 | p = xdr_encode_sattr(p, args->sattr); | ||
991 | *p++ = htonl(args->pathlen); | ||
992 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
993 | |||
994 | /* Copy the page */ | ||
995 | xdr_encode_pages(&req->rq_snd_buf, args->pages, 0, args->pathlen); | ||
996 | return 0; | ||
997 | } | ||
998 | |||
999 | /* | ||
1000 | * 3.3.10 SYMLINK3args | 838 | * 3.3.10 SYMLINK3args |
1001 | * | 839 | * |
1002 | * struct symlinkdata3 { | 840 | * struct symlinkdata3 { |
@@ -1028,25 +866,6 @@ static int nfs3_xdr_enc_symlink3args(struct rpc_rqst *req, __be32 *p, | |||
1028 | } | 866 | } |
1029 | 867 | ||
1030 | /* | 868 | /* |
1031 | * Encode MKNOD arguments | ||
1032 | */ | ||
1033 | static int | ||
1034 | nfs3_xdr_mknodargs(struct rpc_rqst *req, __be32 *p, struct nfs3_mknodargs *args) | ||
1035 | { | ||
1036 | p = xdr_encode_fhandle(p, args->fh); | ||
1037 | p = xdr_encode_array(p, args->name, args->len); | ||
1038 | *p++ = htonl(args->type); | ||
1039 | p = xdr_encode_sattr(p, args->sattr); | ||
1040 | if (args->type == NF3CHR || args->type == NF3BLK) { | ||
1041 | *p++ = htonl(MAJOR(args->rdev)); | ||
1042 | *p++ = htonl(MINOR(args->rdev)); | ||
1043 | } | ||
1044 | |||
1045 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1046 | return 0; | ||
1047 | } | ||
1048 | |||
1049 | /* | ||
1050 | * 3.3.11 MKNOD3args | 869 | * 3.3.11 MKNOD3args |
1051 | * | 870 | * |
1052 | * struct devicedata3 { | 871 | * struct devicedata3 { |
@@ -1127,20 +946,6 @@ static int nfs3_xdr_enc_remove3args(struct rpc_rqst *req, __be32 *p, | |||
1127 | } | 946 | } |
1128 | 947 | ||
1129 | /* | 948 | /* |
1130 | * Encode RENAME arguments | ||
1131 | */ | ||
1132 | static int | ||
1133 | nfs3_xdr_renameargs(struct rpc_rqst *req, __be32 *p, struct nfs_renameargs *args) | ||
1134 | { | ||
1135 | p = xdr_encode_fhandle(p, args->old_dir); | ||
1136 | p = xdr_encode_array(p, args->old_name->name, args->old_name->len); | ||
1137 | p = xdr_encode_fhandle(p, args->new_dir); | ||
1138 | p = xdr_encode_array(p, args->new_name->name, args->new_name->len); | ||
1139 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1140 | return 0; | ||
1141 | } | ||
1142 | |||
1143 | /* | ||
1144 | * 3.3.14 RENAME3args | 949 | * 3.3.14 RENAME3args |
1145 | * | 950 | * |
1146 | * struct RENAME3args { | 951 | * struct RENAME3args { |
@@ -1162,19 +967,6 @@ static int nfs3_xdr_enc_rename3args(struct rpc_rqst *req, __be32 *p, | |||
1162 | } | 967 | } |
1163 | 968 | ||
1164 | /* | 969 | /* |
1165 | * Encode LINK arguments | ||
1166 | */ | ||
1167 | static int | ||
1168 | nfs3_xdr_linkargs(struct rpc_rqst *req, __be32 *p, struct nfs3_linkargs *args) | ||
1169 | { | ||
1170 | p = xdr_encode_fhandle(p, args->fromfh); | ||
1171 | p = xdr_encode_fhandle(p, args->tofh); | ||
1172 | p = xdr_encode_array(p, args->toname, args->tolen); | ||
1173 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1174 | return 0; | ||
1175 | } | ||
1176 | |||
1177 | /* | ||
1178 | * 3.3.15 LINK3args | 970 | * 3.3.15 LINK3args |
1179 | * | 971 | * |
1180 | * struct LINK3args { | 972 | * struct LINK3args { |
@@ -1194,34 +986,6 @@ static int nfs3_xdr_enc_link3args(struct rpc_rqst *req, __be32 *p, | |||
1194 | } | 986 | } |
1195 | 987 | ||
1196 | /* | 988 | /* |
1197 | * Encode arguments to readdir call | ||
1198 | */ | ||
1199 | static int | ||
1200 | nfs3_xdr_readdirargs(struct rpc_rqst *req, __be32 *p, struct nfs3_readdirargs *args) | ||
1201 | { | ||
1202 | struct rpc_auth *auth = req->rq_cred->cr_auth; | ||
1203 | unsigned int replen; | ||
1204 | u32 count = args->count; | ||
1205 | |||
1206 | p = xdr_encode_fhandle(p, args->fh); | ||
1207 | p = xdr_encode_hyper(p, args->cookie); | ||
1208 | *p++ = args->verf[0]; | ||
1209 | *p++ = args->verf[1]; | ||
1210 | if (args->plus) { | ||
1211 | /* readdirplus: need dircount + buffer size. | ||
1212 | * We just make sure we make dircount big enough */ | ||
1213 | *p++ = htonl(count >> 3); | ||
1214 | } | ||
1215 | *p++ = htonl(count); | ||
1216 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1217 | |||
1218 | /* Inline the page array */ | ||
1219 | replen = (RPC_REPHDRSIZE + auth->au_rslack + NFS3_readdirres_sz) << 2; | ||
1220 | xdr_inline_pages(&req->rq_rcv_buf, replen, args->pages, 0, count); | ||
1221 | return 0; | ||
1222 | } | ||
1223 | |||
1224 | /* | ||
1225 | * 3.3.16 READDIR3args | 989 | * 3.3.16 READDIR3args |
1226 | * | 990 | * |
1227 | * struct READDIR3args { | 991 | * struct READDIR3args { |
@@ -1418,19 +1182,6 @@ out_overflow_exit: | |||
1418 | } | 1182 | } |
1419 | 1183 | ||
1420 | /* | 1184 | /* |
1421 | * Encode COMMIT arguments | ||
1422 | */ | ||
1423 | static int | ||
1424 | nfs3_xdr_commitargs(struct rpc_rqst *req, __be32 *p, struct nfs_writeargs *args) | ||
1425 | { | ||
1426 | p = xdr_encode_fhandle(p, args->fh); | ||
1427 | p = xdr_encode_hyper(p, args->offset); | ||
1428 | *p++ = htonl(args->count); | ||
1429 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1430 | return 0; | ||
1431 | } | ||
1432 | |||
1433 | /* | ||
1434 | * 3.3.21 COMMIT3args | 1185 | * 3.3.21 COMMIT3args |
1435 | * | 1186 | * |
1436 | * struct COMMIT3args { | 1187 | * struct COMMIT3args { |
@@ -1462,29 +1213,6 @@ static int nfs3_xdr_enc_commit3args(struct rpc_rqst *req, __be32 *p, | |||
1462 | } | 1213 | } |
1463 | 1214 | ||
1464 | #ifdef CONFIG_NFS_V3_ACL | 1215 | #ifdef CONFIG_NFS_V3_ACL |
1465 | /* | ||
1466 | * Encode GETACL arguments | ||
1467 | */ | ||
1468 | static int | ||
1469 | nfs3_xdr_getaclargs(struct rpc_rqst *req, __be32 *p, | ||
1470 | struct nfs3_getaclargs *args) | ||
1471 | { | ||
1472 | struct rpc_auth *auth = req->rq_cred->cr_auth; | ||
1473 | unsigned int replen; | ||
1474 | |||
1475 | p = xdr_encode_fhandle(p, args->fh); | ||
1476 | *p++ = htonl(args->mask); | ||
1477 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1478 | |||
1479 | if (args->mask & (NFS_ACL | NFS_DFACL)) { | ||
1480 | /* Inline the page array */ | ||
1481 | replen = (RPC_REPHDRSIZE + auth->au_rslack + | ||
1482 | ACL3_getaclres_sz) << 2; | ||
1483 | xdr_inline_pages(&req->rq_rcv_buf, replen, args->pages, 0, | ||
1484 | NFSACL_MAXPAGES << PAGE_SHIFT); | ||
1485 | } | ||
1486 | return 0; | ||
1487 | } | ||
1488 | 1216 | ||
1489 | static int nfs3_xdr_enc_getacl3args(struct rpc_rqst *req, __be32 *p, | 1217 | static int nfs3_xdr_enc_getacl3args(struct rpc_rqst *req, __be32 *p, |
1490 | const struct nfs3_getaclargs *args) | 1218 | const struct nfs3_getaclargs *args) |
@@ -1501,39 +1229,6 @@ static int nfs3_xdr_enc_getacl3args(struct rpc_rqst *req, __be32 *p, | |||
1501 | return 0; | 1229 | return 0; |
1502 | } | 1230 | } |
1503 | 1231 | ||
1504 | /* | ||
1505 | * Encode SETACL arguments | ||
1506 | */ | ||
1507 | static int | ||
1508 | nfs3_xdr_setaclargs(struct rpc_rqst *req, __be32 *p, | ||
1509 | struct nfs3_setaclargs *args) | ||
1510 | { | ||
1511 | struct xdr_buf *buf = &req->rq_snd_buf; | ||
1512 | unsigned int base; | ||
1513 | int err; | ||
1514 | |||
1515 | p = xdr_encode_fhandle(p, NFS_FH(args->inode)); | ||
1516 | *p++ = htonl(args->mask); | ||
1517 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1518 | base = req->rq_slen; | ||
1519 | |||
1520 | if (args->npages != 0) | ||
1521 | xdr_encode_pages(buf, args->pages, 0, args->len); | ||
1522 | else | ||
1523 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, | ||
1524 | p + XDR_QUADLEN(args->len)); | ||
1525 | |||
1526 | err = nfsacl_encode(buf, base, args->inode, | ||
1527 | (args->mask & NFS_ACL) ? | ||
1528 | args->acl_access : NULL, 1, 0); | ||
1529 | if (err > 0) | ||
1530 | err = nfsacl_encode(buf, base + err, args->inode, | ||
1531 | (args->mask & NFS_DFACL) ? | ||
1532 | args->acl_default : NULL, 1, | ||
1533 | NFS_ACL_DEFAULT); | ||
1534 | return (err > 0) ? 0 : err; | ||
1535 | } | ||
1536 | |||
1537 | static int nfs3_xdr_enc_setacl3args(struct rpc_rqst *req, __be32 *p, | 1232 | static int nfs3_xdr_enc_setacl3args(struct rpc_rqst *req, __be32 *p, |
1538 | const struct nfs3_setaclargs *args) | 1233 | const struct nfs3_setaclargs *args) |
1539 | { | 1234 | { |
@@ -1635,21 +1330,6 @@ nfs3_xdr_accessres(struct rpc_rqst *req, __be32 *p, struct nfs3_accessres *res) | |||
1635 | return 0; | 1330 | return 0; |
1636 | } | 1331 | } |
1637 | 1332 | ||
1638 | static int | ||
1639 | nfs3_xdr_readlinkargs(struct rpc_rqst *req, __be32 *p, struct nfs3_readlinkargs *args) | ||
1640 | { | ||
1641 | struct rpc_auth *auth = req->rq_cred->cr_auth; | ||
1642 | unsigned int replen; | ||
1643 | |||
1644 | p = xdr_encode_fhandle(p, args->fh); | ||
1645 | req->rq_slen = xdr_adjust_iovec(req->rq_svec, p); | ||
1646 | |||
1647 | /* Inline the page array */ | ||
1648 | replen = (RPC_REPHDRSIZE + auth->au_rslack + NFS3_readlinkres_sz) << 2; | ||
1649 | xdr_inline_pages(&req->rq_rcv_buf, replen, args->pages, args->pgbase, args->pglen); | ||
1650 | return 0; | ||
1651 | } | ||
1652 | |||
1653 | /* | 1333 | /* |
1654 | * Decode READLINK reply | 1334 | * Decode READLINK reply |
1655 | */ | 1335 | */ |