if (rc)
RETURN(rc);
+ /* osp_declare_attr_set() ignores all attributes other than
+ * UID, GID, and size, and osp_attr_set() ignores all but UID
+ * and GID. Declaration of size attr setting happens through
+ * lod_declare_init_size(), and not through this function.
+ * Therefore we need not load striping unless ownership is
+ * changing. This should save memory and (we hope) speed up
+ * rename(). */
+ if (!(attr->la_valid & (LA_UID | LA_GID)))
+ RETURN(rc);
+
/*
* load striping information, notice we don't do this when object
* is being initialized as we don't need this information till
if (rc)
RETURN(rc);
+ if (!(attr->la_valid & (LA_UID | LA_GID)))
+ RETURN(rc);
+
/*
* if object is striped, apply changes to all the stripes
*/
struct mdd_object *c,
const struct lu_name *name,
struct thandle *handle,
+ struct lu_attr *la,
struct linkea_data *data)
{
int rc;
if (rc)
return rc;
- rc = mdo_declare_attr_set(env, p, NULL, handle);
- if (rc)
- return rc;
+ la->la_valid = LA_CTIME | LA_MTIME;
+ rc = mdo_declare_attr_set(env, p, la, handle);
+ if (rc != 0)
+ return rc;
- rc = mdo_declare_attr_set(env, c, NULL, handle);
+ la->la_valid = LA_CTIME;
+ rc = mdo_declare_attr_set(env, c, la, handle);
if (rc)
return rc;
memset(ldata, 0, sizeof(*ldata));
+ LASSERT(ma->ma_attr.la_valid & LA_CTIME);
+ la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime;
+
rc = mdd_declare_link(env, mdd, mdd_tobj, mdd_sobj, lname, handle,
- ldata);
+ la, ldata);
if (rc)
GOTO(stop, rc);
GOTO(out_unlock, rc);
}
- LASSERT(ma->ma_attr.la_valid & LA_CTIME);
- la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime;
-
la->la_valid = LA_CTIME | LA_MTIME;
rc = mdd_attr_check_set_internal(env, mdd_tobj, la, handle, 0);
if (rc)
if (rc)
return rc;
- rc = mdo_declare_attr_set(env, c, NULL, handle);
+ la->la_valid = LA_CTIME;
+ rc = mdo_declare_attr_set(env, c, la, handle);
if (rc)
return rc;
struct lu_attr *la = &mdd_env_info(env)->mti_la_for_fix;
int rc;
+ LASSERT(ma->ma_attr.la_valid & LA_CTIME);
+ la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime;
+
LASSERT(mdd_spobj);
LASSERT(mdd_tpobj);
LASSERT(mdd_sobj);
}
- rc = mdo_declare_attr_set(env, mdd_spobj, NULL, handle);
- if (rc)
- return rc;
-
- LASSERT(ma->ma_attr.la_valid & LA_CTIME);
- la->la_ctime = la->la_mtime = ma->ma_attr.la_ctime;
la->la_valid = LA_CTIME | LA_MTIME;
+ rc = mdo_declare_attr_set(env, mdd_spobj, la, handle);
+ if (rc != 0)
+ return rc;
+
+ rc = mdo_declare_attr_set(env, mdd_tpobj, la, handle);
+ if (rc != 0)
+ return rc;
+
+ la->la_valid = LA_CTIME;
rc = mdo_declare_attr_set(env, mdd_sobj, la, handle);
if (rc)
return rc;
if (rc)
return rc;
- rc = mdo_declare_attr_set(env, mdd_tpobj, NULL, handle);
- if (rc)
- return rc;
-
/* new name */
rc = mdo_declare_index_insert(env, mdd_tpobj, mdo2fid(mdd_sobj),
tname->ln_name, handle);
return rc;
}
- rc = mdo_declare_attr_set(env, mdd_tobj, NULL, handle);
+ la->la_valid = LA_CTIME;
+ rc = mdo_declare_attr_set(env, mdd_tobj, la, handle);
if (rc)
return rc;