Whamcloud - gitweb
LU-1657 lov: LBUG at lov_fini_raid0()
authorJinshan Xiong <jinshan.xiong@intel.com>
Wed, 1 Aug 2012 22:31:05 +0000 (15:31 -0700)
committerOleg Drokin <green@whamcloud.com>
Tue, 14 Aug 2012 21:05:31 +0000 (17:05 -0400)
The refcount of lsm could be greater than 1 if the object was failed
at initialization because llite held another reference.

Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Change-Id: I86884eb36f256123e835fdc9e0e585a984f7713a
Reviewed-on: http://review.whamcloud.com/3513
Reviewed-by: Johann Lombardi <johann@whamcloud.com>
Reviewed-by: jacques-Charles Lafoucriere <jacques-charles.lafoucriere@cea.fr>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
lustre/lov/lov_object.c

index 7f92431..1941462 100644 (file)
@@ -313,20 +313,16 @@ static void lov_fini_empty(const struct lu_env *env, struct lov_object *lov,
 static void lov_fini_raid0(const struct lu_env *env, struct lov_object *lov,
                            union lov_layout_state *state)
 {
-        struct lov_layout_raid0 *r0 = &state->raid0;
-
-        ENTRY;
+       struct lov_layout_raid0 *r0 = &state->raid0;
+       ENTRY;
 
-        if (r0->lo_sub != NULL) {
-                OBD_FREE_LARGE(r0->lo_sub, r0->lo_nr * sizeof r0->lo_sub[0]);
-                r0->lo_sub = NULL;
-        }
+       if (r0->lo_sub != NULL) {
+               OBD_FREE_LARGE(r0->lo_sub, r0->lo_nr * sizeof r0->lo_sub[0]);
+               r0->lo_sub = NULL;
+       }
 
-       LASSERTF(cfs_atomic_read(&lov->lo_lsm->lsm_refc) == 1,
-               "actual %d proc %p.\n",
-               cfs_atomic_read(&lov->lo_lsm->lsm_refc), cfs_current());
+       dump_lsm(D_INODE, lov->lo_lsm);
        lov_free_memmd(&lov->lo_lsm);
-       lov->lo_lsm = NULL;
 
        EXIT;
 }