]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/os/alienstore/alien_store.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / crimson / os / alienstore / alien_store.h
index d8dd155b799263a94d89b43bb3d7a91b3e13aa0d..92739340e782c8360a1c4b272c9291863313e85b 100644 (file)
@@ -10,9 +10,9 @@
 #include "os/ObjectStore.h"
 #include "osd/osd_types.h"
 
+#include "crimson/os/alienstore/thread_pool.h"
 #include "crimson/os/futurized_collection.h"
 #include "crimson/os/futurized_store.h"
-#include "crimson/thread/ThreadPool.h"
 
 namespace ceph::os {
 class Transaction;
@@ -21,7 +21,23 @@ class Transaction;
 namespace crimson::os {
 class AlienStore final : public FuturizedStore {
 public:
-  mutable std::unique_ptr<crimson::thread::ThreadPool> tp;
+  class AlienOmapIterator final : public OmapIterator {
+  public:
+    AlienOmapIterator(ObjectMap::ObjectMapIterator& it,
+       AlienStore* store) : iter(it), store(store) {}
+    seastar::future<> seek_to_first();
+    seastar::future<> upper_bound(const std::string& after);
+    seastar::future<> lower_bound(const std::string& to);
+    bool valid() const;
+    seastar::future<> next();
+    std::string key();
+    seastar::future<std::string> tail_key();
+    ceph::buffer::list value();
+    int status() const;
+  private:
+    ObjectMap::ObjectMapIterator iter;
+    AlienStore* store;
+  };
   AlienStore(const std::string& path, const ConfigValues& values);
   ~AlienStore() final;
 
@@ -36,6 +52,11 @@ public:
                                    uint64_t offset,
                                    size_t len,
                                    uint32_t op_flags = 0) final;
+  read_errorator::future<ceph::bufferlist> readv(CollectionRef c,
+                                                const ghobject_t& oid,
+                                                interval_set<uint64_t>& m,
+                                                uint32_t op_flags = 0) final;
+                                             
 
   get_attr_errorator::future<ceph::bufferptr> get_attr(CollectionRef c,
                                             const ghobject_t& oid,
@@ -43,24 +64,24 @@ public:
   get_attrs_ertr::future<attrs_t> get_attrs(CollectionRef c,
                                      const ghobject_t& oid) final;
 
-  seastar::future<omap_values_t> omap_get_values(
+  read_errorator::future<omap_values_t> omap_get_values(
     CollectionRef c,
     const ghobject_t& oid,
     const omap_keys_t& keys) final;
 
-  seastar::future<std::vector<ghobject_t>, ghobject_t> list_objects(
-    CollectionRef c,
-    const ghobject_t& start,
-    const ghobject_t& end,
-    uint64_t limit) const final;
-
   /// Retrieves paged set of values > start (if present)
-  seastar::future<bool, omap_values_t> omap_get_values(
+  read_errorator::future<std::tuple<bool, omap_values_t>> omap_get_values(
     CollectionRef c,           ///< [in] collection
     const ghobject_t &oid,     ///< [in] oid
     const std::optional<std::string> &start ///< [in] start, empty for begin
     ) final; ///< @return <done, values> values.empty() iff done
 
+  seastar::future<std::tuple<std::vector<ghobject_t>, ghobject_t>> list_objects(
+    CollectionRef c,
+    const ghobject_t& start,
+    const ghobject_t& end,
+    uint64_t limit) const final;
+
   seastar::future<CollectionRef> create_new_collection(const coll_t& cid) final;
   seastar::future<CollectionRef> open_collection(const coll_t& cid) final;
   seastar::future<std::vector<coll_t>> list_collections() final;
@@ -70,16 +91,31 @@ public:
 
   seastar::future<> write_meta(const std::string& key,
                   const std::string& value) final;
-  seastar::future<int, std::string> read_meta(const std::string& key) final;
+  seastar::future<std::tuple<int, std::string>> read_meta(
+    const std::string& key) final;
   uuid_d get_fsid() const final;
   seastar::future<store_statfs_t> stat() const final;
   unsigned get_max_attr_name_length() const final;
+  seastar::future<struct stat> stat(
+    CollectionRef,
+    const ghobject_t&) final;
+  read_errorator::future<ceph::bufferlist> omap_get_header(
+    CollectionRef,
+    const ghobject_t&) final;
+  seastar::future<std::map<uint64_t, uint64_t>> fiemap(
+    CollectionRef,
+    const ghobject_t&,
+    uint64_t off,
+    uint64_t len) final;
+  seastar::future<FuturizedStore::OmapIteratorRef> get_omap_iterator(
+    CollectionRef ch,
+    const ghobject_t& oid) final;
 
 private:
   constexpr static unsigned MAX_KEYS_PER_OMAP_GET_CALL = 32;
+  mutable std::unique_ptr<crimson::os::ThreadPool> tp;
   const std::string path;
   uint64_t used_bytes = 0;
-  uuid_d osd_fsid;
   std::unique_ptr<ObjectStore> store;
   std::unique_ptr<CephContext> cct;
   seastar::gate transaction_gate;