Whamcloud - gitweb
LU-4423 libcfs: use 64-bit inode timestamps internally
[fs/lustre-release.git] / lustre / obdclass / local_storage.c
index 463da93..ffcf104 100644 (file)
@@ -20,7 +20,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright (c) 2012, 2014, Intel Corporation.
+ * Copyright (c) 2012, 2015, Intel Corporation.
  */
 /*
  * lustre/obdclass/local_storage.c
@@ -339,7 +339,7 @@ static struct dt_object *__local_file_create(const struct lu_env *env,
        }
 
        rec->rec_fid = fid;
-       rec->rec_type = dto->do_lu.lo_header->loh_attr;
+       rec->rec_type = attr->la_mode & S_IFMT;
        rc = dt_declare_insert(env, parent, (const struct dt_rec *)rec,
                               (const struct dt_key *)name, th);
        if (rc)
@@ -349,11 +349,14 @@ static struct dt_object *__local_file_create(const struct lu_env *env,
                if (!dt_try_as_dir(env, dto))
                        GOTO(trans_stop, rc = -ENOTDIR);
 
+               rec->rec_type = S_IFDIR;
+               rec->rec_fid = fid;
                rc = dt_declare_insert(env, dto, (const struct dt_rec *)rec,
                                (const struct dt_key *)".", th);
                if (rc != 0)
                        GOTO(trans_stop, rc);
 
+               rec->rec_fid = lu_object_fid(&parent->do_lu);
                rc = dt_declare_insert(env, dto, (const struct dt_rec *)rec,
                                (const struct dt_key *)"..", th);
                if (rc != 0)
@@ -368,7 +371,7 @@ static struct dt_object *__local_file_create(const struct lu_env *env,
        if (rc)
                GOTO(trans_stop, rc);
 
-       dt_write_lock(env, dto, 0);
+       dt_write_lock(env, dto, LOS_CHILD);
        if (dt_object_exists(dto))
                GOTO(unlock, rc = 0);
 
@@ -399,7 +402,7 @@ static struct dt_object *__local_file_create(const struct lu_env *env,
 
        rec->rec_fid = fid;
        rec->rec_type = dto->do_lu.lo_header->loh_attr;
-       dt_write_lock(env, parent, 0);
+       dt_write_lock(env, parent, LOS_PARENT);
        rc = dt_insert(env, parent, (const struct dt_rec *)rec,
                       (const struct dt_key *)name, th, 1);
        if (dti->dti_dof.dof_type == DFT_DIR)
@@ -728,7 +731,7 @@ static int lastid_compat_check(const struct lu_env *env, struct dt_device *dev,
                return PTR_ERR(root);
 
        /* find old last_id file */
-       snprintf(dti->dti_buf, sizeof(dti->dti_buf), "seq-"LPX64"-lastid",
+       snprintf(dti->dti_buf, sizeof(dti->dti_buf), "seq-%#llx-lastid",
                 lastid_seq);
        rc = dt_lookup_dir(env, root, dti->dti_buf, &dti->dti_fid);
        lu_object_put_nocache(env, &root->do_lu);
@@ -751,7 +754,7 @@ static int lastid_compat_check(const struct lu_env *env, struct dt_device *dev,
        } else if (rc < 0) {
                return rc;
        } else {
-               CDEBUG(D_INFO, "Found old lastid file for sequence "LPX64"\n",
+               CDEBUG(D_INFO, "Found old lastid file for sequence %#llx\n",
                       lastid_seq);
                o = ls_locate(env, ls, &dti->dti_fid, NULL);
                if (IS_ERR(o))
@@ -766,12 +769,12 @@ static int lastid_compat_check(const struct lu_env *env, struct dt_device *dev,
        rc = dt_record_read(env, o, &dti->dti_lb, &dti->dti_off);
        dt_read_unlock(env, o);
        if (rc == 0 && le32_to_cpu(losd.lso_magic) != LOS_MAGIC) {
-               CERROR("%s: wrong content of seq-"LPX64"-lastid file, magic %x\n",
+               CERROR("%s: wrong content of seq-%#llx-lastid file, magic %x\n",
                       o->do_lu.lo_dev->ld_obd->obd_name, lastid_seq,
                       le32_to_cpu(losd.lso_magic));
                rc = -EINVAL;
        } else if (rc < 0) {
-               CERROR("%s: failed to read seq-"LPX64"-lastid: rc = %d\n",
+               CERROR("%s: failed to read seq-%#llx-lastid: rc = %d\n",
                       o->do_lu.lo_dev->ld_obd->obd_name, lastid_seq, rc);
        }
        lu_object_put_nocache(env, &o->do_lu);
@@ -898,7 +901,7 @@ out_trans:
                rc = dt_record_read(env, o, &dti->dti_lb, &dti->dti_off);
                dt_read_unlock(env, o);
                if (rc == 0 && le64_to_cpu(lastid) > OBIF_MAX_OID) {
-                       CERROR("%s: bad oid "LPU64" is read from LAST_ID\n",
+                       CERROR("%s: bad oid %llu is read from LAST_ID\n",
                               o->do_lu.lo_dev->ld_obd->obd_name,
                               le64_to_cpu(lastid));
                        rc = -EINVAL;