Whamcloud - gitweb
LU-2744 build: fix 'data race condition' issues
[fs/lustre-release.git] / lustre / lov / lov_object.c
index 230f9d6..8e1cd43 100644 (file)
@@ -284,7 +284,7 @@ static int lov_delete_empty(const struct lu_env *env, struct lov_object *lov,
 
        lov_layout_wait(env, lov);
 
-       cl_object_prune(env, &lov->lo_cl);
+       cl_locks_prune(env, &lov->lo_cl, 0);
        return 0;
 }
 
@@ -359,9 +359,9 @@ static int lov_delete_raid0(const struct lu_env *env, struct lov_object *lov,
                                  */
                                 lov_subobject_kill(env, lov, los, i);
                        }
-                }
-        }
-       cl_object_prune(env, &lov->lo_cl);
+               }
+       }
+       cl_locks_prune(env, &lov->lo_cl, 0);
        RETURN(0);
 }
 
@@ -587,13 +587,13 @@ enum lov_layout_type lov_type(struct lov_stripe_md *lsm)
 
 static inline void lov_conf_freeze(struct lov_object *lov)
 {
-       if (lov->lo_owner != cfs_current())
+       if (lov->lo_owner != current)
                down_read(&lov->lo_type_guard);
 }
 
 static inline void lov_conf_thaw(struct lov_object *lov)
 {
-       if (lov->lo_owner != cfs_current())
+       if (lov->lo_owner != current)
                up_read(&lov->lo_type_guard);
 }
 
@@ -631,10 +631,10 @@ do {                                                                    \
 
 static void lov_conf_lock(struct lov_object *lov)
 {
-       LASSERT(lov->lo_owner != cfs_current());
+       LASSERT(lov->lo_owner != current);
        down_write(&lov->lo_type_guard);
        LASSERT(lov->lo_owner == NULL);
-       lov->lo_owner = cfs_current();
+       lov->lo_owner = current;
 }
 
 static void lov_conf_unlock(struct lov_object *lov)
@@ -669,7 +669,6 @@ static int lov_layout_change(const struct lu_env *unused,
        const struct lov_layout_operations *old_ops;
        const struct lov_layout_operations *new_ops;
 
-       struct cl_object_header *hdr = cl_object_header(&lov->lo_cl);
        void *cookie;
        struct lu_env *env;
        int refcheck;
@@ -695,13 +694,13 @@ 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 = old_ops->llo_delete(env, lov, &lov->u);
        if (result == 0) {
                old_ops->llo_fini(env, lov, &lov->u);
 
                LASSERT(cfs_atomic_read(&lov->lo_active_ios) == 0);
-               LASSERT(hdr->coh_tree.rnode == NULL);
-               LASSERT(hdr->coh_pages == 0);
 
                lov->lo_type = LLT_EMPTY;
                result = new_ops->llo_init(env,
@@ -933,7 +932,7 @@ struct lov_stripe_md *lov_lsm_addref(struct lov_object *lov)
                lsm = lsm_addref(lov->lo_lsm);
                CDEBUG(D_INODE, "lsm %p addref %d/%d by %p.\n",
                        lsm, cfs_atomic_read(&lsm->lsm_refc),
-                       lov->lo_layout_invalid, cfs_current());
+                       lov->lo_layout_invalid, current);
        }
        lov_conf_thaw(lov);
        return lsm;
@@ -945,7 +944,7 @@ void lov_lsm_decref(struct lov_object *lov, struct lov_stripe_md *lsm)
                return;
 
        CDEBUG(D_INODE, "lsm %p decref %d by %p.\n",
-               lsm, cfs_atomic_read(&lsm->lsm_refc), cfs_current());
+               lsm, cfs_atomic_read(&lsm->lsm_refc), current);
 
        lov_free_memmd(&lsm);
 }