@@ -110,7 +110,7 @@ static inline int pnfs_osd_xdr_encode_objid(
* struct pnfs_osd_opaque_cred oc_cap;
* };
*/
-static int pnfs_osd_xdr_encode_object_cred(
+int pnfs_osd_xdr_encode_layout_cred(
struct exp_xdr_stream *xdr,
struct pnfs_osd_object_cred *olo_comp)
{
@@ -136,6 +136,7 @@ static int pnfs_osd_xdr_encode_object_cred(
return 0;
}
+EXPORT_SYMBOL(pnfs_osd_xdr_encode_layout_cred);
/*
* struct pnfs_osd_layout {
@@ -145,12 +146,11 @@ static int pnfs_osd_xdr_encode_object_cred(
* struct pnfs_osd_object_cred *olo_comps;
* };
*/
-int pnfs_osd_xdr_encode_layout(
+int pnfs_osd_xdr_encode_layout_hdr(
struct exp_xdr_stream *xdr,
struct pnfs_osd_layout *pol)
{
__be32 *p;
- u32 i;
int err;
err = pnfs_osd_xdr_encode_data_map(xdr, &pol->olo_map);
@@ -164,15 +164,9 @@ int pnfs_osd_xdr_encode_layout(
p = exp_xdr_encode_u32(p, pol->olo_comps_index);
p = exp_xdr_encode_u32(p, pol->olo_num_comps);
- for (i = 0; i < pol->olo_num_comps; i++) {
- err = pnfs_osd_xdr_encode_object_cred(xdr, &pol->olo_comps[i]);
- if (err)
- return err;
- }
-
return 0;
}
-EXPORT_SYMBOL(pnfs_osd_xdr_encode_layout);
+EXPORT_SYMBOL(pnfs_osd_xdr_encode_layout_hdr);
static int _encode_string(struct exp_xdr_stream *xdr,
const struct nfs4_string *str)
@@ -217,7 +211,7 @@ int pnfs_osd_xdr_encode_deviceaddr(
if (err)
return err;
- err = pnfs_osd_xdr_encode_object_cred(xdr,
+ err = pnfs_osd_xdr_encode_layout_cred(xdr,
&devaddr->oda_root_obj_cred);
if (err)
return err;
@@ -17,10 +17,14 @@
#include <linux/exp_xdr.h>
/* Layout encoding */
-int pnfs_osd_xdr_encode_layout(
+int pnfs_osd_xdr_encode_layout_hdr(
struct exp_xdr_stream *xdr,
struct pnfs_osd_layout *layout);
+int pnfs_osd_xdr_encode_layout_cred(
+ struct exp_xdr_stream *xdr,
+ struct pnfs_osd_object_cred *cred);
+
/* deviceaddr encoding */
int pnfs_osd_xdr_encode_deviceaddr(
struct exp_xdr_stream *xdr, struct pnfs_osd_deviceaddr *devaddr);
This way there is No need for dynamic allocation of the creds array. TODO: We can now remove the olo_comps pointer from struct pnfs_osd_layout neither the server nor client use it any more. (rename it to pnfs_osd_layout_hdr) Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> --- fs/exportfs/pnfs_osd_xdr_srv.c | 16 +++++----------- include/linux/nfsd/pnfs_osd_xdr_srv.h | 6 +++++- 2 files changed, 10 insertions(+), 12 deletions(-)