From 2291c21d174ac0a88f2c3b0551362079c963df16 Mon Sep 17 00:00:00 2001 From: Alex Zhuravlev Date: Tue, 2 Oct 2018 17:07:36 +0300 Subject: [PATCH] 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 --- lustre/mdt/mdt_handler.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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); } -- 1.8.3.1