*
* 2) send synchronous truncate RPC with just assigned id
*/
- LASSERT(attr != NULL);
+ LASSERT(attr);
if (attr->la_valid & LA_SIZE && attr->la_size > 0) {
LASSERT(!dt_object_exists(dt));
osp_object_assign_id(env, d, o);
RETURN(rc);
}
+ if (o->opo_new) {
+ /* no need in logging for new objects being created */
+ RETURN(0);
+ }
+
if (!(attr->la_valid & (LA_UID | LA_GID)))
RETURN(0);
if (!(attr->la_valid & (LA_UID | LA_GID)))
RETURN(0);
+ /* new object, the very first ->attr_set()
+ * initializing attributes needs no logging
+ * all subsequent one are subject to the
+ * logging and synchronization with OST */
+ if (o->opo_new) {
+ o->opo_new = 0;
+ RETURN(0);
+ }
+
/*
* once transaction is committed put proper command on
* the queue going to our OST
}
}
+ /* new object, the very first ->attr_set()
+ * initializing attributes needs no logging */
+ o->opo_new = 1;
+
osp_objid_buf_prep(osi, d, d->opd_index);
rc = dt_record_write(env, d->opd_last_used_file, &osi->osi_lb,
&osi->osi_off, th);