From 8239ea2356eb2756bcf17b8eb96ddf9f92b8eb57 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 16 Jul 2024 16:34:33 +0300 Subject: [PATCH] Do not try to purge the same OSD multiple times if its multiple devices are passed to purge --- src/disk_tool/disk_tool_udev.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/disk_tool/disk_tool_udev.cpp b/src/disk_tool/disk_tool_udev.cpp index c5eee95f..201774b9 100644 --- a/src/disk_tool/disk_tool_udev.cpp +++ b/src/disk_tool/disk_tool_udev.cpp @@ -383,7 +383,7 @@ int disk_tool_t::pre_exec_osd(std::string device) int disk_tool_t::purge_devices(const std::vector & devices) { - std::vector osd_numbers; + std::set osd_numbers; json11::Json::array superblocks; for (auto & device: devices) { @@ -391,8 +391,11 @@ int disk_tool_t::purge_devices(const std::vector & devices) if (!sb.is_null()) { uint64_t osd_num = sb["params"]["osd_num"].uint64_value(); - osd_numbers.push_back(osd_num); - superblocks.push_back(sb); + if (osd_numbers.find(osd_num) == osd_numbers.end()) + { + osd_numbers.insert(osd_num); + superblocks.push_back(sb); + } } } if (!osd_numbers.size())