Whamcloud - gitweb
LU-7206 mdd: stop orphan cleanup before finish FLD 29/23029/3
authorDi Wang <di.wang@intel.com>
Sun, 2 Oct 2016 12:51:07 +0000 (08:51 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 28 Oct 2016 23:49:55 +0000 (23:49 +0000)
Stop orphan cleanup thread in PRE_CLEANUP phase.
Because orphan cleanup threads might need lookup
FLD, (__mdd_orphan_cleanup()->mdd_object_init()->
lod_object_alloc() ->lod_fld_lookup()), so let's
stop orphan cleanup threads before FLD cleanup.

Signed-off-by: Di Wang <di.wang@intel.com>
Change-Id: I8df9832c633017e2fca866579b497f8215054d31
Reviewed-on: http://review.whamcloud.com/23029
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/mdd/mdd_device.c

index f0b9bce..5dcb5f1 100644 (file)
@@ -874,7 +874,6 @@ static int mdd_hsm_actions_llog_fini(const struct lu_env *env,
 static void mdd_device_shutdown(const struct lu_env *env, struct mdd_device *m,
                                struct lustre_cfg *cfg)
 {
-       mdd_generic_thread_stop(&m->mdd_orph_cleanup_thread);
        lfsck_degister(env, m->mdd_bottom);
        mdd_hsm_actions_llog_fini(env, m);
        mdd_changelog_fini(env, m);
@@ -916,7 +915,11 @@ static int mdd_process_config(const struct lu_env *env,
                         GOTO(out, rc);
                dt_conf_get(env, dt, &m->mdd_dt_conf);
                 break;
-        case LCFG_CLEANUP:
+       case LCFG_PRE_CLEANUP:
+               rc = next->ld_ops->ldo_process_config(env, next, cfg);
+               mdd_generic_thread_stop(&m->mdd_orph_cleanup_thread);
+               break;
+       case LCFG_CLEANUP:
                rc = next->ld_ops->ldo_process_config(env, next, cfg);
                lu_dev_del_linkage(d->ld_site, d);
                mdd_device_shutdown(env, m, cfg);