From 05e92c0bfc7e07d477af8374f0cff816715bfc30 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Wed, 20 Sep 2017 11:13:42 +0800 Subject: [PATCH] osd/osd_type: get_clone_bytes - inline size() for overlapping size This is faster and simpler. A similar issue can be found at: https://github.com/ceph/ceph/pull/17807 Signed-off-by: xie xingguo --- src/osd/osd_types.cc | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 7f10196aeb61e..1c2c9b930e3c7 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -4787,13 +4787,8 @@ uint64_t SnapSet::get_clone_bytes(snapid_t clone) const uint64_t size = clone_size.find(clone)->second; assert(clone_overlap.count(clone)); const interval_set &overlap = clone_overlap.find(clone)->second; - for (interval_set::const_iterator i = overlap.begin(); - i != overlap.end(); - ++i) { - assert(size >= i.get_len()); - size -= i.get_len(); - } - return size; + assert(size >= (uint64_t)overlap.size()); + return size - overlap.size(); } void SnapSet::filter(const pg_pool_t &pinfo) -- 2.39.5