Whamcloud - gitweb
LU-1876 hsm: revise ll_setattr_raw to not check stripe data
[fs/lustre-release.git] / lustre / osp / osp_object.c
index 695a31e..3c59035 100644 (file)
@@ -94,7 +94,8 @@ static int osp_declare_attr_set(const struct lu_env *env, struct dt_object *dt,
        if (attr == NULL)
                RETURN(0);
 
-       if (attr->la_valid & LA_SIZE && attr->la_size > 0) {
+       if (attr->la_valid & LA_SIZE && attr->la_size > 0 &&
+           fid_is_zero(lu_object_fid(&o->opo_obj.do_lu))) {
                LASSERT(!dt_object_exists(dt));
                osp_object_assign_fid(env, d, o);
                rc = osp_object_truncate(env, dt, attr->la_size);
@@ -369,16 +370,14 @@ static int osp_object_init(const struct lu_env *env, struct lu_object *o,
 
                po->opo_obj.do_ops = &osp_md_obj_ops;
                o->lo_header->loh_attr |= LOHA_REMOTE;
-               /* Do not need get attr for new object */
-               if (!(conf != NULL && (conf->loc_flags & LOC_F_NEW) != 0)) {
-                       rc = po->opo_obj.do_ops->do_attr_get(env, lu2dt_obj(o),
-                                                            la, NULL);
-                       if (rc == 0)
-                               o->lo_header->loh_attr |=
-                                       LOHA_EXISTS | (la->la_mode & S_IFMT);
-                       if (rc == -ENOENT)
-                               rc = 0;
-               }
+               po->opo_obj.do_lock_ops = &osp_md_lock_ops;
+               rc = po->opo_obj.do_ops->do_attr_get(env, lu2dt_obj(o),
+                                                    la, NULL);
+               if (rc == 0)
+                       o->lo_header->loh_attr |=
+                               LOHA_EXISTS | (la->la_mode & S_IFMT);
+               if (rc == -ENOENT)
+                       rc = 0;
        }
        RETURN(rc);
 }