]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: add get_blob_ptr helpers
authorSage Weil <sage@redhat.com>
Fri, 6 May 2016 18:30:45 +0000 (14:30 -0400)
committerSage Weil <sage@redhat.com>
Wed, 1 Jun 2016 15:38:43 +0000 (11:38 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.h
src/os/bluestore/bluestore_types.h

index 51b48de27cf469cd39028df9b82cd13c3724c365..cb41cb942a9eeea14018d7e50edc7202d41613f6 100644 (file)
@@ -94,6 +94,10 @@ public:
       return &p->second;
     }
 
+    int64_t get_new_blob_id() {
+      return blob_map.empty() ? 1 : blob_map.rbegin()->first + 1;
+    }
+
     friend void intrusive_ptr_add_ref(Enode *e) { e->get(); }
     friend void intrusive_ptr_release(Enode *e) { e->put(); }
 
@@ -222,6 +226,12 @@ public:
     OnodeRef get_onode(const ghobject_t& oid, bool create);
     EnodeRef get_enode(uint32_t hash);
 
+    bluestore_blob_t *get_blob_ptr(OnodeRef& o, int64_t blob) {
+      if (blob < 0 && !o->enode)
+       o->enode = get_enode(o->oid.hobj.get_hash());
+      return o->get_blob_ptr(blob);
+    }
+
     const coll_t &get_cid() override {
       return cid;
     }
index 21b78a38c0bf8c168c3e2697793fa4297ef47011..d751d37dbc36e59675dd173ffa041f9192abfb54 100644 (file)
@@ -518,6 +518,11 @@ struct bluestore_onode_t {
     return fp;
   }
 
+  bluestore_blob_t *add_blob(int64_t *id) {
+    *id = blob_map.empty() ? 1 : blob_map.rbegin()->first + 1;
+    return &blob_map[*id];
+  }
+
   bluestore_blob_t *get_blob_ptr(int64_t id) {
     bluestore_blob_map_t::iterator p = blob_map.find(id);
     if (p == blob_map.end())