return 0;
}
+bool BlueFS::bdev_support_label(unsigned id)
+{
+ assert(id < bdev.size());
+ assert(bdev[id]);
+ return bdev[id]->supported_bdev_label();
+}
+
uint64_t BlueFS::get_block_device_size(unsigned id)
{
if (id < bdev.size() && bdev[id])
<< cpp_strerror(r) << dendl;
goto free_bluefs;
}
- r = _check_or_set_bdev_label(
- bfn,
- bluefs->get_block_device_size(BlueFS::BDEV_DB),
- "bluefs db", create);
- if (r < 0) {
- derr << __func__
- << " check block device(" << bfn << ") label returned: "
- << cpp_strerror(r) << dendl;
- goto free_bluefs;
+
+ if (bluefs->bdev_support_label(BlueFS::BDEV_DB)) {
+ r = _check_or_set_bdev_label(
+ bfn,
+ bluefs->get_block_device_size(BlueFS::BDEV_DB),
+ "bluefs db", create);
+ if (r < 0) {
+ derr << __func__
+ << " check block device(" << bfn << ") label returned: "
+ << cpp_strerror(r) << dendl;
+ goto free_bluefs;
+ }
}
if (create) {
bluefs->add_block_extent(
<< cpp_strerror(r) << dendl;
goto free_bluefs;
}
- r = _check_or_set_bdev_label(
- bfn,
- bluefs->get_block_device_size(BlueFS::BDEV_WAL),
- "bluefs wal", create);
- if (r < 0) {
- derr << __func__ << " check block device(" << bfn << ") label returned: "
- << cpp_strerror(r) << dendl;
- goto free_bluefs;
+
+ if (bluefs->bdev_support_label(BlueFS::BDEV_WAL)) {
+ r = _check_or_set_bdev_label(
+ bfn,
+ bluefs->get_block_device_size(BlueFS::BDEV_WAL),
+ "bluefs wal", create);
+ if (r < 0) {
+ derr << __func__ << " check block device(" << bfn
+ << ") label returned: " << cpp_strerror(r) << dendl;
+ goto free_bluefs;
+ }
}
+
if (create) {
bluefs->add_block_extent(
BlueFS::BDEV_WAL, BDEV_LABEL_BLOCK_SIZE,