From: xie xingguo Date: Wed, 20 Sep 2017 03:13:42 +0000 (+0800) Subject: osd/osd_type: get_clone_bytes - inline size() for overlapping size X-Git-Tag: v13.0.1~829^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F17823%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 7f10196aeb61..1c2c9b930e3c 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)