From: Di Wang Date: Sun, 2 Oct 2016 12:51:07 +0000 (-0400) Subject: LU-7206 mdd: stop orphan cleanup before finish FLD X-Git-Tag: 2.8.60~13 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;ds=sidebyside;h=03a2459ed59ed61414ef6b221e777a3e221cbaef;p=fs%2Flustre-release.git LU-7206 mdd: stop orphan cleanup before finish FLD 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 Change-Id: I8df9832c633017e2fca866579b497f8215054d31 Reviewed-on: http://review.whamcloud.com/23029 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Alex Zhuravlev Reviewed-by: Mike Pershin Reviewed-by: Oleg Drokin --- diff --git a/lustre/mdd/mdd_device.c b/lustre/mdd/mdd_device.c index f0b9bce..5dcb5f1 100644 --- a/lustre/mdd/mdd_device.c +++ b/lustre/mdd/mdd_device.c @@ -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);