-int mdd_attr_set_internal(const struct lu_env *env, struct mdd_object *obj,
- const struct lu_attr *attr, struct thandle *handle,
- const int needacl)
+ if (attr->la_valid & LA_CTIME) {
+ rc = mdd_la_get(env, obj, tmp_la, BYPASS_CAPA);
+ if (rc)
+ RETURN(rc);
+
+ if (attr->la_ctime < tmp_la->la_ctime)
+ attr->la_valid &= ~(LA_MTIME | LA_CTIME);
+ else if (attr->la_valid == LA_CTIME &&
+ attr->la_ctime == tmp_la->la_ctime)
+ attr->la_valid &= ~LA_CTIME;
+ }
+ RETURN(0);
+}
+
+int mdd_attr_set_internal(const struct lu_env *env,
+ struct mdd_object *obj,
+ struct lu_attr *attr,
+ struct thandle *handle,
+ int needacl)