]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc: Make ObjectCache can accept fadvise_flags.
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 29 Jan 2015 06:45:51 +0000 (14:45 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 30 Jan 2015 03:29:46 +0000 (11:29 +0800)
The field flags of OSDRead/OSDWrite don't use anymore. Replace it with
fadvise_flags.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/librbd/ImageCtx.cc
src/librbd/ImageCtx.h
src/librbd/internal.cc
src/osdc/ObjectCacher.h

index ddc5cfe524fb1d63506aa7bf060400d5ee0f099f..92da3194e2d6ef3e273e4f5726ba262de74f038c 100644 (file)
@@ -486,9 +486,9 @@ namespace librbd {
   }
 
   void ImageCtx::aio_read_from_cache(object_t o, bufferlist *bl, size_t len,
-                                    uint64_t off, Context *onfinish) {
+                                    uint64_t off, Context *onfinish, int fadvise_flags) {
     snap_lock.get_read();
-    ObjectCacher::OSDRead *rd = object_cacher->prepare_read(snap_id, bl, 0);
+    ObjectCacher::OSDRead *rd = object_cacher->prepare_read(snap_id, bl, fadvise_flags);
     snap_lock.put_read();
     ObjectExtent extent(o, 0 /* a lie */, off, len, 0);
     extent.oloc.pool = data_ctx.get_id();
@@ -502,10 +502,10 @@ namespace librbd {
   }
 
   void ImageCtx::write_to_cache(object_t o, bufferlist& bl, size_t len,
-                               uint64_t off, Context *onfinish) {
+                               uint64_t off, Context *onfinish, int fadvise_flags) {
     snap_lock.get_read();
     ObjectCacher::OSDWrite *wr = object_cacher->prepare_write(snapc, bl,
-                                                             utime_t(), 0);
+                                                             utime_t(), fadvise_flags);
     snap_lock.put_read();
     ObjectExtent extent(o, 0, off, len, 0);
     extent.oloc.pool = data_ctx.get_id();
@@ -526,7 +526,7 @@ namespace librbd {
     Cond cond;
     bool done;
     Context *onfinish = new C_SafeCond(&mylock, &cond, &done, &r);
-    aio_read_from_cache(o, bl, len, off, onfinish);
+    aio_read_from_cache(o, bl, len, off, onfinish, 0);
     mylock.Lock();
     while (!done)
       cond.Wait(mylock);
index 41dfd33980051f48ad01ae22f4bdf0138bc44866..df9c84988d83537971502fb4c61c0514d8d60472 100644 (file)
@@ -156,9 +156,9 @@ namespace librbd {
     int get_parent_overlap(librados::snap_t in_snap_id,
                           uint64_t *overlap) const;
     void aio_read_from_cache(object_t o, bufferlist *bl, size_t len,
-                            uint64_t off, Context *onfinish);
+                            uint64_t off, Context *onfinish, int fadvise_flags);
     void write_to_cache(object_t o, bufferlist& bl, size_t len, uint64_t off,
-                       Context *onfinish);
+                       Context *onfinish, int fadivse_flags);
     int read_from_cache(object_t o, bufferlist *bl, size_t len, uint64_t off);
     void user_flushed();
     void flush_cache_aio(Context *onfinish);
index 7c51b5c36580a2a1cde59abde323cb8e708e2df0..7cf63ae8eaa7ee39304c1a13ac06b5048542556a 100644 (file)
@@ -3601,7 +3601,7 @@ reprotect_and_return_err:
       C_AioWrite *req_comp = new C_AioWrite(cct, c);
       if (ictx->object_cacher) {
        c->add_request();
-       ictx->write_to_cache(p->oid, bl, p->length, p->offset, req_comp);
+       ictx->write_to_cache(p->oid, bl, p->length, p->offset, req_comp, op_flags);
       } else {
        // reverse map this object extent onto the parent
        vector<pair<uint64_t,uint64_t> > objectx;
@@ -3797,7 +3797,7 @@ reprotect_and_return_err:
          ictx->readahead.inc_pending();
          ictx->aio_read_from_cache(q->oid, NULL,
                                    q->length, q->offset,
-                                   req_comp);
+                                   req_comp, 0);
        }
       }
       ictx->perfcounter->inc(l_librbd_readahead);
@@ -3871,7 +3871,7 @@ reprotect_and_return_err:
          C_CacheRead *cache_comp = new C_CacheRead(req);
          ictx->aio_read_from_cache(q->oid, &req->data(),
                                    q->length, q->offset,
-                                   cache_comp);
+                                   cache_comp, op_flags);
        } else {
          r = req->send();
          if (r == -ENOENT)
index b2acf986dfb92b9bebd7be183705c188fe636dea..da7b17d95d790bd20082f2ef1870693d2104acac 100644 (file)
@@ -56,8 +56,8 @@ class ObjectCacher {
     snapid_t snap;
     map<object_t, bufferlist*> read_data;  // bits of data as they come back
     bufferlist *bl;
-    int flags;
-    OSDRead(snapid_t s, bufferlist *b, int f) : snap(s), bl(b), flags(f) {}
+    int fadvise_flags;
+    OSDRead(snapid_t s, bufferlist *b, int f) : snap(s), bl(b), fadvise_flags(f) {}
   };
 
   OSDRead *prepare_read(snapid_t snap, bufferlist *b, int f) {
@@ -70,8 +70,8 @@ class ObjectCacher {
     SnapContext snapc;
     bufferlist bl;
     utime_t mtime;
-    int flags;
-    OSDWrite(const SnapContext& sc, bufferlist& b, utime_t mt, int f) : snapc(sc), bl(b), mtime(mt), flags(f) {}
+    int fadvise_flags;
+    OSDWrite(const SnapContext& sc, bufferlist& b, utime_t mt, int f) : snapc(sc), bl(b), mtime(mt), fadvise_flags(f) {}
   };
 
   OSDWrite *prepare_write(const SnapContext& sc, bufferlist &b, utime_t mt, int f) {