]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: unmount store after service.shutdown()
authorKefu Chai <kchai@redhat.com>
Sun, 20 Jan 2019 05:05:26 +0000 (13:05 +0800)
committerKefu Chai <kchai@redhat.com>
Sun, 20 Jan 2019 05:06:17 +0000 (13:06 +0800)
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 <kchai@redhat.com>
src/osd/OSD.cc

index 0444aab500a8fd8db0c969f691561611e469eef2..439003826c91decb03af002fa2c8ab0501c6d949 100644 (file)
@@ -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();