return 0;
}
-void BlueFS::_add_block_extent(unsigned id, uint64_t offset, uint64_t length)
+void BlueFS::_add_block_extent(unsigned id, uint64_t offset, uint64_t length,
+ bool skip)
{
dout(1) << __func__ << " bdev " << id
<< " 0x" << std::hex << offset << "~" << length << std::dec
+ << " skip " << skip
<< dendl;
ceph_assert(id < bdev.size());
block_all[id].insert(offset, length);
if (id < alloc.size() && alloc[id]) {
- log_t.op_alloc_add(id, offset, length);
+ if (!skip)
+ log_t.op_alloc_add(id, offset, length);
+
alloc[id]->init_add_free(offset, length);
}
return 4096;
}
- void _add_block_extent(unsigned bdev, uint64_t offset, uint64_t len);
+ void _add_block_extent(unsigned bdev, uint64_t offset, uint64_t len,
+ bool skip=false);
public:
BlueFS(CephContext* cct);
uint64_t get_block_device_size(unsigned bdev);
/// gift more block space
- void add_block_extent(unsigned bdev, uint64_t offset, uint64_t len) {
+ void add_block_extent(unsigned bdev, uint64_t offset, uint64_t len,
+ bool skip=false) {
std::unique_lock l(lock);
- _add_block_extent(bdev, offset, len);
+ _add_block_extent(bdev, offset, len, skip);
int r = _flush_and_sync_log(l);
ceph_assert(r == 0);
}
bluefs->add_block_extent(
id,
reserved,
- bluefs->get_block_device_size(id) - reserved);
+ bluefs->get_block_device_size(id) - reserved, true);
r = bluefs->prepare_new_device(id, bluefs_layout);
ceph_assert(r == 0);