From: sajibreadd Date: Wed, 10 Apr 2024 00:47:48 +0000 (+0200) Subject: OSDService::fast_shutdown created to avoid segmentation fault while fast shutdown... X-Git-Tag: v17.2.8~124^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=73abc9dffde82fd15b941876c4a2e32115114606;p=ceph.git OSDService::fast_shutdown created to avoid segmentation fault while fast shutdown of osd Fixes: https://tracker.ceph.com/issues/64373 Signed-off-by: Md Mahamudur Rahaman Sajib (cherry picked from commit d7593b20d290453e3dadf9f5b5f3437b847041cc) --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 1f923516eda..174b3f738d0 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -529,6 +529,15 @@ void OSDService::shutdown() next_osdmap = OSDMapRef(); } +void OSDService::fast_shutdown() +{ + mono_timer.suspend(); + { + std::lock_guard l(watch_lock); + watch_timer.shutdown(); + } +} + void OSDService::init() { reserver_finisher.start(); @@ -4497,6 +4506,7 @@ int OSD::shutdown() utime_t start_time_umount = ceph_clock_now(); store->prepare_for_fast_shutdown(); + service.fast_shutdown(); std::lock_guard lock(osd_lock); // TBD: assert in allocator that nothing is being add store->umount(); diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 52880bf4ace..31ac2cfda1c 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -727,6 +727,7 @@ public: void start_shutdown(); void shutdown_reserver(); void shutdown(); + void fast_shutdown(); // -- stats -- ceph::mutex stat_lock = ceph::make_mutex("OSDService::stat_lock");