]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
PGBackend: Make objects_read_sync can handle fadvise flags
authorJianpeng Ma <jianpeng.ma@intel.com>
Tue, 25 Nov 2014 06:36:02 +0000 (14:36 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 12 Dec 2014 06:23:35 +0000 (14:23 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/osd/ECBackend.cc
src/osd/ECBackend.h
src/osd/PGBackend.h
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h
src/osd/ReplicatedPG.cc

index 72f7371e145c289cee08e677eb5c9ef2b2df403a..ed971ab9ea854b2282c52ab2944e78c931434938 100644 (file)
@@ -1570,6 +1570,7 @@ int ECBackend::objects_read_sync(
   const hobject_t &hoid,
   uint64_t off,
   uint64_t len,
+  uint32_t op_flags,
   bufferlist *bl)
 {
   return -EOPNOTSUPP;
index f6199ff32125f7ddba4130adc7ab530e179a998b..2a71c339819e1dc1ed1654e10e5a69cc43c0ca9a 100644 (file)
@@ -112,6 +112,7 @@ public:
     const hobject_t &hoid,
     uint64_t off,
     uint64_t len,
+    uint32_t op_flags,
     bufferlist *bl);
 
   /**
index 59efef1c955facd8a881c8b5c20b160d6744ad51..82d520e8c32b6c7cc44b871f7fd8d38e4d0a6a6f 100644 (file)
      const hobject_t &hoid,
      uint64_t off,
      uint64_t len,
+     uint32_t op_flags,
      bufferlist *bl) = 0;
 
    virtual void objects_read_async(
index 2940dc8dcd49b6609d83ddc59e9beb616a1b019d..893ed180573bb0a28ed2d1d6e73fefa2e7cd6049 100644 (file)
@@ -225,9 +225,10 @@ int ReplicatedBackend::objects_read_sync(
   const hobject_t &hoid,
   uint64_t off,
   uint64_t len,
+  uint32_t op_flags,
   bufferlist *bl)
 {
-  return store->read(coll, hoid, off, len, *bl);
+  return store->read(coll, hoid, off, len, *bl, op_flags);
 }
 
 struct AsyncReadCallback : public GenContext<ThreadPool::TPHandle&> {
index 5e1f0ec126660d787c35a5ebece3421ccc39d67c..7de3922d2860e6f397fbd151b2a9bcc8f8d23879 100644 (file)
@@ -153,6 +153,7 @@ public:
     const hobject_t &hoid,
     uint64_t off,
     uint64_t len,
+    uint32_t op_flags,
     bufferlist *bl);
 
   void objects_read_async(
index f5898ebb9aebcdc3125381da907d0e5b9a10e851..502cf0cc32b0afb071a933584a72d27eea689f37 100644 (file)
@@ -3332,7 +3332,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          dout(10) << " async_read noted for " << soid << dendl;
        } else {
          int r = pgbackend->objects_read_sync(
-           soid, op.extent.offset, op.extent.length, &osd_op.outdata);
+           soid, op.extent.offset, op.extent.length, op.flags, &osd_op.outdata);
          if (r >= 0)
            op.extent.length = r;
          else {
@@ -3407,8 +3407,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
              last < miter->first) {
            bufferlist t;
            uint64_t len = miter->first - last;
-           r = pgbackend->objects_read_sync(
-             soid, last, len, &t);
+           r = pgbackend->objects_read_sync(soid, last, len, op.flags, &t);
            if (!t.is_zero()) {
              osd->clog->error() << coll << " " << soid << " sparse-read found data in hole "
                                << last << "~" << len << "\n";
@@ -3416,8 +3415,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          }
 
           bufferlist tmpbl;
-         r = pgbackend->objects_read_sync(
-           soid, miter->first, miter->second, &tmpbl);
+         r = pgbackend->objects_read_sync(soid, miter->first, miter->second, op.flags, &tmpbl);
           if (r < 0)
             break;
 
@@ -3435,8 +3433,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          if (last < end) {
            bufferlist t;
            uint64_t len = end - last;
-           r = pgbackend->objects_read_sync(
-             soid, last, len, &t);
+           r = pgbackend->objects_read_sync(soid, last, len, op.flags, &t);
            if (!t.is_zero()) {
              osd->clog->error() << coll << " " << soid << " sparse-read found data in hole "
                                << last << "~" << len << "\n";
@@ -5841,7 +5838,7 @@ int ReplicatedPG::fill_in_copy_get(
        cb->len = result;
       } else {
        result = pgbackend->objects_read_sync(
-         oi.soid, cursor.data_offset, left, &bl);
+         oi.soid, cursor.data_offset, left, osd_op.op.flags, &bl);
        if (result < 0)
          return result;
       }