Whamcloud - gitweb
Fixes some scability and access to not inited memory problems
[fs/lustre-release.git] / lustre / mdd / mdd_dir.c
index b20bb9c..c90f83b 100644 (file)
@@ -979,8 +979,7 @@ static int mdd_create_data(const struct lu_env *env, struct md_object *pobj,
         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,
@@ -1016,7 +1015,7 @@ static int mdd_create_data(const struct lu_env *env, struct md_object *pobj,
 
         /* 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:
@@ -1064,7 +1063,7 @@ __mdd_lookup(const struct lu_env *env, struct md_object *pobj,
                                                  (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;
 
@@ -1390,7 +1389,7 @@ cleanup:
 
         /* 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: