X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_object.c;h=49e8f6664e50d1e7f923380bbc22049c3699116b;hp=aa9a5cd2149beeba0b85abf05a4442ad4a119746;hb=5e33ff74888e3f4997d5908d14eb92d7ec6f49b8;hpb=8eaf21f9a9a6264598b9fed93b2c5d423b00bd9a diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index aa9a5cd..49e8f66 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -504,7 +504,7 @@ static int mdd_path_current(const struct lu_env *env, PFID(&pli->pli_fid)); GOTO(out, rc = -EAGAIN); } - + ptr++; /* skip leading / */ memmove(pli->pli_path, ptr, pli->pli_path + pli->pli_pathlen - ptr); EXIT; @@ -535,8 +535,7 @@ static int mdd_path(const struct lu_env *env, struct md_object *obj, RETURN(-EOVERFLOW); if (mdd_is_root(mdo2mdd(obj), mdd_object_fid(md2mdd_obj(obj)))) { - path[0] = '/'; - path[1] = '\0'; + path[0] = '\0'; RETURN(0); } @@ -616,12 +615,15 @@ int mdd_get_default_md(struct mdd_object *mdd_obj, struct lov_mds_md *lmm, ldesc = &mdd->mdd_obd_dev->u.mds.mds_lov_desc; LASSERT(ldesc != NULL); + LASSERT(size != NULL); - if (!lmm) + if (!lmm) { + *size = 0; RETURN(0); + } lmm->lmm_magic = LOV_MAGIC_V1; - lmm->lmm_object_gr = LOV_OBJECT_GROUP_DEFAULT; + lmm->lmm_object_seq = LOV_OBJECT_GROUP_DEFAULT; lmm->lmm_pattern = ldesc->ld_pattern; lmm->lmm_stripe_size = ldesc->ld_default_stripe_size; lmm->lmm_stripe_count = ldesc->ld_default_stripe_count; @@ -642,12 +644,9 @@ static int __mdd_lmm_get(const struct lu_env *env, rc = mdd_get_md(env, mdd_obj, ma->ma_lmm, &ma->ma_lmm_size, XATTR_NAME_LOV); - - if (rc == 0 && (ma->ma_need & MA_LOV_DEF)) { + if (rc == 0 && ma->ma_need & MA_LOV_DEF) rc = mdd_get_default_md(mdd_obj, ma->ma_lmm, - &ma->ma_lmm_size); - } - + &ma->ma_lmm_size); if (rc > 0) { ma->ma_valid |= MA_LOV; rc = 0; @@ -1250,7 +1249,7 @@ static int mdd_changelog_data_store(const struct lu_env *env, LASSERT(handle != NULL); LASSERT(mdd_obj != NULL); - if ((type == CL_SETATTR) && + if ((type == CL_TIME) && cfs_time_before_64(mdd->mdd_cl.mc_starttime, mdd_obj->mod_cltime)) { /* Don't need multiple updates in this log */ /* Don't check under lock - no big deal if we get an extra @@ -1481,9 +1480,12 @@ static int mdd_attr_set(const struct lu_env *env, struct md_object *obj, } cleanup: - if ((rc == 0) && (ma->ma_attr.la_valid & (LA_MTIME | LA_CTIME))) - rc = mdd_changelog_data_store(env, mdd, CL_SETATTR, mdd_obj, - handle); + if (rc == 0) + rc = mdd_changelog_data_store(env, mdd, + (ma->ma_attr.la_valid & + ~(LA_MTIME|LA_CTIME|LA_ATIME)) ? + CL_SETATTR : CL_TIME, + mdd_obj, handle); mdd_trans_stop(env, mdd, rc, handle); if (rc == 0 && (lmm != NULL && lmm_size > 0 )) { /*set obd attr, if needed*/