From: Sage Weil Date: Tue, 31 May 2016 17:43:25 +0000 (-0400) Subject: os/bluestore: populate buffer cache on read X-Git-Tag: v11.0.0~359^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=76794073780e712af616489f83ccab79da7c5959;p=ceph.git os/bluestore: populate buffer cache on read Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 450c5850ddf2..3f99fd0226f9 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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; diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 4dd982699530..b9df188b9909 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -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,