]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: populate buffer cache on read
authorSage Weil <sage@redhat.com>
Tue, 31 May 2016 17:43:25 +0000 (13:43 -0400)
committerSage Weil <sage@redhat.com>
Wed, 1 Jun 2016 15:40:50 +0000 (11:40 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index 450c5850ddf2fd0389526405bc998cff242aca1a..3f99fd0226f9144fe5245d8852b1cf3ce4362857 100644 (file)
@@ -3144,6 +3144,9 @@ int BlueStore::_do_read(
               << std::dec << dendl;
       bufferlist tmp;
       tmp.substr_of(pr->second, r_off, r_len);
+      if (buffered) {
+       o->bc.did_read(pos, tmp);
+      }
       bl.claim_append(tmp);
       pos += r_len;
       continue;
index 4dd98269953075aa586faa3063baf5943270a3d1..b9df188b99098a6ad4a6957e3e4e22ade8b940d2 100644 (file)
@@ -252,6 +252,10 @@ public:
        }
       }
     }
+    void did_read(uint64_t offset, bufferlist& bl) {
+      discard(offset, bl.length());
+      _add_buffer(new Buffer(this, Buffer::STATE_CLEAN, 0, offset, bl));
+    }
 
     void read(uint64_t offset, uint64_t length,
              BlueStore::ready_regions_t& res,