Whamcloud - gitweb
LU-5977 ofd: Removed correction for bad timestamps
[fs/lustre-release.git] / lustre / ofd / ofd_objects.c
index 245b5d8..32f7694 100644 (file)
@@ -60,8 +60,8 @@
  * \retval             0 if version matches
  * \retval             -EOVERFLOW on version mismatch
  */
-int ofd_version_get_check(struct ofd_thread_info *info,
-                         struct ofd_object *fo)
+static int ofd_version_get_check(struct ofd_thread_info *info,
+                                struct ofd_object *fo)
 {
        dt_obj_version_t curr_version;
 
@@ -148,8 +148,7 @@ int ofd_object_ff_load(const struct lu_env *env, struct ofd_object *fo)
 
        buf->lb_buf = ff;
        buf->lb_len = sizeof(*ff);
-       rc = dt_xattr_get(env, ofd_object_child(fo), buf, XATTR_NAME_FID,
-                         BYPASS_CAPA);
+       rc = dt_xattr_get(env, ofd_object_child(fo), buf, XATTR_NAME_FID);
        if (rc < 0)
                return rc;
 
@@ -205,7 +204,7 @@ void ofd_object_put(const struct lu_env *env, struct ofd_object *fo)
  * \retval             negative value on error
  */
 int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd,
-                         obd_id id, struct ofd_seq *oseq, int nr, int sync)
+                         u64 id, struct ofd_seq *oseq, int nr, int sync)
 {
        struct ofd_thread_info  *info = ofd_info(env);
        struct ofd_object       *fo = NULL;
@@ -213,7 +212,7 @@ int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd,
        struct thandle          *th;
        struct ofd_object       **batch;
        struct lu_fid           *fid = &info->fti_fid;
-       obd_id                   tmp;
+       u64                      tmp;
        int                      rc;
        int                      i;
        int                      objects = 0;
@@ -350,10 +349,12 @@ int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd,
 
                /* Only the new created objects need to be recorded. */
                if (ofd->ofd_osd->dd_record_fid_accessed) {
-                       lfsck_pack_rfa(&ofd_info(env)->fti_lr,
-                                      lu_object_fid(&fo->ofo_obj.do_lu));
-                       lfsck_in_notify(env, ofd->ofd_osd,
-                                       &ofd_info(env)->fti_lr);
+                       struct lfsck_request *lr = &ofd_info(env)->fti_lr;
+
+                       lfsck_pack_rfa(lr, lu_object_fid(&fo->ofo_obj.do_lu),
+                                      LE_FID_ACCESSED,
+                                      LFSCK_TYPE_LAYOUT);
+                       lfsck_in_notify(env, ofd->ofd_osd, lr, NULL);
                }
 
                if (likely(!ofd_object_exists(fo) &&
@@ -443,7 +444,7 @@ int ofd_attr_handle_ugid(const struct lu_env *env, struct ofd_object *fo,
        if (!(la->la_valid & LA_UID) && !(la->la_valid & LA_GID))
                RETURN(0);
 
-       rc = dt_attr_get(env, ofd_object_child(fo), ln, BYPASS_CAPA);
+       rc = dt_attr_get(env, ofd_object_child(fo), ln);
        if (rc != 0)
                RETURN(rc);
 
@@ -548,14 +549,13 @@ int ofd_attr_set(const struct lu_env *env, struct ofd_object *fo,
        if (rc)
                GOTO(stop, rc);
 
-       rc = dt_attr_set(env, ofd_object_child(fo), la, th,
-                        ofd_object_capa(env, fo));
+       rc = dt_attr_set(env, ofd_object_child(fo), la, th);
        if (rc)
                GOTO(stop, rc);
 
        if (ff_needed) {
                rc = dt_xattr_set(env, ofd_object_child(fo), &info->fti_buf,
-                                 XATTR_NAME_FID, 0, th, BYPASS_CAPA);
+                                 XATTR_NAME_FID, 0, th);
                if (rc == 0) {
                        fo->ofo_pfid.f_seq = le64_to_cpu(ff->ff_parent.f_seq);
                        fo->ofo_pfid.f_oid = le32_to_cpu(ff->ff_parent.f_oid);
@@ -614,12 +614,12 @@ int ofd_object_punch(const struct lu_env *env, struct ofd_object *fo,
        /* we support truncate, not punch yet */
        LASSERT(end == OBD_OBJECT_EOF);
 
+       ofd_write_lock(env, fo);
        fmd = ofd_fmd_get(info->fti_exp, &fo->ofo_header.loh_fid);
        if (fmd && fmd->fmd_mactime_xid < info->fti_xid)
                fmd->fmd_mactime_xid = info->fti_xid;
        ofd_fmd_put(info->fti_exp, fmd);
 
-       ofd_write_lock(env, fo);
        if (!ofd_object_exists(fo))
                GOTO(unlock, rc = -ENOENT);
 
@@ -672,18 +672,17 @@ int ofd_object_punch(const struct lu_env *env, struct ofd_object *fo,
        if (rc)
                GOTO(stop, rc);
 
-       rc = dt_punch(env, dob, start, OBD_OBJECT_EOF, th,
-                     ofd_object_capa(env, fo));
+       rc = dt_punch(env, dob, start, OBD_OBJECT_EOF, th);
        if (rc)
                GOTO(stop, rc);
 
-       rc = dt_attr_set(env, dob, la, th, ofd_object_capa(env, fo));
+       rc = dt_attr_set(env, dob, la, th);
        if (rc)
                GOTO(stop, rc);
 
        if (ff_needed) {
                rc = dt_xattr_set(env, ofd_object_child(fo), &info->fti_buf,
-                                 XATTR_NAME_FID, 0, th, BYPASS_CAPA);
+                                 XATTR_NAME_FID, 0, th);
                if (rc == 0) {
                        fo->ofo_pfid.f_seq = le64_to_cpu(ff->ff_parent.f_seq);
                        fo->ofo_pfid.f_oid = le32_to_cpu(ff->ff_parent.f_oid);
@@ -737,8 +736,14 @@ int ofd_object_destroy(const struct lu_env *env, struct ofd_object *fo,
        if (IS_ERR(th))
                GOTO(unlock, rc = PTR_ERR(th));
 
-       dt_declare_ref_del(env, ofd_object_child(fo), th);
-       dt_declare_destroy(env, ofd_object_child(fo), th);
+       rc = dt_declare_ref_del(env, ofd_object_child(fo), th);
+       if (rc < 0)
+               GOTO(stop, rc);
+
+       rc = dt_declare_destroy(env, ofd_object_child(fo), th);
+       if (rc < 0)
+               GOTO(stop, rc);
+
        if (orphan)
                rc = dt_trans_start_local(env, ofd->ofd_osd, th);
        else
@@ -778,23 +783,7 @@ int ofd_attr_get(const struct lu_env *env, struct ofd_object *fo,
        ENTRY;
 
        if (ofd_object_exists(fo)) {
-               rc = dt_attr_get(env, ofd_object_child(fo), la,
-                                ofd_object_capa(env, fo));
-
-#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 7, 53, 0)
-               /* Try to correct for a bug in 2.1.0 (LU-221) that caused
-                * negative timestamps to appear to be in the far future,
-                * due old timestamp being stored on disk as an unsigned value.
-                * This fixes up any bad values stored on disk before
-                * returning them to the client, and ensures any timestamp
-                * updates are correct.  LU-1042 */
-               if (unlikely(la->la_atime == LU221_BAD_TIME))
-                       la->la_atime = 0;
-               if (unlikely(la->la_mtime == LU221_BAD_TIME))
-                       la->la_mtime = 0;
-               if (unlikely(la->la_ctime == LU221_BAD_TIME))
-                       la->la_ctime = 0;
-#endif
+               rc = dt_attr_get(env, ofd_object_child(fo), la);
        } else {
                rc = -ENOENT;
        }