From 03a2459ed59ed61414ef6b221e777a3e221cbaef Mon Sep 17 00:00:00 2001 From: Di Wang Date: Sun, 2 Oct 2016 08:51:07 -0400 Subject: [PATCH] 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 --- lustre/mdd/mdd_device.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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); -- 1.8.3.1