summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-15 21:48:06 -0700
committerSage Weil <sage@inktank.com>2013-08-26 13:10:10 -0700
commit02608a12d4e7592784148a62a47d568efc24079d (patch)
tree12078ab6f63bf7f7c656f7f70a5db5d8369cbaa4
parent0e2bfe71965eeef29b47e8032637ea820a7ce49c (diff)
downloadceph-02608a12d4e7592784148a62a47d568efc24079d.tar.gz
osdc/ObjectCacher: do not merge rx buffers
We do not try to merge rx buffers currently. Make that explicit and documented in the code that it is not supported. (Otherwise the last_read_tid values will get lost and read results won't get applied to the cache properly.) Signed-off-by: Sage Weil <sage@inktank.com> (cherry picked from commit 1c50c446152ab0e571ae5508edb4ad7c7614c310)
-rw-r--r--src/osdc/ObjectCacher.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/osdc/ObjectCacher.cc b/src/osdc/ObjectCacher.cc
index 8dd9de26cf6..01eeccc03be 100644
--- a/src/osdc/ObjectCacher.cc
+++ b/src/osdc/ObjectCacher.cc
@@ -114,6 +114,10 @@ void ObjectCacher::Object::try_merge_bh(BufferHead *bh)
assert(oc->lock.is_locked());
ldout(oc->cct, 10) << "try_merge_bh " << *bh << dendl;
+ // do not merge rx buffers; last_read_tid may not match
+ if (bh->is_rx())
+ return;
+
// to the left?
map<loff_t,BufferHead*>::iterator p = data.find(bh->start());
assert(p->second == bh);