32 lines
739 B
C++
32 lines
739 B
C++
#ifndef DATABLOCK_ALLOCATOR_HPP
|
|
#define DATABLOCK_ALLOCATOR_HPP
|
|
|
|
class Fs;
|
|
|
|
class DataBlock_Allocator {
|
|
public:
|
|
DataBlock_Allocator(Fs *fs, u_int64_t block_segment_start,
|
|
u_int64_t block_segment_end);
|
|
|
|
virtual int new_datablock(u_int64_t *block_num) = 0;
|
|
virtual int free_datablock(u_int64_t block_num) = 0;
|
|
|
|
virtual int format() = 0;
|
|
|
|
protected:
|
|
Fs *fs;
|
|
u_int64_t block_segment_start, block_segment_end;
|
|
};
|
|
|
|
class DataBlock_Allocator_Bitmap : DataBlock_Allocator {
|
|
using DataBlock_Allocator::DataBlock_Allocator;
|
|
|
|
const int DATABLOCKS_PER_BITMAP_BLOCK = 255;
|
|
|
|
int new_datablock(u_int64_t *block_num) override;
|
|
int free_datablock(u_int64_t block_num) override;
|
|
|
|
int format() override;
|
|
};
|
|
|
|
#endif |