if (rc)
RETURN(rc);
- if (spec->sp_cr_flags & MDS_OPEN_DELAY_CREATE ||
- !(spec->sp_cr_flags & FMODE_WRITE))
+ if (!md_should_create(spec->sp_cr_flags))
RETURN(0);
rc = mdd_lov_create(env, mdd, mdd_pobj, son, &lmm, &lmm_size,
/* update lov_objid data, must be before transaction stop! */
if (rc == 0)
- mdd_lov_objid_update(env, mdd);
+ mdd_lov_objid_update(mdd, lmm);
mdd_trans_stop(env, mdd, rc, handle);
out_free:
(struct dt_rec *)pack, key,
mdd_object_capa(env, mdd_obj));
if (rc == 0)
- fid_unpack(pack, fid);
+ rc = fid_unpack(pack, fid);
} else
rc = -ENOTDIR;
/* update lov_objid data, must be before transaction stop! */
if (rc == 0)
- mdd_lov_objid_update(env, mdd);
+ mdd_lov_objid_update(mdd, lmm);
mdd_pdo_write_unlock(env, mdd_pobj, dlh);
out_trans: