From 1a48a8a2b222e41236341cb1241f0885a1b0b9d8 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 2 Mar 2015 11:23:44 +0800 Subject: [PATCH] osdc: After write try merge bh. Signed-off-by: Jianpeng Ma --- src/osdc/ObjectCacher.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/osdc/ObjectCacher.cc b/src/osdc/ObjectCacher.cc index 0935fae16d226..c33e9588d5ac3 100644 --- a/src/osdc/ObjectCacher.cc +++ b/src/osdc/ObjectCacher.cc @@ -886,6 +886,7 @@ void ObjectCacher::bh_write_commit(int64_t poolid, sobject_t oid, loff_t start, } } + list hit; // apply to bh's! for (map::iterator p = ob->data_lower_bound(start); p != ob->data.end(); @@ -917,6 +918,7 @@ void ObjectCacher::bh_write_commit(int64_t poolid, sobject_t oid, loff_t start, if (r >= 0) { // ok! mark bh clean and error-free mark_clean(bh); + hit.push_back(bh); ldout(cct, 10) << "bh_write_commit clean " << *bh << dendl; } else { mark_dirty(bh); @@ -926,6 +928,13 @@ void ObjectCacher::bh_write_commit(int64_t poolid, sobject_t oid, loff_t start, } } + for (list::iterator bh = hit.begin(); + bh != hit.end(); + ++bh) { + assert(*bh); + ob->try_merge_bh(*bh); + } + // update last_commit. assert(ob->last_commit_tid < tid); ob->last_commit_tid = tid; -- 2.39.5