X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_dir.c;h=2a8fd652831f351a4b6674d900a4079f4fb3f9ae;hp=c28c0680d73f60e6eee4096d1a2a01324d71a78a;hb=040179b84330689b1b2cd128dcdd711bfc8f0b4e;hpb=9a01e2b52ecec9dfd33068fe75afeaf102046091 diff --git a/lustre/mdd/mdd_dir.c b/lustre/mdd/mdd_dir.c index c28c068..2a8fd65 100644 --- a/lustre/mdd/mdd_dir.c +++ b/lustre/mdd/mdd_dir.c @@ -1193,6 +1193,7 @@ static int mdd_declare_link(const struct lu_env *env, struct mdd_object *c, const struct lu_name *name, struct thandle *handle, + struct lu_attr *la, struct linkea_data *data) { int rc; @@ -1205,11 +1206,13 @@ static int mdd_declare_link(const struct lu_env *env, if (rc) return rc; - rc = mdo_declare_attr_set(env, p, NULL, handle); - if (rc) - return rc; + la->la_valid = LA_CTIME | LA_MTIME; + rc = mdo_declare_attr_set(env, p, la, handle); + if (rc != 0) + return rc; - rc = mdo_declare_attr_set(env, c, NULL, handle); + la->la_valid = LA_CTIME; + rc = mdo_declare_attr_set(env, c, la, handle); if (rc) return rc; @@ -1243,8 +1246,11 @@ static int mdd_link(const struct lu_env *env, struct md_object *tgt_obj, memset(ldata, 0, sizeof(*ldata)); + LASSERT(ma->ma_attr.la_valid & LA_CTIME); + la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime; + rc = mdd_declare_link(env, mdd, mdd_tobj, mdd_sobj, lname, handle, - ldata); + la, ldata); if (rc) GOTO(stop, rc); @@ -1274,9 +1280,6 @@ static int mdd_link(const struct lu_env *env, struct md_object *tgt_obj, GOTO(out_unlock, rc); } - LASSERT(ma->ma_attr.la_valid & LA_CTIME); - la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime; - la->la_valid = LA_CTIME | LA_MTIME; rc = mdd_attr_check_set_internal(env, mdd_tobj, la, handle, 0); if (rc) @@ -1412,7 +1415,8 @@ static int mdd_declare_unlink(const struct lu_env *env, struct mdd_device *mdd, if (rc) return rc; - rc = mdo_declare_attr_set(env, c, NULL, handle); + la->la_valid = LA_CTIME; + rc = mdo_declare_attr_set(env, c, la, handle); if (rc) return rc; @@ -2390,6 +2394,9 @@ static int mdd_declare_rename(const struct lu_env *env, struct lu_attr *la = &mdd_env_info(env)->mti_la_for_fix; int rc; + LASSERT(ma->ma_attr.la_valid & LA_CTIME); + la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime; + LASSERT(mdd_spobj); LASSERT(mdd_tpobj); LASSERT(mdd_sobj); @@ -2426,13 +2433,16 @@ static int mdd_declare_rename(const struct lu_env *env, } - rc = mdo_declare_attr_set(env, mdd_spobj, NULL, handle); - if (rc) - return rc; - - LASSERT(ma->ma_attr.la_valid & LA_CTIME); - la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime; la->la_valid = LA_CTIME | LA_MTIME; + rc = mdo_declare_attr_set(env, mdd_spobj, la, handle); + if (rc != 0) + return rc; + + rc = mdo_declare_attr_set(env, mdd_tpobj, la, handle); + if (rc != 0) + return rc; + + la->la_valid = LA_CTIME; rc = mdo_declare_attr_set(env, mdd_sobj, la, handle); if (rc) return rc; @@ -2441,10 +2451,6 @@ static int mdd_declare_rename(const struct lu_env *env, if (rc) return rc; - rc = mdo_declare_attr_set(env, mdd_tpobj, NULL, handle); - if (rc) - return rc; - /* new name */ rc = mdo_declare_index_insert(env, mdd_tpobj, mdo2fid(mdd_sobj), tname->ln_name, handle); @@ -2477,7 +2483,8 @@ static int mdd_declare_rename(const struct lu_env *env, return rc; } - rc = mdo_declare_attr_set(env, mdd_tobj, NULL, handle); + la->la_valid = LA_CTIME; + rc = mdo_declare_attr_set(env, mdd_tobj, la, handle); if (rc) return rc;