From 2f228fa96abd96a4333ff00bcc71e1d8ec1e8650 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 31 Dec 2023 11:46:39 +0300 Subject: [PATCH] Only treat data partitions as existing OSDs in vitastor-disk prepare --- src/disk_tool_prepare.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/disk_tool_prepare.cpp b/src/disk_tool_prepare.cpp index 3fccb482..b3a3b83e 100644 --- a/src/disk_tool_prepare.cpp +++ b/src/disk_tool_prepare.cpp @@ -440,16 +440,25 @@ std::vector disk_tool_t::get_new_data_parts(vitastor_dev_info_t & d { // Use this partition use_parts.push_back(part["uuid"].string_value()); + osds_exist++; } else { + std::string part_path = "/dev/disk/by-partuuid/"+strtolower(part["uuid"].string_value()); + bool is_meta = sb["params"]["meta_device"].string_value() == part_path; + bool is_journal = sb["params"]["journal_device"].string_value() == part_path; + bool is_data = sb["params"]["data_device"].string_value() == part_path; fprintf( - stderr, "%s is already initialized for OSD %lu, skipping\n", - part["node"].string_value().c_str(), sb["params"]["osd_num"].uint64_value() + stderr, "%s is already initialized for OSD %lu%s, skipping\n", + part["node"].string_value().c_str(), sb["params"]["osd_num"].uint64_value(), + (is_data ? " data" : (is_meta ? " meta" : (is_journal ? " journal" : ""))) ); - osds_size += part["size"].uint64_value()*dev.pt["sectorsize"].uint64_value(); + if (is_data || sb["params"]["data_device"].string_value().substr(0, 22) != "/dev/disk/by-partuuid/") + { + osds_size += part["size"].uint64_value()*dev.pt["sectorsize"].uint64_value(); + osds_exist++; + } } - osds_exist++; } } // Still create OSD(s) if a disk has no more than (max_other_percent) other data