X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flod%2Flod_object.c;h=6179e4db7db08ec6e52f13eb42e26ef0b6b86b46;hp=e3180e234bd1d7c64fa88c9272707cffa503b11c;hb=da12d3ba35bbb86c8e5860a5ed161a55f01b69d5;hpb=11db1a551172f596d1d284e8496530f9ce24ac81 diff --git a/lustre/lod/lod_object.c b/lustre/lod/lod_object.c index e3180e2..6179e4d 100644 --- a/lustre/lod/lod_object.c +++ b/lustre/lod/lod_object.c @@ -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) {