#include "crimson/os/seastore/segment_manager.h"
#include "crimson/os/seastore/segment_manager/block.h"
-#include "crimson/common/log.h"
-
+#include "crimson/os/seastore/logging.h"
#ifdef HAVE_ZNS
#include "crimson/os/seastore/segment_manager/zns.h"
+SET_SUBSYS(seastore_device);
#endif
-namespace{
-
-#ifdef HAVE_ZNS
-seastar::logger &logger(){
- return crimson::get_logger(ceph_subsys_seastore_device);
-}
-#endif
-
-}
namespace crimson::os::seastore {
-std::ostream& operator<<(std::ostream& out, const device_spec_t& ds)
+std::ostream& operator<<(std::ostream& out, const block_shard_info_t& sf)
{
- return out << "device_spec("
- << "magic=" << ds.magic
- << ", device_type=" << ds.dtype
- << ", device_id=" << std::to_string(ds.id)
- << ")";
+ out << "("
+ << "size=" << sf.size
+ << ", segments=" <<sf.segments
+ << ", tracker_offset=" <<sf.tracker_offset
+ << ", first_segment_offset=" <<sf.first_segment_offset
+ <<")";
+ return out;
}
std::ostream& operator<<(std::ostream& out, const block_sm_superblock_t& sb)
{
out << "superblock("
- << "size=" << sb.size
+ << "shard_num=" << sb.shard_num
<< ", segment_size=" << sb.segment_size
<< ", block_size=" << sb.block_size
- << ", segments=" << sb.segments
- << ", tracker_offset=" << sb.tracker_offset
- << ", first_segment_offset=" << sb.first_segment_offset
- << ", major_dev=" << sb.major_dev
- << ", magic=" << sb.magic
- << ", device_type=" << sb.dtype
- << ", device_id=" << std::to_string(sb.device_id)
- << ", meta=" << sb.meta
- << ", secondary(";
- for (const auto& [k, v] : sb.secondary_devices) {
- out << std::to_string(k) << ": " << v;
- }
- return out << "))";
-}
-
-std::ostream& operator<<(std::ostream& out, const segment_manager_config_t& conf)
-{
- out << "sm_config_t("
- << "major_dev=" << conf.major_dev
- << ", magic=" << conf.magic
- << ", device_type=" << conf.dtype
- << ", device_id=" << std::to_string(conf.device_id)
- << ", meta=" << conf.meta
- << ", secondary(";
- for (const auto& [k, v] : conf.secondary_devices) {
- out << std::to_string(k) << ": " << v;
+ << ", shard_info:";
+ for (auto &sf : sb.shard_infos) {
+ out << sf
+ << ",";
}
- return out << "))";
+ out << "config=" << sb.config
+ << ")";
+ return out;
}
std::ostream& operator<<(std::ostream &out, Segment::segment_state_t s)
seastar::future<crimson::os::seastore::SegmentManagerRef>
SegmentManager::get_segment_manager(
- const std::string &device)
+ const std::string &device, device_type_t dtype)
{
#ifdef HAVE_ZNS
+LOG_PREFIX(SegmentManager::get_segment_manager);
return seastar::do_with(
static_cast<size_t>(0),
[&](auto &nr_zones) {
});
}).then([&](auto ret) -> crimson::os::seastore::SegmentManagerRef {
crimson::os::seastore::SegmentManagerRef sm;
- logger().error("NR_ZONES: {}", nr_zones);
+ INFO("Found {} zones.", nr_zones);
if (nr_zones != 0) {
return std::make_unique<
segment_manager::zns::ZNSSegmentManager
} else {
return std::make_unique<
segment_manager::block::BlockSegmentManager
- >(device + "/block");
+ >(device + "/block", dtype);
}
});
});
return seastar::make_ready_future<crimson::os::seastore::SegmentManagerRef>(
std::make_unique<
segment_manager::block::BlockSegmentManager
- >(device + "/block"));
+ >(device + "/block", dtype));
#endif
}