Whamcloud - gitweb
LU-3268 lod: return root LOV EA in little-endian 85/6285/2
authorJohn L. Hammond <john.hammond@intel.com>
Wed, 8 May 2013 02:46:39 +0000 (21:46 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Sat, 13 Jul 2013 03:16:46 +0000 (03:16 +0000)
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 <john.hammond@intel.com>
Change-Id: Id76da869e14ff71b8af21fe2b1d66abd54da0a2d
Reviewed-on: http://review.whamcloud.com/6285
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Li Wei <wei.g.li@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lod/lod_object.c

index e3180e2..b237401 100644 (file)
@@ -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;
                }