std::atomic_int ioc_reap_count = {0};
protected:
+ uint64_t size;
+ uint64_t block_size;
bool rotational = true;
public:
- BlockDevice(CephContext* cct) : cct(cct) {}
+ BlockDevice(CephContext* cct)
+ : cct(cct),
+ size(0),
+ block_size(0)
+ {}
virtual ~BlockDevice() = default;
typedef void (*aio_callback_t)(void *handle, void *aio);
virtual void aio_submit(IOContext *ioc) = 0;
- virtual uint64_t get_size() const = 0;
- virtual uint64_t get_block_size() const = 0;
+ uint64_t get_size() const { return size; }
+ uint64_t get_block_size() const { return block_size; }
virtual int collect_metadata(std::string prefix, std::map<std::string,std::string> *pm) const = 0;
: BlockDevice(cct),
fd_direct(-1),
fd_buffered(-1),
- size(0), block_size(0),
fs(NULL), aio(false), dio(false),
debug_lock("KernelDevice::debug_lock"),
aio_queue(cct->_conf->bdev_aio_max_queue_depth),
class KernelDevice : public BlockDevice {
int fd_direct, fd_buffered;
- uint64_t size;
- uint64_t block_size;
std::string path;
FS *fs;
bool aio, dio;
void aio_submit(IOContext *ioc) override;
- uint64_t get_size() const override {
- return size;
- }
- uint64_t get_block_size() const override {
- return block_size;
- }
-
int collect_metadata(std::string prefix, map<std::string,std::string> *pm) const override;
int read(uint64_t off, uint64_t len, bufferlist *pbl,
NVMEDevice::NVMEDevice(CephContext* cct, aio_callback_t cb, void *cbpriv)
: BlockDevice(cct),
driver(nullptr),
- size(0),
- block_size(0),
aio_stop(false),
buffer_lock("NVMEDevice::buffer_lock"),
aio_callback(cb),
SharedDriverData *driver;
string name;
- uint64_t size;
- uint64_t block_size;
-
bool aio_stop;
struct BufferedExtents {
void aio_submit(IOContext *ioc) override;
- uint64_t get_size() const override {
- return size;
- }
- uint64_t get_block_size() const override {
- return block_size;
- }
-
int read(uint64_t off, uint64_t len, bufferlist *pbl,
IOContext *ioc,
bool buffered) override;
PMEMDevice::PMEMDevice(CephContext *cct, aio_callback_t cb, void *cbpriv)
: BlockDevice(cct),
fd(-1), addr(0),
- size(0), block_size(0),
debug_lock("PMEMDevice::debug_lock"),
injecting_crash(0)
{
class PMEMDevice : public BlockDevice {
int fd;
char *addr; //the address of mmap
- uint64_t size;
- uint64_t block_size;
std::string path;
Mutex debug_lock;
void aio_submit(IOContext *ioc) override;
- uint64_t get_size() const override {
- return size;
- }
- uint64_t get_block_size() const override {
- return block_size;
- }
-
int collect_metadata(std::string prefix, map<std::string,std::string> *pm) const override;
int read(uint64_t off, uint64_t len, bufferlist *pbl,