From cbca389d822b8d9029e5e882dc91e5a4d4dd05c2 Mon Sep 17 00:00:00 2001 From: haodong Date: Wed, 3 Aug 2016 02:19:03 +0800 Subject: [PATCH] kv: delete store after pg destructor is called in OSD shutdown. Using memdb for bluestore kvbackend, we will hit segfault when we use 'kill' command to shut down osd process. After destructing pg, some reference to bluestore will be release, but bluestore has been deleted at this time. Signed-off-by: Haodong Tang --- src/osd/OSD.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 6b0782621ffe..07d63344ce2f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2716,12 +2716,6 @@ int OSD::shutdown() << cpp_strerror(r) << dendl; } - dout(10) << "syncing store" << dendl; - enable_disable_fuse(true); - store->umount(); - delete store; - store = 0; - dout(10) << "Store synced" << dendl; { Mutex::Locker l(pg_stat_queue_lock); @@ -2757,6 +2751,13 @@ int OSD::shutdown() #endif cct->_conf->remove_observer(this); + dout(10) << "syncing store" << dendl; + enable_disable_fuse(true); + store->umount(); + delete store; + store = 0; + dout(10) << "Store synced" << dendl; + monc->shutdown(); osd_lock.Unlock(); -- 2.47.3