]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/os/seastore/random_block_manager/rbm_device.h
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / crimson / os / seastore / random_block_manager / rbm_device.h
index 7f30b197f3a5362f12eefd6d3f0536f4dd09d36e..501d9f913a1aa9c25ed13901c55e3c95a5cb122e 100644 (file)
@@ -84,6 +84,7 @@ public:
   }
 protected:
   rbm_metadata_header_t super;
+  rbm_shard_info_t shard_info;
 public:
   RBMDevice() {}
   virtual ~RBMDevice() = default;
@@ -152,8 +153,13 @@ public:
 
   mkfs_ret do_mkfs(device_config_t);
 
+  // shard 0 mkfs
+  mkfs_ret do_primary_mkfs(device_config_t, int shard_num, size_t journal_size);
+
   mount_ret do_mount();
 
+  mount_ret do_shard_mount();
+
   write_ertr::future<> write_rbm_header();
 
   read_ertr::future<rbm_metadata_header_t> read_rbm_header(rbm_abs_addr addr);
@@ -168,9 +174,21 @@ public:
     return super.journal_size;
   }
 
-  static rbm_abs_addr get_journal_start() {
+  static rbm_abs_addr get_shard_reserved_size() {
     return RBM_SUPERBLOCK_SIZE;
   }
+
+  rbm_abs_addr get_shard_journal_start() {
+    return shard_info.start_offset + get_shard_reserved_size();
+  }
+
+  uint64_t get_shard_start() const {
+    return shard_info.start_offset;
+  }
+
+  uint64_t get_shard_end() const {
+    return shard_info.start_offset + shard_info.size;
+  }
 };
 using RBMDeviceRef = std::unique_ptr<RBMDevice>;
 
@@ -195,14 +213,8 @@ public:
   std::size_t get_available_size() const final { return size; }
   extent_len_t get_block_size() const final { return block_size; }
 
-  mount_ret mount() final {
-    return do_mount();
-  }
-
-  mkfs_ret mkfs(device_config_t config) final {
-    super.journal_size = DEFAULT_TEST_CBJOURNAL_SIZE;
-    return do_mkfs(config);
-  }
+  mount_ret mount() final;
+  mkfs_ret mkfs(device_config_t config) final;
 
   open_ertr::future<> open(
     const std::string &in_path,