X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Flov%2Flov_object.c;h=61b5a9f07e60231485e34c0086f02a98e7f42714;hb=3f3a24dc5d7d;hp=19a9bcf6931a4f94d508a4657581c9b7d309b39d;hpb=a8ba5c645f91faf86a84c99dd2cc049bc54e12b1;p=fs%2Flustre-release.git diff --git a/lustre/lov/lov_object.c b/lustre/lov/lov_object.c index 19a9bcf..61b5a9f 100644 --- a/lustre/lov/lov_object.c +++ b/lustre/lov/lov_object.c @@ -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: