]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/io/ObjectDispatchInterface.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / librbd / io / ObjectDispatchInterface.h
index 168d8006d1448273b6851667a599a756536cc396..2e9dd1300cf5f7cab3753300b29a9b03dae91d6d 100644 (file)
@@ -7,8 +7,8 @@
 #include "include/int_types.h"
 #include "include/buffer.h"
 #include "include/rados/librados.hpp"
-#include "common/snap_types.h"
 #include "common/zipkin_trace.h"
+#include "librbd/Types.h"
 #include "librbd/io/Types.h"
 
 struct Context;
@@ -18,32 +18,39 @@ namespace librbd {
 namespace io {
 
 struct AioCompletion;
+struct ObjectDispatchInterface;
+struct ObjectDispatchSpec;
 
 struct ObjectDispatchInterface {
+  typedef ObjectDispatchInterface Dispatch;
+  typedef ObjectDispatchLayer DispatchLayer;
+  typedef ObjectDispatchSpec DispatchSpec;
+
   virtual ~ObjectDispatchInterface() {
   }
 
-  virtual ObjectDispatchLayer get_object_dispatch_layer() const = 0;
+  virtual ObjectDispatchLayer get_dispatch_layer() const = 0;
 
   virtual void shut_down(Context* on_finish) = 0;
 
   virtual bool read(
-      uint64_t object_no, uint64_t object_off, uint64_t object_len,
-      librados::snap_t snap_id, int op_flags,const ZTracer::Trace &parent_trace,
-      ceph::bufferlist* read_data, ExtentMap* extent_map,
-      int* object_dispatch_flags, DispatchResult* dispatch_result,
-      Context** on_finish, Context* on_dispatched) = 0;
+      uint64_t object_no, ReadExtents* extents, IOContext io_context,
+      int op_flags, int read_flags, const ZTracer::Trace &parent_trace,
+      uint64_t* version, int* object_dispatch_flags,
+      DispatchResult* dispatch_result, Context** on_finish,
+      Context* on_dispatched) = 0;
 
   virtual bool discard(
       uint64_t object_no, uint64_t object_off, uint64_t object_len,
-      const ::SnapContext &snapc, int discard_flags,
+      IOContext io_context, int discard_flags,
       const ZTracer::Trace &parent_trace, int* object_dispatch_flags,
       uint64_t* journal_tid, DispatchResult* dispatch_result,
       Context**on_finish, Context* on_dispatched) = 0;
 
   virtual bool write(
       uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data,
-      const ::SnapContext &snapc, int op_flags,
+      IOContext io_context, int op_flags, int write_flags,
+      std::optional<uint64_t> assert_version,
       const ZTracer::Trace &parent_trace, int* object_dispatch_flags,
       uint64_t* journal_tid, DispatchResult* dispatch_result,
       Context**on_finish, Context* on_dispatched) = 0;
@@ -51,14 +58,14 @@ struct ObjectDispatchInterface {
   virtual bool write_same(
       uint64_t object_no, uint64_t object_off, uint64_t object_len,
       LightweightBufferExtents&& buffer_extents, ceph::bufferlist&& data,
-      const ::SnapContext &snapc, int op_flags,
-      const ZTracer::Trace &parent_trace, int* object_dispatch_flags,
-      uint64_t* journal_tid, DispatchResult* dispatch_result,
-      Context**on_finish, Context* on_dispatched) = 0;
+      IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace,
+      int* object_dispatch_flags, uint64_t* journal_tid,
+      DispatchResult* dispatch_result, Context**on_finish,
+      Context* on_dispatched) = 0;
 
   virtual bool compare_and_write(
       uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data,
-      ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags,
+      ceph::bufferlist&& write_data, IOContext io_context, int op_flags,
       const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset,
       int* object_dispatch_flags, uint64_t* journal_tid,
       DispatchResult* dispatch_result, Context** on_finish,
@@ -69,6 +76,13 @@ struct ObjectDispatchInterface {
       uint64_t* journal_tid, DispatchResult* dispatch_result,
       Context** on_finish, Context* on_dispatched) = 0;
 
+  virtual bool list_snaps(
+      uint64_t object_no, Extents&& extents, SnapIds&& snap_ids,
+      int list_snap_flags, const ZTracer::Trace &parent_trace,
+      SnapshotDelta* snapshot_delta, int* object_dispatch_flags,
+      DispatchResult* dispatch_result, Context** on_finish,
+      Context* on_dispatched) = 0;
+
   virtual bool invalidate_cache(Context* on_finish) = 0;
   virtual bool reset_existence_cache(Context* on_finish) = 0;
 
@@ -76,6 +90,10 @@ struct ObjectDispatchInterface {
       uint64_t object_no, uint64_t object_off, uint64_t object_len,
       uint64_t journal_tid, uint64_t new_journal_tid) = 0;
 
+  virtual int prepare_copyup(
+      uint64_t object_no,
+      SnapshotSparseBufferlist* snapshot_sparse_bufferlist) = 0;
+
 };
 
 } // namespace io