From 61cc0fd9636ccf4d302a9f776fe98910e4b0333d Mon Sep 17 00:00:00 2001 From: Mikhail Pershin Date: Sun, 1 Mar 2015 20:19:56 +0300 Subject: [PATCH] LU-4772 mgs: check MGS refcounting before export barrier Patch adds debug code to make sure that there are no extra MGS export references taken before export barrier. Signed-off-by: Mikhail Pershin Change-Id: I4a7ae3130cb70a9b6847c9d4b5c2874ccf9ee72d Reviewed-on: http://review.whamcloud.com/13920 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Jinshan Xiong Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- lustre/mgs/mgs_handler.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lustre/mgs/mgs_handler.c b/lustre/mgs/mgs_handler.c index 05c2aa5..2e71fef 100644 --- a/lustre/mgs/mgs_handler.c +++ b/lustre/mgs/mgs_handler.c @@ -1365,6 +1365,22 @@ static struct lu_device *mgs_device_alloc(const struct lu_env *env, return ludev; } +/* LU-4772 debug function. + * It checks there are no FSC keep export reference before + * obd_exports_barrier() call. + */ +int mgs_fsc_debug(struct mgs_device *mgs) +{ + struct fs_db *fsdb; + + mutex_lock(&mgs->mgs_mutex); + list_for_each_entry(fsdb, &mgs->mgs_fs_db_list, fsdb_list) + LASSERTF(list_empty(&fsdb->fsdb_clients), + "Find FSC after cleanup, FSDB %s\n", fsdb->fsdb_name); + mutex_unlock(&mgs->mgs_mutex); + return 0; +} + static struct lu_device *mgs_device_fini(const struct lu_env *env, struct lu_device *d) { @@ -1384,6 +1400,8 @@ static struct lu_device *mgs_device_fini(const struct lu_env *env, ptlrpc_unregister_service(mgs->mgs_service); mutex_unlock(&mgs->mgs_health_mutex); + mgs_fsc_debug(mgs); + obd_exports_barrier(obd); obd_zombie_barrier(); -- 1.8.3.1