Whamcloud - gitweb
LU-11456 mdt: mdt_object_sync() can skip sync 66/33266/14
authorAlex Zhuravlev <bzzz@whamcloud.com>
Tue, 2 Oct 2018 14:07:36 +0000 (17:07 +0300)
committerOleg Drokin <green@whamcloud.com>
Fri, 9 Aug 2019 04:39:52 +0000 (04:39 +0000)
if object's version is found committed. OST implements this logic yet.

Change-Id: I17a05c0202bba3f97f80b165d6a3c9c2aff01996
Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/33266
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/mdt/mdt_handler.c

index fd323bf..5386503 100644 (file)
@@ -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);
 }