Whamcloud - gitweb
LU-3569 ofd: packing ost_idx in IDIF
[fs/lustre-release.git] / lustre / lod / lod_object.c
index e3180e2..6179e4d 100644 (file)
@@ -387,15 +387,20 @@ 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_set_id(&lum->lmm_oi, 0);
+                       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;
                }
@@ -479,8 +484,7 @@ static int lod_xattr_set_lov_on_dir(const struct lu_env *env,
        l->ldo_def_stripe_size = 0;
        l->ldo_def_stripenr = 0;
 
-       LASSERT(buf);
-       LASSERT(buf->lb_buf);
+       LASSERT(buf != NULL && buf->lb_buf != NULL);
        lum = buf->lb_buf;
 
        rc = lod_verify_striping(d, buf, 0);
@@ -674,7 +678,7 @@ static void lod_ah_init(const struct lu_env *env,
                        struct dt_allocation_hint *ah,
                        struct dt_object *parent,
                        struct dt_object *child,
-                       cfs_umode_t child_mode)
+                       umode_t child_mode)
 {
        struct lod_device *d = lu2lod_dev(child->do_lu.lo_dev);
        struct dt_object  *nextp = NULL;
@@ -703,7 +707,8 @@ static void lod_ah_init(const struct lu_env *env,
         * can be called with local object existing
         */
        if (!dt_object_exists(nextc) || dt_object_remote(nextc))
-               nextc->do_ops->do_ah_init(env, ah, nextp, nextc, child_mode);
+               nextc->do_ops->do_ah_init(env, ah, dt_object_remote(nextp) ?
+                                         NULL : nextp, nextc, child_mode);
 
        if (S_ISDIR(child_mode)) {
                if (lp->ldo_striping_cached == 0) {