]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/io/Utils.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / librbd / io / Utils.h
index 9f7e0b94668bad13062cfbd88119a6a7c5b3978d..efb79b6a64da86d089f2b30cf5b959a9b6e8f2c6 100644 (file)
@@ -32,11 +32,11 @@ bool assemble_write_same_extent(const LightweightObjectExtent &object_extent,
 
 template <typename ImageCtxT = librbd::ImageCtx>
 void read_parent(ImageCtxT *image_ctx, uint64_t object_no,
-                 ReadExtents* extents, librados::snap_t snap_id,
+                 ReadExtents* read_extents, librados::snap_t snap_id,
                  const ZTracer::Trace &trace, Context* on_finish);
 
 template <typename ImageCtxT = librbd::ImageCtx>
-int clip_request(ImageCtxT *image_ctx, Extents *image_extents);
+int clip_request(ImageCtxT* image_ctx, Extents* image_extents, ImageArea area);
 
 inline uint64_t get_extents_length(const Extents &extents) {
   uint64_t total_bytes = 0;
@@ -53,20 +53,24 @@ void unsparsify(CephContext* cct, ceph::bufferlist* bl,
 template <typename ImageCtxT = librbd::ImageCtx>
 bool trigger_copyup(ImageCtxT *image_ctx, uint64_t object_no,
                     IOContext io_context, Context* on_finish);
-                
+
+template <typename ImageCtxT = librbd::ImageCtx>
+void area_to_object_extents(ImageCtxT* image_ctx, uint64_t offset,
+                            uint64_t length, ImageArea area,
+                            uint64_t buffer_offset,
+                            striper::LightweightObjectExtents* object_extents);
+
 template <typename ImageCtxT = librbd::ImageCtx>
-void file_to_extents(ImageCtxT *image_ctx, uint64_t offset, uint64_t length,
-                     uint64_t buffer_offset,
-                     striper::LightweightObjectExtents* object_extents);
+std::pair<Extents, ImageArea> object_to_area_extents(
+    ImageCtxT* image_ctx, uint64_t object_no, const Extents& object_extents);
 
 template <typename ImageCtxT = librbd::ImageCtx>
-void extent_to_file(ImageCtxT *image_ctx, uint64_t object_no, uint64_t offset,
-                    uint64_t length,
-                    std::vector<std::pair<uint64_t, uint64_t> >& extents);
+uint64_t area_to_raw_offset(const ImageCtxT& image_ctx, uint64_t offset,
+                            ImageArea area);
 
 template <typename ImageCtxT = librbd::ImageCtx>
-uint64_t get_file_offset(ImageCtxT *image_ctx, uint64_t object_no,
-                         uint64_t offset);
+std::pair<uint64_t, ImageArea> raw_to_area_offset(const ImageCtxT& image_ctx,
+                                                  uint64_t offset);
 
 inline ObjectDispatchLayer get_previous_layer(ObjectDispatchLayer layer) {
   return (ObjectDispatchLayer)(((int)layer) - 1);