]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/Memstore: move PageSetObject class to .cc file 10817/head
authorMichal Jarzabek <stiopa@gmail.com>
Mon, 22 Aug 2016 19:25:45 +0000 (20:25 +0100)
committerMichal Jarzabek <stiopa@gmail.com>
Mon, 22 Aug 2016 19:28:10 +0000 (20:28 +0100)
Signed-off-by: Michal Jarzabek <stiopa@gmail.com>
src/os/memstore/MemStore.cc
src/os/memstore/MemStore.h

index 908da42f0c342eabfaf9cda483e6e68509fdc6c1..f07cb3158b4304b21689d711b029cb2e3098e61d 100644 (file)
@@ -1478,6 +1478,41 @@ int MemStore::BufferlistObject::truncate(uint64_t size)
 
 // PageSetObject
 
+struct MemStore::PageSetObject : public Object {
+  PageSet data;
+  uint64_t data_len;
+#if defined(__GLIBCXX__)
+  // use a thread-local vector for the pages returned by PageSet, so we
+  // can avoid allocations in read/write()
+  static thread_local PageSet::page_vector tls_pages;
+#endif
+
+  explicit PageSetObject(size_t page_size) : data(page_size), data_len(0) {}
+
+  size_t get_size() const override { return data_len; }
+
+  int read(uint64_t offset, uint64_t len, bufferlist &bl) override;
+  int write(uint64_t offset, const bufferlist &bl) override;
+  int clone(Object *src, uint64_t srcoff, uint64_t len,
+            uint64_t dstoff) override;
+  int truncate(uint64_t offset) override;
+
+  void encode(bufferlist& bl) const override {
+    ENCODE_START(1, 1, bl);
+    ::encode(data_len, bl);
+    data.encode(bl);
+    encode_base(bl);
+    ENCODE_FINISH(bl);
+  }
+  void decode(bufferlist::iterator& p) override {
+    DECODE_START(1, p);
+    ::decode(data_len, p);
+    data.decode(p);
+    decode_base(p);
+    DECODE_FINISH(p);
+  }
+};
+
 #if defined(__GLIBCXX__)
 // use a thread-local vector for the pages returned by PageSet, so we
 // can avoid allocations in read/write()
@@ -1632,3 +1667,10 @@ int MemStore::PageSetObject::truncate(uint64_t size)
   tls_pages.clear(); // drop page ref
   return 0;
 }
+
+
+MemStore::ObjectRef MemStore::Collection::create_object() const {
+  if (use_page_set)
+    return new PageSetObject(cct->_conf->memstore_page_size);
+  return new BufferlistObject();
+}
index 1759932e7fe840d7bb324bbe4eeadb98367c3df9..b3ff7101a74495749e317579b68a6afc7bcd5bdd 100644 (file)
@@ -121,41 +121,7 @@ public:
     }
   };
 
-  struct PageSetObject : public Object {
-    PageSet data;
-    uint64_t data_len;
-#if defined(__GLIBCXX__)
-    // use a thread-local vector for the pages returned by PageSet, so we
-    // can avoid allocations in read/write()
-    static thread_local PageSet::page_vector tls_pages;
-#endif
-
-    explicit PageSetObject(size_t page_size) : data(page_size), data_len(0) {}
-
-    size_t get_size() const override { return data_len; }
-
-    int read(uint64_t offset, uint64_t len, bufferlist &bl) override;
-    int write(uint64_t offset, const bufferlist &bl) override;
-    int clone(Object *src, uint64_t srcoff, uint64_t len,
-              uint64_t dstoff) override;
-    int truncate(uint64_t offset) override;
-
-    void encode(bufferlist& bl) const override {
-      ENCODE_START(1, 1, bl);
-      ::encode(data_len, bl);
-      data.encode(bl);
-      encode_base(bl);
-      ENCODE_FINISH(bl);
-    }
-    void decode(bufferlist::iterator& p) override {
-      DECODE_START(1, p);
-      ::decode(data_len, p);
-      data.decode(p);
-      decode_base(p);
-      DECODE_FINISH(p);
-    }
-  };
-
+  struct PageSetObject;
   struct Collection : public CollectionImpl {
     coll_t cid;
     CephContext *cct;
@@ -174,11 +140,7 @@ public:
       return cid;
     }
 
-    ObjectRef create_object() const {
-      if (use_page_set)
-        return new PageSetObject(cct->_conf->memstore_page_size);
-      return new BufferlistObject();
-    }
+    ObjectRef create_object() const;
 
     // NOTE: The lock only needs to protect the object_map/hash, not the
     // contents of individual objects.  The osd is already sequencing