std::mutex ioc_reap_lock;
vector<IOContext*> ioc_reap_queue;
std::atomic_int ioc_reap_count = {0};
-
public:
+ bool rotational;
BlockDevice() = default;
virtual ~BlockDevice() = default;
typedef void (*aio_callback_t)(void *handle, void *aio);
static BlockDevice *create(
const string& path, aio_callback_t cb, void *cbpriv);
virtual bool supported_bdev_label() { return true; }
-
+ virtual bool is_rotational() { return rotational; }
virtual void aio_submit(IOContext *ioc) = 0;
virtual uint64_t get_size() const = 0;
if (r < 0) {
goto out_fail;
}
+
+ rotational = block_device_is_rotational(path.c_str());
size = s;
} else {
size = st.st_size;
+ //regular file is rotational device
+ rotational = true;
}
// Operate as though the block size is 4 KB. The backing file
<< " (" << pretty_si_t(size) << "B)"
<< " block_size " << block_size
<< " (" << pretty_si_t(block_size) << "B)"
+ << " " << (rotational ? "rotational" : "non-rotational")
<< dendl;
return 0;
zeros.zero();
}
+ //nvme is non-rotational device.
+ rotational = false;
+
dout(1) << __func__ << " size " << size << " (" << pretty_si_t(size) << "B)"
<< " block_size " << block_size << " (" << pretty_si_t(block_size)
<< "B)" << dendl;