From 4a1f10ef775b2b1a4631ee2f12bff3330b941e45 Mon Sep 17 00:00:00 2001 From: "John L. Hammond" Date: Tue, 7 May 2013 21:46:39 -0500 Subject: [PATCH] LU-3268 lod: return root LOV EA in little-endian In lod_xattr_get() when constructing LOV EA to return for the filesystem root, store members in little-endian byte order for consistency with EAs from disk. Signed-off-by: John L. Hammond Change-Id: Id76da869e14ff71b8af21fe2b1d66abd54da0a2d Reviewed-on: http://review.whamcloud.com/6285 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Li Wei Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- lustre/lod/lod_object.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lustre/lod/lod_object.c b/lustre/lod/lod_object.c index e3180e2..b237401 100644 --- a/lustre/lod/lod_object.c +++ b/lustre/lod/lod_object.c @@ -387,15 +387,19 @@ static int lod_xattr_get(const struct lu_env *env, struct dt_object *dt, struct lov_desc *desc = &dev->lod_desc; if (buf->lb_buf == NULL) { - rc = sizeof(struct lov_user_md_v1); - } else if (buf->lb_len >= sizeof(struct lov_user_md_v1)) { - lum->lmm_magic = LOV_USER_MAGIC_V1; + rc = sizeof(*lum); + } else if (buf->lb_len >= sizeof(*lum)) { + lum->lmm_magic = cpu_to_le32(LOV_USER_MAGIC_V1); lmm_oi_set_seq(&lum->lmm_oi, FID_SEQ_LOV_DEFAULT); - lum->lmm_pattern = desc->ld_pattern; - lum->lmm_stripe_size = desc->ld_default_stripe_size; - lum->lmm_stripe_count = desc->ld_default_stripe_count; - lum->lmm_stripe_offset = desc->ld_default_stripe_offset; - rc = sizeof(struct lov_user_md_v1); + lmm_oi_cpu_to_le(&lum->lmm_oi, &lum->lmm_oi); + lum->lmm_pattern = cpu_to_le32(desc->ld_pattern); + lum->lmm_stripe_size = cpu_to_le32( + desc->ld_default_stripe_size); + lum->lmm_stripe_count = cpu_to_le16( + desc->ld_default_stripe_count); + lum->lmm_stripe_offset = cpu_to_le16( + desc->ld_default_stripe_offset); + rc = sizeof(*lum); } else { rc = -ERANGE; } -- 1.8.3.1