Skip to content
Snippets Groups Projects
Commit 7436dc65 authored by huanghua's avatar huanghua
Browse files

Branch HEAD

b=17083
i=yury.umanets
i=nikita.danilov

Before destroying the whole mdt stack, just wait a little bit for the
obd_zombie_impexp_thread to destroy all the exports.
parent 76256508
No related branches found
No related tags found
No related merge requests found
......@@ -3811,6 +3811,19 @@ static void mdt_fini(const struct lu_env *env, struct mdt_device *m)
struct obd_device *obd = m->mdt_md_dev.md_lu_dev.ld_obd;
ENTRY;
/* At this point, obd exports might still be on the "obd_zombie_exports"
* list, and obd_zombie_impexp_thread() is trying to destroy them.
* We wait a little bit until all exports (except the self-export)
* have been destroyed, because the whole mdt stack might be accessed
* in mdt_destroy_export(). This will not be a long time, maybe one or
* two seconds are enough. This is not a problem while umounting.
*
* The three references that should be remaining are the
* obd_self_export and the attach and setup references.
*/
while (atomic_read(&obd->obd_refcount) > 3)
cfs_schedule_timeout(CFS_TASK_UNINT, cfs_time_seconds(1));
ping_evictor_stop();
target_recovery_fini(obd);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment