From: Alex Zhuravlev Date: Tue, 2 Oct 2018 14:07:36 +0000 (+0300) Subject: LU-11456 mdt: mdt_object_sync() can skip sync X-Git-Tag: 2.12.57~58 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=2291c21d174ac0a88f2c3b0551362079c963df16;p=fs%2Flustre-release.git LU-11456 mdt: mdt_object_sync() can skip sync if object's version is found committed. OST implements this logic yet. Change-Id: I17a05c0202bba3f97f80b165d6a3c9c2aff01996 Signed-off-by: Alex Zhuravlev Reviewed-on: https://review.whamcloud.com/33266 Reviewed-by: Andreas Dilger Tested-by: jenkins Tested-by: Maloo Reviewed-by: Mike Pershin Reviewed-by: Oleg Drokin --- diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index fd323bf..5386503 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -2547,7 +2547,7 @@ int mdt_device_sync(const struct lu_env *env, struct mdt_device *mdt) static int mdt_object_sync(const struct lu_env *env, struct obd_export *exp, struct mdt_object *mo) { - int rc; + int rc = 0; ENTRY; @@ -2558,7 +2558,16 @@ static int mdt_object_sync(const struct lu_env *env, struct obd_export *exp, RETURN(-ESTALE); } - rc = mo_object_sync(env, mdt_object_child(mo)); + if (S_ISREG(lu_object_attr(&mo->mot_obj))) { + struct lu_target *tgt = tgt_ses_info(env)->tsi_tgt; + dt_obj_version_t version; + + version = dt_version_get(env, mdt_obj2dt(mo)); + if (version > tgt->lut_obd->obd_last_committed) + rc = mo_object_sync(env, mdt_object_child(mo)); + } else { + rc = mo_object_sync(env, mdt_object_child(mo)); + } RETURN(rc); }