From 2789978e1192dbf6d90399c96b5594e0dc049cd9 Mon Sep 17 00:00:00 2001 From: Alex Zhuravlev Date: Tue, 18 Feb 2020 18:04:44 +0300 Subject: [PATCH] LU-10395 osd: stop OI at device shutdown and not at obd_cleanup(). otherwise a race is possible: umount stopping OI vs MGS accessing same OSD which results in the assertion: ASSERTION( osd->od_oi_table != NULL && osd->od_oi_count >= 1 ) Signed-off-by: Alex Zhuravlev Change-Id: I24fccea718f2e2663166cfb0ff26571039357535 Reviewed-on: https://review.whamcloud.com/37615 Reviewed-by: Alexander Boyko Reviewed-by: Alexander Zarochentsev Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_handler.c | 2 ++ lustre/osd-ldiskfs/osd_scrub.c | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 0f95bc2..273b3c1 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -7741,6 +7741,8 @@ static struct lu_device *osd_device_fini(const struct lu_env *env, osd_index_backup(env, o, false); osd_shutdown(env, o); osd_procfs_fini(o); + if (o->od_oi_table != NULL) + osd_oi_fini(osd_oti_get(env), o); osd_obj_map_fini(o); osd_umount(env, o); diff --git a/lustre/osd-ldiskfs/osd_scrub.c b/lustre/osd-ldiskfs/osd_scrub.c index c240aa1..c81ba1b 100644 --- a/lustre/osd-ldiskfs/osd_scrub.c +++ b/lustre/osd-ldiskfs/osd_scrub.c @@ -2752,8 +2752,6 @@ void osd_scrub_cleanup(const struct lu_env *env, struct osd_device *dev) dt_object_put_nocache(env, scrub->os_obj); scrub->os_obj = NULL; } - if (dev->od_oi_table != NULL) - osd_oi_fini(osd_oti_get(env), dev); } /* object table based iteration APIs */ -- 1.8.3.1