From: Kefu Chai Date: Sun, 20 Jan 2019 05:05:26 +0000 (+0800) Subject: osd: unmount store after service.shutdown() X-Git-Tag: v14.1.0~297^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F26043%2Fhead;p=ceph.git osd: unmount store after service.shutdown() in service.shutdown(), the store's cache is accessed, so we need to destroy the store after service.shutdown() Fixes: http://tracker.ceph.com/issues/37975 Signed-off-by: Kefu Chai --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 0444aab500a..439003826c9 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3859,11 +3859,6 @@ int OSD::shutdown() store->flush_journal(); } - store->umount(); - delete store; - store = 0; - dout(10) << "Store synced" << dendl; - monc->shutdown(); osd_lock.Unlock(); @@ -3873,6 +3868,13 @@ int OSD::shutdown() s->shard_osdmap = OSDMapRef(); } service.shutdown(); + + std::lock_guard lock(osd_lock); + store->umount(); + delete store; + store = nullptr; + dout(10) << "Store synced" << dendl; + op_tracker.on_shutdown(); class_handler->shutdown();