]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: provide access to bluefs allocated extents
authorIgor Fedotov <ifedotov@suse.com>
Tue, 8 Oct 2019 20:39:20 +0000 (23:39 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Tue, 28 Jul 2020 15:37:39 +0000 (18:37 +0300)
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
src/os/bluestore/BlueFS.cc

index 05352ca112ce5d12e2d3a49b2b2b251e196322ed..eff7ae62c197ee013b5ae0228d25b81127abaebe 100644 (file)
@@ -480,7 +480,17 @@ int BlueFS::get_block_extents(unsigned id, interval_set<uint64_t> *extents)
   dout(10) << __func__ << " bdev " << id << dendl;
   if (id >= block_all.size())
     return -EINVAL;
-  *extents = block_all[id];
+  if (alloc[id] && alloc[id] == shared_bdev_alloc) {
+    for (auto& p : file_map) {
+      for (auto& q : p.second->fnode.extents) {
+        if (alloc[q.bdev] == shared_bdev_alloc) {
+          extents->insert(q.offset, q.length);
+        }
+      }
+    }
+  } else {
+    *extents = block_all[id];
+  }
   return 0;
 }