FileRef _get_file(uint64_t ino);
void _drop_link(FileRef f);
- int _get_slow_device_id() { return bdev[BDEV_SLOW] ? BDEV_SLOW : BDEV_DB; }
+ unsigned _get_slow_device_id() {
+ return bdev[BDEV_SLOW] ? BDEV_SLOW : BDEV_DB;
+ }
const char* get_device_name(unsigned id);
int _expand_slow_device(uint64_t min_size, PExtentVector& extents);
int _allocate(uint8_t bdev, uint64_t len,
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);
int mkfs(uuid_d osd_uuid, const bluefs_layout_t& layout);
int mount();
int maybe_verify_layout(const bluefs_layout_t& layout) const;
- void umount();
+ void umount(bool avoid_compact = false);
int prepare_new_device(int id, const bluefs_layout_t& layout);
int log_dump();
void compact_log();
/// sync any uncommitted state to disk
- void sync_metadata();
+ void sync_metadata(bool avoid_compact);
void set_slow_device_expander(BlueFSDeviceExpander* a) {
slow_dev_expander = a;
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);
}