]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
seastore: add device_id_t in RBM 43632/head
authormyoungwon oh <ohmyoungwon@gmail.com>
Tue, 12 Oct 2021 13:48:17 +0000 (22:48 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Sat, 23 Oct 2021 15:06:55 +0000 (00:06 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/random_block_manager.h
src/crimson/os/seastore/random_block_manager/nvme_manager.cc
src/crimson/os/seastore/random_block_manager/nvme_manager.h

index 2c2150c2a88f7533c8bdba8135fb96347208ac1b..ee707478a2bf7843bc2b9c214540e0e5b09deec5 100644 (file)
@@ -33,6 +33,7 @@ public:
     size_t block_size = 0;
     size_t total_size = 0;
     uint32_t blocks_per_segment = 1 << 18;
+    device_id_t device_id = 0;
     seastore_meta_t meta;
   };
   using mkfs_ertr = crimson::errorator<
@@ -95,6 +96,7 @@ public:
   virtual size_t get_block_size() const = 0;
   virtual uint64_t get_free_blocks() const = 0;
   virtual uint32_t get_blocks_per_segment() const = 0;
+  virtual device_id_t get_device_id() const = 0;
   virtual ~RandomBlockManager() {}
 };
 using RandomBlockManagerRef = std::unique_ptr<RandomBlockManager>;
index 0a2cca569aa32dc30515024463795d260e72b9fa..8f37dfb816920f8f03fc5e8c18393ce139d15e79 100644 (file)
@@ -148,6 +148,7 @@ NVMeManager::mkfs_ertr::future<> NVMeManager::mkfs(mkfs_config_t config)
        super.crc = 0;
        super.feature |= RBM_BITMAP_BLOCK_CRC;
        super.blocks_per_segment = config.blocks_per_segment;
+       super.device_id = config.device_id;
 
        logger().debug(" super {} ", super);
        // write super block
@@ -274,7 +275,7 @@ NVMeManager::allocate_ret NVMeManager::alloc_extent(
              p.first * super.block_size,
              super.block_size,
              super.blocks_per_segment,
-             0);
+             super.device_id);
            size_t len = p.second * super.block_size;
            alloc_info.alloc_blk_ranges.push_back(std::make_pair(paddr, len));
            alloc_info.op = rbm_alloc_delta_t::op_types_t::SET;
@@ -287,7 +288,7 @@ NVMeManager::allocate_ret NVMeManager::alloc_extent(
          alloc_extent.range_start() * super.block_size,
          super.block_size,
          super.blocks_per_segment,
-         0);
+         super.device_id);
        return allocate_ret(
          allocate_ertr::ready_future_marker{},
          paddr);
@@ -308,7 +309,7 @@ void NVMeManager::add_free_extent(
     from,
     super.block_size,
     super.blocks_per_segment,
-    0);
+    super.device_id);
   rbm_alloc_delta_t alloc_info;
   alloc_info.alloc_blk_ranges.push_back(std::make_pair(paddr, len));
   alloc_info.op = rbm_alloc_delta_t::op_types_t::CLEAR;
index ad282691261df6f37c4d93125bf1cd01e10176b9..fa94cfea2729f49004096225bb956877d32cf316 100644 (file)
@@ -55,6 +55,7 @@ struct rbm_metadata_header_t {
   uint64_t flag; // reserved
   uint64_t feature;
   uint32_t blocks_per_segment; // the number of blocks in segment
+  device_id_t device_id;
   checksum_t crc;
 
   DENC(rbm_metadata_header_t, v, p) {
@@ -72,6 +73,7 @@ struct rbm_metadata_header_t {
     denc(v.flag, p);
     denc(v.feature, p);
     denc(v.blocks_per_segment, p);
+    denc(v.device_id, p);
 
     denc(v.crc, p);
     DENC_FINISH(p);
@@ -362,6 +364,9 @@ public:
   uint32_t get_blocks_per_segment() const final {
     return super.blocks_per_segment;
   }
+  device_id_t get_device_id() const final {
+    return super.device_id;
+  }
 
 private:
   /*