Whamcloud - gitweb
LU-3259 clio: cl_lock simplification
[fs/lustre-release.git] / lustre / lov / lov_object.c
index 19a9bcf..61b5a9f 100644 (file)
@@ -314,8 +314,6 @@ static int lov_delete_empty(const struct lu_env *env, struct lov_object *lov,
        LASSERT(lov->lo_type == LLT_EMPTY || lov->lo_type == LLT_RELEASED);
 
        lov_layout_wait(env, lov);
-
-       cl_locks_prune(env, &lov->lo_cl, 0);
        return 0;
 }
 
@@ -383,7 +381,7 @@ static int lov_delete_raid0(const struct lu_env *env, struct lov_object *lov,
                         struct lovsub_object *los = r0->lo_sub[i];
 
                         if (los != NULL) {
-                               cl_locks_prune(env, &los->lso_cl, 1);
+                               cl_object_prune(env, &los->lso_cl);
                                 /*
                                  * If top-level object is to be evicted from
                                  * the cache, so are its sub-objects.
@@ -392,7 +390,6 @@ static int lov_delete_raid0(const struct lu_env *env, struct lov_object *lov,
                        }
                }
        }
-       cl_locks_prune(env, &lov->lo_cl, 0);
        RETURN(0);
 }
 
@@ -725,7 +722,9 @@ static int lov_layout_change(const struct lu_env *unused,
        old_ops = &lov_dispatch[lov->lo_type];
        new_ops = &lov_dispatch[llt];
 
-       cl_object_prune(env, &lov->lo_cl);
+       result = cl_object_prune(env, &lov->lo_cl);
+       if (result != 0)
+               GOTO(out, result);
 
        result = old_ops->llo_delete(env, lov, &lov->u);
        if (result == 0) {
@@ -751,6 +750,7 @@ static int lov_layout_change(const struct lu_env *unused,
                }
        }
 
+out:
        cl_env_put(env, &refcheck);
        cl_env_reexit(cookie);
        RETURN(result);
@@ -830,7 +830,8 @@ static int lov_conf_set(const struct lu_env *env, struct cl_object *obj,
                GOTO(out, result = -EBUSY);
        }
 
-       lov->lo_layout_invalid = lov_layout_change(env, lov, conf);
+       result = lov_layout_change(env, lov, conf);
+       lov->lo_layout_invalid = result != 0;
        EXIT;
 
 out: