return r;
}
-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<BlockDevice>
+ _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;
}
}
-fail_close:
_bdev->close();
fail:
std::string get_device_path(unsigned id);
int dump_bluefs_sizes(std::ostream& out);
- 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,
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()
("yes-i-really-really-mean-it", "additional confirmation for dangerous commands")
("sharding", po::value<string>(&new_sharding), "new sharding to apply")
("resharding-ctrl", po::value<string>(&resharding_ctrl), "gives control over resharding procedure details")
- ("zap-size", po::value<uint64_t>(&zap_size), "size of a block written when zapping device")
;
po::options_description po_positional("Positional options");
po_positional.add_options()
cout << sharding << std::endl;
} 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);