Whamcloud - gitweb
LU-5410 mdd: return errors from mdo_declare_ref_add() 22/11222/2
authorJohn L. Hammond <john.hammond@intel.com>
Thu, 24 Jul 2014 19:59:05 +0000 (14:59 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 11 Aug 2014 15:29:52 +0000 (15:29 +0000)
In mdd_declare_object_initialize() ensure that errors from
mdo_declare_ref_add() are returned.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: I8ae9fa009577f862522f905b15fc6ee71ee00306
Reviewed-on: http://review.whamcloud.com/11222
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mdd/mdd_dir.c

index 49389e0..81b7e01 100644 (file)
@@ -1823,15 +1823,20 @@ static int mdd_declare_object_initialize(const struct lu_env *env,
        attr->la_valid &= ~(LA_MODE | LA_TYPE);
        rc = mdo_declare_attr_set(env, child, attr, handle);
        attr->la_valid |= LA_MODE | LA_TYPE;
        attr->la_valid &= ~(LA_MODE | LA_TYPE);
        rc = mdo_declare_attr_set(env, child, attr, handle);
        attr->la_valid |= LA_MODE | LA_TYPE;
-       if (rc == 0 && S_ISDIR(attr->la_mode)) {
-               rc = mdo_declare_index_insert(env, child, mdo2fid(child),
-                                             S_IFDIR, dot, handle);
-               if (rc == 0)
-                       rc = mdo_declare_ref_add(env, child, handle);
+       if (rc != 0 || !S_ISDIR(attr->la_mode))
+               RETURN(rc);
 
 
-               rc = mdo_declare_index_insert(env, child, mdo2fid(parent),
-                                             S_IFDIR, dotdot, handle);
-       }
+       rc = mdo_declare_index_insert(env, child, mdo2fid(child), S_IFDIR,
+                                     dot, handle);
+       if (rc != 0)
+               RETURN(rc);
+
+       rc = mdo_declare_ref_add(env, child, handle);
+       if (rc != 0)
+               RETURN(rc);
+
+       rc = mdo_declare_index_insert(env, child, mdo2fid(parent), S_IFDIR,
+                                     dotdot, handle);
 
        RETURN(rc);
 }
 
        RETURN(rc);
 }