diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4xdr.c | 164 |
1 files changed, 50 insertions, 114 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index f958849cb304..4ea9f50a32f2 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -1084,13 +1084,8 @@ static void encode_attrs(struct xdr_stream *xdr, const struct iattr *iap, const | |||
1084 | 1084 | ||
1085 | static void encode_access(struct xdr_stream *xdr, u32 access, struct compound_hdr *hdr) | 1085 | static void encode_access(struct xdr_stream *xdr, u32 access, struct compound_hdr *hdr) |
1086 | { | 1086 | { |
1087 | __be32 *p; | 1087 | encode_op_hdr(xdr, OP_ACCESS, decode_access_maxsz, hdr); |
1088 | 1088 | encode_uint32(xdr, access); | |
1089 | p = reserve_space(xdr, 8); | ||
1090 | *p++ = cpu_to_be32(OP_ACCESS); | ||
1091 | *p = cpu_to_be32(access); | ||
1092 | hdr->nops++; | ||
1093 | hdr->replen += decode_access_maxsz; | ||
1094 | } | 1089 | } |
1095 | 1090 | ||
1096 | static void encode_close(struct xdr_stream *xdr, const struct nfs_closeargs *arg, struct compound_hdr *hdr) | 1091 | static void encode_close(struct xdr_stream *xdr, const struct nfs_closeargs *arg, struct compound_hdr *hdr) |
@@ -1104,21 +1099,18 @@ static void encode_commit(struct xdr_stream *xdr, const struct nfs_writeargs *ar | |||
1104 | { | 1099 | { |
1105 | __be32 *p; | 1100 | __be32 *p; |
1106 | 1101 | ||
1107 | p = reserve_space(xdr, 16); | 1102 | encode_op_hdr(xdr, OP_COMMIT, decode_commit_maxsz, hdr); |
1108 | *p++ = cpu_to_be32(OP_COMMIT); | 1103 | p = reserve_space(xdr, 12); |
1109 | p = xdr_encode_hyper(p, args->offset); | 1104 | p = xdr_encode_hyper(p, args->offset); |
1110 | *p = cpu_to_be32(args->count); | 1105 | *p = cpu_to_be32(args->count); |
1111 | hdr->nops++; | ||
1112 | hdr->replen += decode_commit_maxsz; | ||
1113 | } | 1106 | } |
1114 | 1107 | ||
1115 | static void encode_create(struct xdr_stream *xdr, const struct nfs4_create_arg *create, struct compound_hdr *hdr) | 1108 | static void encode_create(struct xdr_stream *xdr, const struct nfs4_create_arg *create, struct compound_hdr *hdr) |
1116 | { | 1109 | { |
1117 | __be32 *p; | 1110 | __be32 *p; |
1118 | 1111 | ||
1119 | p = reserve_space(xdr, 8); | 1112 | encode_op_hdr(xdr, OP_CREATE, decode_create_maxsz, hdr); |
1120 | *p++ = cpu_to_be32(OP_CREATE); | 1113 | encode_uint32(xdr, create->ftype); |
1121 | *p = cpu_to_be32(create->ftype); | ||
1122 | 1114 | ||
1123 | switch (create->ftype) { | 1115 | switch (create->ftype) { |
1124 | case NF4LNK: | 1116 | case NF4LNK: |
@@ -1138,9 +1130,6 @@ static void encode_create(struct xdr_stream *xdr, const struct nfs4_create_arg * | |||
1138 | } | 1130 | } |
1139 | 1131 | ||
1140 | encode_string(xdr, create->name->len, create->name->name); | 1132 | encode_string(xdr, create->name->len, create->name->name); |
1141 | hdr->nops++; | ||
1142 | hdr->replen += decode_create_maxsz; | ||
1143 | |||
1144 | encode_attrs(xdr, create->attrs, create->server); | 1133 | encode_attrs(xdr, create->attrs, create->server); |
1145 | } | 1134 | } |
1146 | 1135 | ||
@@ -1148,25 +1137,21 @@ static void encode_getattr_one(struct xdr_stream *xdr, uint32_t bitmap, struct c | |||
1148 | { | 1137 | { |
1149 | __be32 *p; | 1138 | __be32 *p; |
1150 | 1139 | ||
1151 | p = reserve_space(xdr, 12); | 1140 | encode_op_hdr(xdr, OP_GETATTR, decode_getattr_maxsz, hdr); |
1152 | *p++ = cpu_to_be32(OP_GETATTR); | 1141 | p = reserve_space(xdr, 8); |
1153 | *p++ = cpu_to_be32(1); | 1142 | *p++ = cpu_to_be32(1); |
1154 | *p = cpu_to_be32(bitmap); | 1143 | *p = cpu_to_be32(bitmap); |
1155 | hdr->nops++; | ||
1156 | hdr->replen += decode_getattr_maxsz; | ||
1157 | } | 1144 | } |
1158 | 1145 | ||
1159 | static void encode_getattr_two(struct xdr_stream *xdr, uint32_t bm0, uint32_t bm1, struct compound_hdr *hdr) | 1146 | static void encode_getattr_two(struct xdr_stream *xdr, uint32_t bm0, uint32_t bm1, struct compound_hdr *hdr) |
1160 | { | 1147 | { |
1161 | __be32 *p; | 1148 | __be32 *p; |
1162 | 1149 | ||
1163 | p = reserve_space(xdr, 16); | 1150 | encode_op_hdr(xdr, OP_GETATTR, decode_getattr_maxsz, hdr); |
1164 | *p++ = cpu_to_be32(OP_GETATTR); | 1151 | p = reserve_space(xdr, 12); |
1165 | *p++ = cpu_to_be32(2); | 1152 | *p++ = cpu_to_be32(2); |
1166 | *p++ = cpu_to_be32(bm0); | 1153 | *p++ = cpu_to_be32(bm0); |
1167 | *p = cpu_to_be32(bm1); | 1154 | *p = cpu_to_be32(bm1); |
1168 | hdr->nops++; | ||
1169 | hdr->replen += decode_getattr_maxsz; | ||
1170 | } | 1155 | } |
1171 | 1156 | ||
1172 | static void | 1157 | static void |
@@ -1261,8 +1246,8 @@ static void encode_lock(struct xdr_stream *xdr, const struct nfs_lock_args *args | |||
1261 | { | 1246 | { |
1262 | __be32 *p; | 1247 | __be32 *p; |
1263 | 1248 | ||
1264 | p = reserve_space(xdr, 32); | 1249 | encode_op_hdr(xdr, OP_LOCK, decode_lock_maxsz, hdr); |
1265 | *p++ = cpu_to_be32(OP_LOCK); | 1250 | p = reserve_space(xdr, 28); |
1266 | *p++ = cpu_to_be32(nfs4_lock_type(args->fl, args->block)); | 1251 | *p++ = cpu_to_be32(nfs4_lock_type(args->fl, args->block)); |
1267 | *p++ = cpu_to_be32(args->reclaim); | 1252 | *p++ = cpu_to_be32(args->reclaim); |
1268 | p = xdr_encode_hyper(p, args->fl->fl_start); | 1253 | p = xdr_encode_hyper(p, args->fl->fl_start); |
@@ -1278,38 +1263,31 @@ static void encode_lock(struct xdr_stream *xdr, const struct nfs_lock_args *args | |||
1278 | encode_nfs4_stateid(xdr, args->lock_stateid); | 1263 | encode_nfs4_stateid(xdr, args->lock_stateid); |
1279 | encode_nfs4_seqid(xdr, args->lock_seqid); | 1264 | encode_nfs4_seqid(xdr, args->lock_seqid); |
1280 | } | 1265 | } |
1281 | hdr->nops++; | ||
1282 | hdr->replen += decode_lock_maxsz; | ||
1283 | } | 1266 | } |
1284 | 1267 | ||
1285 | static void encode_lockt(struct xdr_stream *xdr, const struct nfs_lockt_args *args, struct compound_hdr *hdr) | 1268 | static void encode_lockt(struct xdr_stream *xdr, const struct nfs_lockt_args *args, struct compound_hdr *hdr) |
1286 | { | 1269 | { |
1287 | __be32 *p; | 1270 | __be32 *p; |
1288 | 1271 | ||
1289 | p = reserve_space(xdr, 24); | 1272 | encode_op_hdr(xdr, OP_LOCKT, decode_lockt_maxsz, hdr); |
1290 | *p++ = cpu_to_be32(OP_LOCKT); | 1273 | p = reserve_space(xdr, 20); |
1291 | *p++ = cpu_to_be32(nfs4_lock_type(args->fl, 0)); | 1274 | *p++ = cpu_to_be32(nfs4_lock_type(args->fl, 0)); |
1292 | p = xdr_encode_hyper(p, args->fl->fl_start); | 1275 | p = xdr_encode_hyper(p, args->fl->fl_start); |
1293 | p = xdr_encode_hyper(p, nfs4_lock_length(args->fl)); | 1276 | p = xdr_encode_hyper(p, nfs4_lock_length(args->fl)); |
1294 | encode_lockowner(xdr, &args->lock_owner); | 1277 | encode_lockowner(xdr, &args->lock_owner); |
1295 | hdr->nops++; | ||
1296 | hdr->replen += decode_lockt_maxsz; | ||
1297 | } | 1278 | } |
1298 | 1279 | ||
1299 | static void encode_locku(struct xdr_stream *xdr, const struct nfs_locku_args *args, struct compound_hdr *hdr) | 1280 | static void encode_locku(struct xdr_stream *xdr, const struct nfs_locku_args *args, struct compound_hdr *hdr) |
1300 | { | 1281 | { |
1301 | __be32 *p; | 1282 | __be32 *p; |
1302 | 1283 | ||
1303 | p = reserve_space(xdr, 8); | 1284 | encode_op_hdr(xdr, OP_LOCKU, decode_locku_maxsz, hdr); |
1304 | *p++ = cpu_to_be32(OP_LOCKU); | 1285 | encode_uint32(xdr, nfs4_lock_type(args->fl, 0)); |
1305 | *p = cpu_to_be32(nfs4_lock_type(args->fl, 0)); | ||
1306 | encode_nfs4_seqid(xdr, args->seqid); | 1286 | encode_nfs4_seqid(xdr, args->seqid); |
1307 | encode_nfs4_stateid(xdr, args->stateid); | 1287 | encode_nfs4_stateid(xdr, args->stateid); |
1308 | p = reserve_space(xdr, 16); | 1288 | p = reserve_space(xdr, 16); |
1309 | p = xdr_encode_hyper(p, args->fl->fl_start); | 1289 | p = xdr_encode_hyper(p, args->fl->fl_start); |
1310 | xdr_encode_hyper(p, nfs4_lock_length(args->fl)); | 1290 | xdr_encode_hyper(p, nfs4_lock_length(args->fl)); |
1311 | hdr->nops++; | ||
1312 | hdr->replen += decode_locku_maxsz; | ||
1313 | } | 1291 | } |
1314 | 1292 | ||
1315 | static void encode_release_lockowner(struct xdr_stream *xdr, const struct nfs_lowner *lowner, struct compound_hdr *hdr) | 1293 | static void encode_release_lockowner(struct xdr_stream *xdr, const struct nfs_lowner *lowner, struct compound_hdr *hdr) |
@@ -1553,8 +1531,8 @@ static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg | |||
1553 | if (!(readdir->bitmask[1] & FATTR4_WORD1_MOUNTED_ON_FILEID)) | 1531 | if (!(readdir->bitmask[1] & FATTR4_WORD1_MOUNTED_ON_FILEID)) |
1554 | attrs[0] |= FATTR4_WORD0_FILEID; | 1532 | attrs[0] |= FATTR4_WORD0_FILEID; |
1555 | 1533 | ||
1556 | p = reserve_space(xdr, 12); | 1534 | encode_op_hdr(xdr, OP_READDIR, decode_readdir_maxsz, hdr); |
1557 | *p++ = cpu_to_be32(OP_READDIR); | 1535 | p = reserve_space(xdr, 8); |
1558 | p = xdr_encode_hyper(p, readdir->cookie); | 1536 | p = xdr_encode_hyper(p, readdir->cookie); |
1559 | encode_nfs4_verifier(xdr, &readdir->verifier); | 1537 | encode_nfs4_verifier(xdr, &readdir->verifier); |
1560 | p = reserve_space(xdr, 20); | 1538 | p = reserve_space(xdr, 20); |
@@ -1564,8 +1542,6 @@ static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg | |||
1564 | 1542 | ||
1565 | *p++ = cpu_to_be32(attrs[0] & readdir->bitmask[0]); | 1543 | *p++ = cpu_to_be32(attrs[0] & readdir->bitmask[0]); |
1566 | *p = cpu_to_be32(attrs[1] & readdir->bitmask[1]); | 1544 | *p = cpu_to_be32(attrs[1] & readdir->bitmask[1]); |
1567 | hdr->nops++; | ||
1568 | hdr->replen += decode_readdir_maxsz; | ||
1569 | memcpy(verf, readdir->verifier.data, sizeof(verf)); | 1545 | memcpy(verf, readdir->verifier.data, sizeof(verf)); |
1570 | dprintk("%s: cookie = %Lu, verifier = %08x:%08x, bitmap = %08x:%08x\n", | 1546 | dprintk("%s: cookie = %Lu, verifier = %08x:%08x, bitmap = %08x:%08x\n", |
1571 | __func__, | 1547 | __func__, |
@@ -1598,11 +1574,9 @@ static void encode_renew(struct xdr_stream *xdr, clientid4 clid, | |||
1598 | { | 1574 | { |
1599 | __be32 *p; | 1575 | __be32 *p; |
1600 | 1576 | ||
1601 | p = reserve_space(xdr, 12); | 1577 | encode_op_hdr(xdr, OP_RENEW, decode_renew_maxsz, hdr); |
1602 | *p++ = cpu_to_be32(OP_RENEW); | 1578 | p = reserve_space(xdr, 8); |
1603 | xdr_encode_hyper(p, clid); | 1579 | xdr_encode_hyper(p, clid); |
1604 | hdr->nops++; | ||
1605 | hdr->replen += decode_renew_maxsz; | ||
1606 | } | 1580 | } |
1607 | 1581 | ||
1608 | static void | 1582 | static void |
@@ -1660,12 +1634,11 @@ static void encode_setclientid_confirm(struct xdr_stream *xdr, const struct nfs4 | |||
1660 | { | 1634 | { |
1661 | __be32 *p; | 1635 | __be32 *p; |
1662 | 1636 | ||
1663 | p = reserve_space(xdr, 12); | 1637 | encode_op_hdr(xdr, OP_SETCLIENTID_CONFIRM, |
1664 | *p++ = cpu_to_be32(OP_SETCLIENTID_CONFIRM); | 1638 | decode_setclientid_confirm_maxsz, hdr); |
1639 | p = reserve_space(xdr, 8); | ||
1665 | p = xdr_encode_hyper(p, arg->clientid); | 1640 | p = xdr_encode_hyper(p, arg->clientid); |
1666 | encode_nfs4_verifier(xdr, &arg->confirm); | 1641 | encode_nfs4_verifier(xdr, &arg->confirm); |
1667 | hdr->nops++; | ||
1668 | hdr->replen += decode_setclientid_confirm_maxsz; | ||
1669 | } | 1642 | } |
1670 | 1643 | ||
1671 | static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *args, struct compound_hdr *hdr) | 1644 | static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *args, struct compound_hdr *hdr) |
@@ -1758,8 +1731,8 @@ static void encode_create_session(struct xdr_stream *xdr, | |||
1758 | len = scnprintf(machine_name, sizeof(machine_name), "%s", | 1731 | len = scnprintf(machine_name, sizeof(machine_name), "%s", |
1759 | clp->cl_ipaddr); | 1732 | clp->cl_ipaddr); |
1760 | 1733 | ||
1761 | p = reserve_space(xdr, 20 + 2*28 + 20 + len + 12); | 1734 | encode_op_hdr(xdr, OP_CREATE_SESSION, decode_create_session_maxsz, hdr); |
1762 | *p++ = cpu_to_be32(OP_CREATE_SESSION); | 1735 | p = reserve_space(xdr, 16 + 2*28 + 20 + len + 12); |
1763 | p = xdr_encode_hyper(p, clp->cl_clientid); | 1736 | p = xdr_encode_hyper(p, clp->cl_clientid); |
1764 | *p++ = cpu_to_be32(clp->cl_seqid); /*Sequence id */ | 1737 | *p++ = cpu_to_be32(clp->cl_seqid); /*Sequence id */ |
1765 | *p++ = cpu_to_be32(args->flags); /*flags */ | 1738 | *p++ = cpu_to_be32(args->flags); /*flags */ |
@@ -1792,33 +1765,22 @@ static void encode_create_session(struct xdr_stream *xdr, | |||
1792 | *p++ = cpu_to_be32(0); /* UID */ | 1765 | *p++ = cpu_to_be32(0); /* UID */ |
1793 | *p++ = cpu_to_be32(0); /* GID */ | 1766 | *p++ = cpu_to_be32(0); /* GID */ |
1794 | *p = cpu_to_be32(0); /* No more gids */ | 1767 | *p = cpu_to_be32(0); /* No more gids */ |
1795 | hdr->nops++; | ||
1796 | hdr->replen += decode_create_session_maxsz; | ||
1797 | } | 1768 | } |
1798 | 1769 | ||
1799 | static void encode_destroy_session(struct xdr_stream *xdr, | 1770 | static void encode_destroy_session(struct xdr_stream *xdr, |
1800 | struct nfs4_session *session, | 1771 | struct nfs4_session *session, |
1801 | struct compound_hdr *hdr) | 1772 | struct compound_hdr *hdr) |
1802 | { | 1773 | { |
1803 | __be32 *p; | 1774 | encode_op_hdr(xdr, OP_DESTROY_SESSION, decode_destroy_session_maxsz, hdr); |
1804 | p = reserve_space(xdr, 4 + NFS4_MAX_SESSIONID_LEN); | 1775 | encode_opaque_fixed(xdr, session->sess_id.data, NFS4_MAX_SESSIONID_LEN); |
1805 | *p++ = cpu_to_be32(OP_DESTROY_SESSION); | ||
1806 | xdr_encode_opaque_fixed(p, session->sess_id.data, NFS4_MAX_SESSIONID_LEN); | ||
1807 | hdr->nops++; | ||
1808 | hdr->replen += decode_destroy_session_maxsz; | ||
1809 | } | 1776 | } |
1810 | 1777 | ||
1811 | static void encode_reclaim_complete(struct xdr_stream *xdr, | 1778 | static void encode_reclaim_complete(struct xdr_stream *xdr, |
1812 | struct nfs41_reclaim_complete_args *args, | 1779 | struct nfs41_reclaim_complete_args *args, |
1813 | struct compound_hdr *hdr) | 1780 | struct compound_hdr *hdr) |
1814 | { | 1781 | { |
1815 | __be32 *p; | 1782 | encode_op_hdr(xdr, OP_RECLAIM_COMPLETE, decode_reclaim_complete_maxsz, hdr); |
1816 | 1783 | encode_uint32(xdr, args->one_fs); | |
1817 | p = reserve_space(xdr, 8); | ||
1818 | *p++ = cpu_to_be32(OP_RECLAIM_COMPLETE); | ||
1819 | *p++ = cpu_to_be32(args->one_fs); | ||
1820 | hdr->nops++; | ||
1821 | hdr->replen += decode_reclaim_complete_maxsz; | ||
1822 | } | 1784 | } |
1823 | #endif /* CONFIG_NFS_V4_1 */ | 1785 | #endif /* CONFIG_NFS_V4_1 */ |
1824 | 1786 | ||
@@ -1840,8 +1802,7 @@ static void encode_sequence(struct xdr_stream *xdr, | |||
1840 | WARN_ON(args->sa_slotid == NFS4_MAX_SLOT_TABLE); | 1802 | WARN_ON(args->sa_slotid == NFS4_MAX_SLOT_TABLE); |
1841 | slot = tp->slots + args->sa_slotid; | 1803 | slot = tp->slots + args->sa_slotid; |
1842 | 1804 | ||
1843 | p = reserve_space(xdr, 4 + NFS4_MAX_SESSIONID_LEN + 16); | 1805 | encode_op_hdr(xdr, OP_SEQUENCE, decode_sequence_maxsz, hdr); |
1844 | *p++ = cpu_to_be32(OP_SEQUENCE); | ||
1845 | 1806 | ||
1846 | /* | 1807 | /* |
1847 | * Sessionid + seqid + slotid + max slotid + cache_this | 1808 | * Sessionid + seqid + slotid + max slotid + cache_this |
@@ -1855,13 +1816,12 @@ static void encode_sequence(struct xdr_stream *xdr, | |||
1855 | ((u32 *)session->sess_id.data)[3], | 1816 | ((u32 *)session->sess_id.data)[3], |
1856 | slot->seq_nr, args->sa_slotid, | 1817 | slot->seq_nr, args->sa_slotid, |
1857 | tp->highest_used_slotid, args->sa_cache_this); | 1818 | tp->highest_used_slotid, args->sa_cache_this); |
1819 | p = reserve_space(xdr, NFS4_MAX_SESSIONID_LEN + 16); | ||
1858 | p = xdr_encode_opaque_fixed(p, session->sess_id.data, NFS4_MAX_SESSIONID_LEN); | 1820 | p = xdr_encode_opaque_fixed(p, session->sess_id.data, NFS4_MAX_SESSIONID_LEN); |
1859 | *p++ = cpu_to_be32(slot->seq_nr); | 1821 | *p++ = cpu_to_be32(slot->seq_nr); |
1860 | *p++ = cpu_to_be32(args->sa_slotid); | 1822 | *p++ = cpu_to_be32(args->sa_slotid); |
1861 | *p++ = cpu_to_be32(tp->highest_used_slotid); | 1823 | *p++ = cpu_to_be32(tp->highest_used_slotid); |
1862 | *p = cpu_to_be32(args->sa_cache_this); | 1824 | *p = cpu_to_be32(args->sa_cache_this); |
1863 | hdr->nops++; | ||
1864 | hdr->replen += decode_sequence_maxsz; | ||
1865 | #endif /* CONFIG_NFS_V4_1 */ | 1825 | #endif /* CONFIG_NFS_V4_1 */ |
1866 | } | 1826 | } |
1867 | 1827 | ||
@@ -1876,14 +1836,12 @@ encode_getdevicelist(struct xdr_stream *xdr, | |||
1876 | .data = "dummmmmy", | 1836 | .data = "dummmmmy", |
1877 | }; | 1837 | }; |
1878 | 1838 | ||
1879 | p = reserve_space(xdr, 20); | 1839 | encode_op_hdr(xdr, OP_GETDEVICELIST, decode_getdevicelist_maxsz, hdr); |
1880 | *p++ = cpu_to_be32(OP_GETDEVICELIST); | 1840 | p = reserve_space(xdr, 16); |
1881 | *p++ = cpu_to_be32(args->layoutclass); | 1841 | *p++ = cpu_to_be32(args->layoutclass); |
1882 | *p++ = cpu_to_be32(NFS4_PNFS_GETDEVLIST_MAXNUM); | 1842 | *p++ = cpu_to_be32(NFS4_PNFS_GETDEVLIST_MAXNUM); |
1883 | xdr_encode_hyper(p, 0ULL); /* cookie */ | 1843 | xdr_encode_hyper(p, 0ULL); /* cookie */ |
1884 | encode_nfs4_verifier(xdr, &dummy); | 1844 | encode_nfs4_verifier(xdr, &dummy); |
1885 | hdr->nops++; | ||
1886 | hdr->replen += decode_getdevicelist_maxsz; | ||
1887 | } | 1845 | } |
1888 | 1846 | ||
1889 | static void | 1847 | static void |
@@ -1893,15 +1851,13 @@ encode_getdeviceinfo(struct xdr_stream *xdr, | |||
1893 | { | 1851 | { |
1894 | __be32 *p; | 1852 | __be32 *p; |
1895 | 1853 | ||
1896 | p = reserve_space(xdr, 16 + NFS4_DEVICEID4_SIZE); | 1854 | encode_op_hdr(xdr, OP_GETDEVICEINFO, decode_getdeviceinfo_maxsz, hdr); |
1897 | *p++ = cpu_to_be32(OP_GETDEVICEINFO); | 1855 | p = reserve_space(xdr, 12 + NFS4_DEVICEID4_SIZE); |
1898 | p = xdr_encode_opaque_fixed(p, args->pdev->dev_id.data, | 1856 | p = xdr_encode_opaque_fixed(p, args->pdev->dev_id.data, |
1899 | NFS4_DEVICEID4_SIZE); | 1857 | NFS4_DEVICEID4_SIZE); |
1900 | *p++ = cpu_to_be32(args->pdev->layout_type); | 1858 | *p++ = cpu_to_be32(args->pdev->layout_type); |
1901 | *p++ = cpu_to_be32(args->pdev->pglen); /* gdia_maxcount */ | 1859 | *p++ = cpu_to_be32(args->pdev->pglen); /* gdia_maxcount */ |
1902 | *p++ = cpu_to_be32(0); /* bitmap length 0 */ | 1860 | *p++ = cpu_to_be32(0); /* bitmap length 0 */ |
1903 | hdr->nops++; | ||
1904 | hdr->replen += decode_getdeviceinfo_maxsz; | ||
1905 | } | 1861 | } |
1906 | 1862 | ||
1907 | static void | 1863 | static void |
@@ -1911,8 +1867,8 @@ encode_layoutget(struct xdr_stream *xdr, | |||
1911 | { | 1867 | { |
1912 | __be32 *p; | 1868 | __be32 *p; |
1913 | 1869 | ||
1914 | p = reserve_space(xdr, 40); | 1870 | encode_op_hdr(xdr, OP_LAYOUTGET, decode_layoutget_maxsz, hdr); |
1915 | *p++ = cpu_to_be32(OP_LAYOUTGET); | 1871 | p = reserve_space(xdr, 36); |
1916 | *p++ = cpu_to_be32(0); /* Signal layout available */ | 1872 | *p++ = cpu_to_be32(0); /* Signal layout available */ |
1917 | *p++ = cpu_to_be32(args->type); | 1873 | *p++ = cpu_to_be32(args->type); |
1918 | *p++ = cpu_to_be32(args->range.iomode); | 1874 | *p++ = cpu_to_be32(args->range.iomode); |
@@ -1920,8 +1876,7 @@ encode_layoutget(struct xdr_stream *xdr, | |||
1920 | p = xdr_encode_hyper(p, args->range.length); | 1876 | p = xdr_encode_hyper(p, args->range.length); |
1921 | p = xdr_encode_hyper(p, args->minlength); | 1877 | p = xdr_encode_hyper(p, args->minlength); |
1922 | encode_nfs4_stateid(xdr, &args->stateid); | 1878 | encode_nfs4_stateid(xdr, &args->stateid); |
1923 | p = reserve_space(xdr, 4); | 1879 | encode_uint32(xdr, args->maxcount); |
1924 | *p = cpu_to_be32(args->maxcount); | ||
1925 | 1880 | ||
1926 | dprintk("%s: 1st type:0x%x iomode:%d off:%lu len:%lu mc:%d\n", | 1881 | dprintk("%s: 1st type:0x%x iomode:%d off:%lu len:%lu mc:%d\n", |
1927 | __func__, | 1882 | __func__, |
@@ -1930,8 +1885,6 @@ encode_layoutget(struct xdr_stream *xdr, | |||
1930 | (unsigned long)args->range.offset, | 1885 | (unsigned long)args->range.offset, |
1931 | (unsigned long)args->range.length, | 1886 | (unsigned long)args->range.length, |
1932 | args->maxcount); | 1887 | args->maxcount); |
1933 | hdr->nops++; | ||
1934 | hdr->replen += decode_layoutget_maxsz; | ||
1935 | } | 1888 | } |
1936 | 1889 | ||
1937 | static int | 1890 | static int |
@@ -1945,8 +1898,8 @@ encode_layoutcommit(struct xdr_stream *xdr, | |||
1945 | dprintk("%s: lbw: %llu type: %d\n", __func__, args->lastbytewritten, | 1898 | dprintk("%s: lbw: %llu type: %d\n", __func__, args->lastbytewritten, |
1946 | NFS_SERVER(args->inode)->pnfs_curr_ld->id); | 1899 | NFS_SERVER(args->inode)->pnfs_curr_ld->id); |
1947 | 1900 | ||
1948 | p = reserve_space(xdr, 24); | 1901 | encode_op_hdr(xdr, OP_LAYOUTCOMMIT, decode_layoutcommit_maxsz, hdr); |
1949 | *p++ = cpu_to_be32(OP_LAYOUTCOMMIT); | 1902 | p = reserve_space(xdr, 20); |
1950 | /* Only whole file layouts */ | 1903 | /* Only whole file layouts */ |
1951 | p = xdr_encode_hyper(p, 0); /* offset */ | 1904 | p = xdr_encode_hyper(p, 0); /* offset */ |
1952 | p = xdr_encode_hyper(p, args->lastbytewritten + 1); /* length */ | 1905 | p = xdr_encode_hyper(p, args->lastbytewritten + 1); /* length */ |
@@ -1961,13 +1914,9 @@ encode_layoutcommit(struct xdr_stream *xdr, | |||
1961 | if (NFS_SERVER(inode)->pnfs_curr_ld->encode_layoutcommit) | 1914 | if (NFS_SERVER(inode)->pnfs_curr_ld->encode_layoutcommit) |
1962 | NFS_SERVER(inode)->pnfs_curr_ld->encode_layoutcommit( | 1915 | NFS_SERVER(inode)->pnfs_curr_ld->encode_layoutcommit( |
1963 | NFS_I(inode)->layout, xdr, args); | 1916 | NFS_I(inode)->layout, xdr, args); |
1964 | else { | 1917 | else |
1965 | p = reserve_space(xdr, 4); | 1918 | encode_uint32(xdr, 0); /* no layout-type payload */ |
1966 | *p = cpu_to_be32(0); /* no layout-type payload */ | ||
1967 | } | ||
1968 | 1919 | ||
1969 | hdr->nops++; | ||
1970 | hdr->replen += decode_layoutcommit_maxsz; | ||
1971 | return 0; | 1920 | return 0; |
1972 | } | 1921 | } |
1973 | 1922 | ||
@@ -1978,8 +1927,8 @@ encode_layoutreturn(struct xdr_stream *xdr, | |||
1978 | { | 1927 | { |
1979 | __be32 *p; | 1928 | __be32 *p; |
1980 | 1929 | ||
1981 | p = reserve_space(xdr, 20); | 1930 | encode_op_hdr(xdr, OP_LAYOUTRETURN, decode_layoutreturn_maxsz, hdr); |
1982 | *p++ = cpu_to_be32(OP_LAYOUTRETURN); | 1931 | p = reserve_space(xdr, 16); |
1983 | *p++ = cpu_to_be32(0); /* reclaim. always 0 for now */ | 1932 | *p++ = cpu_to_be32(0); /* reclaim. always 0 for now */ |
1984 | *p++ = cpu_to_be32(args->layout_type); | 1933 | *p++ = cpu_to_be32(args->layout_type); |
1985 | *p++ = cpu_to_be32(IOMODE_ANY); | 1934 | *p++ = cpu_to_be32(IOMODE_ANY); |
@@ -1993,12 +1942,8 @@ encode_layoutreturn(struct xdr_stream *xdr, | |||
1993 | if (NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn) { | 1942 | if (NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn) { |
1994 | NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn( | 1943 | NFS_SERVER(args->inode)->pnfs_curr_ld->encode_layoutreturn( |
1995 | NFS_I(args->inode)->layout, xdr, args); | 1944 | NFS_I(args->inode)->layout, xdr, args); |
1996 | } else { | 1945 | } else |
1997 | p = reserve_space(xdr, 4); | 1946 | encode_uint32(xdr, 0); |
1998 | *p = cpu_to_be32(0); | ||
1999 | } | ||
2000 | hdr->nops++; | ||
2001 | hdr->replen += decode_layoutreturn_maxsz; | ||
2002 | } | 1947 | } |
2003 | 1948 | ||
2004 | static int | 1949 | static int |
@@ -2006,12 +1951,8 @@ encode_secinfo_no_name(struct xdr_stream *xdr, | |||
2006 | const struct nfs41_secinfo_no_name_args *args, | 1951 | const struct nfs41_secinfo_no_name_args *args, |
2007 | struct compound_hdr *hdr) | 1952 | struct compound_hdr *hdr) |
2008 | { | 1953 | { |
2009 | __be32 *p; | 1954 | encode_op_hdr(xdr, OP_SECINFO_NO_NAME, decode_secinfo_no_name_maxsz, hdr); |
2010 | p = reserve_space(xdr, 8); | 1955 | encode_uint32(xdr, args->style); |
2011 | *p++ = cpu_to_be32(OP_SECINFO_NO_NAME); | ||
2012 | *p++ = cpu_to_be32(args->style); | ||
2013 | hdr->nops++; | ||
2014 | hdr->replen += decode_secinfo_no_name_maxsz; | ||
2015 | return 0; | 1956 | return 0; |
2016 | } | 1957 | } |
2017 | 1958 | ||
@@ -2019,14 +1960,9 @@ static void encode_test_stateid(struct xdr_stream *xdr, | |||
2019 | struct nfs41_test_stateid_args *args, | 1960 | struct nfs41_test_stateid_args *args, |
2020 | struct compound_hdr *hdr) | 1961 | struct compound_hdr *hdr) |
2021 | { | 1962 | { |
2022 | __be32 *p; | 1963 | encode_op_hdr(xdr, OP_TEST_STATEID, decode_test_stateid_maxsz, hdr); |
2023 | 1964 | encode_uint32(xdr, 1); | |
2024 | p = reserve_space(xdr, 8); | ||
2025 | *p++ = cpu_to_be32(OP_TEST_STATEID); | ||
2026 | *p = cpu_to_be32(1); | ||
2027 | encode_nfs4_stateid(xdr, args->stateid); | 1965 | encode_nfs4_stateid(xdr, args->stateid); |
2028 | hdr->nops++; | ||
2029 | hdr->replen += decode_test_stateid_maxsz; | ||
2030 | } | 1966 | } |
2031 | 1967 | ||
2032 | static void encode_free_stateid(struct xdr_stream *xdr, | 1968 | static void encode_free_stateid(struct xdr_stream *xdr, |