Whamcloud - gitweb
LU-12780 lod: don't use ptlrpc_thread for recovery thread
[fs/lustre-release.git] / lustre / lod / lod_lov.c
index 48fa030..d70f46f 100644 (file)
@@ -76,13 +76,11 @@ void lod_putref(struct lod_device *lod, struct lod_tgt_descs *ltd)
        ltd->ltd_refcount--;
        if (ltd->ltd_refcount == 0 && ltd->ltd_death_row) {
                struct lod_tgt_desc *tgt_desc, *tmp;
-               struct list_head kill;
+               LIST_HEAD(kill);
 
                CDEBUG(D_CONFIG, "destroying %d ltd desc\n",
                       ltd->ltd_death_row);
 
-               INIT_LIST_HEAD(&kill);
-
                ltd_foreach_tgt_safe(ltd, tgt_desc, tmp) {
                        LASSERT(tgt_desc);
                        if (!tgt_desc->ltd_reap)
@@ -286,16 +284,10 @@ int lod_add_device(const struct lu_env *env, struct lod_device *lod,
        RETURN(rc);
 out_fini_llog:
        lod_sub_fini_llog(env, tgt_desc->ltd_tgt,
-                         tgt_desc->ltd_recovery_thread);
+                         &tgt_desc->ltd_recovery_task);
 out_ltd:
        down_write(&ltd->ltd_rw_sem);
        mutex_lock(&ltd->ltd_mutex);
-       if (!for_ost && LTD_TGT(ltd, index)->ltd_recovery_thread != NULL) {
-               struct ptlrpc_thread *thread;
-
-               thread = LTD_TGT(ltd, index)->ltd_recovery_thread;
-               OBD_FREE_PTR(thread);
-       }
        lod_tgt_pool_remove(&ltd->ltd_tgt_pool, index);
 out_del_tgt:
        ltd_del_tgt(ltd, tgt_desc);
@@ -336,9 +328,6 @@ static void __lod_del_device(const struct lu_env *env, struct lod_device *lod,
        lfsck_del_target(env, lod->lod_child, tgt->ltd_tgt, tgt->ltd_index,
                         !ltd->ltd_is_mdt);
 
-       if (ltd->ltd_is_mdt && tgt->ltd_recovery_thread)
-               OBD_FREE_PTR(tgt->ltd_recovery_thread);
-
        if (!tgt->ltd_reap) {
                tgt->ltd_reap = 1;
                ltd->ltd_death_row++;
@@ -2111,14 +2100,9 @@ int lod_pools_init(struct lod_device *lod, struct lustre_cfg *lcfg)
        lod->lod_sp_me = LUSTRE_SP_CLI;
 
        /* Set up OST pool environment */
-       lod->lod_pools_hash_body = cfs_hash_create("POOLS", HASH_POOLS_CUR_BITS,
-                                                  HASH_POOLS_MAX_BITS,
-                                                  HASH_POOLS_BKT_BITS, 0,
-                                                  CFS_HASH_MIN_THETA,
-                                                  CFS_HASH_MAX_THETA,
-                                                  &pool_hash_operations,
-                                                  CFS_HASH_DEFAULT);
-       if (lod->lod_pools_hash_body == NULL)
+       lod->lod_pool_count = 0;
+       rc = lod_pool_hash_init(&lod->lod_pools_hash_body);
+       if (rc)
                RETURN(-ENOMEM);
 
        INIT_LIST_HEAD(&lod->lod_pool_list);
@@ -2148,7 +2132,7 @@ out_mdt_rr_pool:
 out_mdt_pool:
        lod_tgt_pool_free(&lod->lod_mdt_descs.ltd_tgt_pool);
 out_hash:
-       cfs_hash_putref(lod->lod_pools_hash_body);
+       lod_pool_hash_destroy(&lod->lod_pools_hash_body);
 
        return rc;
 }
@@ -2175,7 +2159,7 @@ int lod_pools_fini(struct lod_device *lod)
                lod_pool_del(obd, pool->pool_name);
        }
 
-       cfs_hash_putref(lod->lod_pools_hash_body);
+       lod_pool_hash_destroy(&lod->lod_pools_hash_body);
        lod_tgt_pool_free(&lod->lod_ost_descs.ltd_qos.lq_rr.lqr_pool);
        lod_tgt_pool_free(&lod->lod_ost_descs.ltd_tgt_pool);
        lod_tgt_pool_free(&lod->lod_mdt_descs.ltd_qos.lq_rr.lqr_pool);