From: Adam Kupczyk Date: Thu, 12 Sep 2024 10:45:05 +0000 (+0000) Subject: tools/ceph-bluestore-tool: remove param zap_size X-Git-Tag: v20.0.0~983^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1a80319bbff39f25a09d1fc6f8cd975ed1e3748b;p=ceph.git tools/ceph-bluestore-tool: remove param zap_size Make zapping precisely target block device labels. Signed-off-by: Adam Kupczyk --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 3cc7f71b31f1..0724aadff429 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8992,27 +8992,20 @@ void BlueStore::trim_free_space(const string& type, std::ostream& outss) } } -int BlueStore::zap_device(CephContext* cct, const string& dev, uint64_t gap_size) +int BlueStore::zap_device(CephContext* cct, const string& dev) { - string path; // dummy var for dout - dout(5)<< __func__ << " " << dev << dendl; - auto * _bdev = - BlockDevice::create(cct, dev, nullptr, nullptr, nullptr, nullptr); + string path = dev; // dummy var for dout + uint64_t brush_size; + dout(5) << __func__ << " " << dev << dendl; + unique_ptr + _bdev(BlockDevice::create(cct, dev, nullptr, nullptr, nullptr, nullptr)); int r = _bdev->open(dev); if (r < 0) goto fail; - if (!gap_size) { - gap_size = _bdev->get_block_size(); - } - if (p2align(gap_size, _bdev->get_block_size()) != gap_size) { - derr << __func__ - << " zapping size has to be aligned with device block size: 0x" - << std::hex << gap_size << " vs. 0x" << _bdev->get_block_size() - << std::dec << dendl; - return -EINVAL; - } + brush_size = std::max(_bdev->get_block_size(), BDEV_LABEL_BLOCK_SIZE); + for (auto off : bdev_label_positions) { - uint64_t end = std::min(off + gap_size, _bdev->get_size()); + uint64_t end = std::min(off + brush_size, _bdev->get_size()); if (end > off) { uint64_t l = end - off; bufferlist bl; @@ -9034,7 +9027,6 @@ int BlueStore::zap_device(CephContext* cct, const string& dev, uint64_t gap_size } } -fail_close: _bdev->close(); fail: diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 53fe04eab987..207ae2ec7a25 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -3192,7 +3192,7 @@ public: int dump_bluefs_sizes(std::ostream& out); void trim_free_space(const std::string& type, std::ostream& outss); - static int zap_device(CephContext* cct, const std::string& dev, uint64_t gap_size); + static int zap_device(CephContext* cct, const std::string& dev); public: int statfs(struct store_statfs_t *buf, diff --git a/src/os/bluestore/bluestore_tool.cc b/src/os/bluestore/bluestore_tool.cc index 160519583d45..c24bf2161aa6 100644 --- a/src/os/bluestore/bluestore_tool.cc +++ b/src/os/bluestore/bluestore_tool.cc @@ -290,7 +290,6 @@ int main(int argc, char **argv) string new_sharding = empty_sharding; string resharding_ctrl; int log_level = 30; - uint64_t zap_size = 0; bool fsck_deep = false; po::options_description po_options("Options"); po_options.add_options() @@ -317,7 +316,6 @@ int main(int argc, char **argv) ("resharding-ctrl", po::value(&resharding_ctrl), "gives control over resharding procedure details") ("op", po::value(&action_aux), "--command alias, ignored if the latter is present") - ("zap-size", po::value(&zap_size), "size of a block written when zapping device") ; po::options_description po_positional("Positional options"); po_positional.add_options() @@ -1270,7 +1268,7 @@ int main(int argc, char **argv) bluestore.cold_close(); } else if (action == "zap-device") { for(auto& dev : devs) { - int r = BlueStore::zap_device(cct.get(), dev, zap_size); + int r = BlueStore::zap_device(cct.get(), dev); if (r < 0) { cerr << "error from zap: " << cpp_strerror(r) << std::endl; exit(EXIT_FAILURE);