* \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;
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;
* \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;
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;
/* 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) &&
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);
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);
/* 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);
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);
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
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;
}