From: xie xingguo Date: Thu, 26 Oct 2017 03:04:33 +0000 (+0800) Subject: osd/PrimaryLogPG: make oi.extents handle 0-length write/write_full properly X-Git-Tag: v13.0.1~349^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3b4cec7ec6259b3899a6a9ed2539b673c7bb59e5;p=ceph.git osd/PrimaryLogPG: make oi.extents handle 0-length write/write_full properly Signed-off-by: xie xingguo --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 8b9beedba7b6..d7f37292d861 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -7205,17 +7205,21 @@ void PrimaryLogPG::write_update_size_and_usage(object_stat_sum_t& delta_stats, o } oi.size = new_size; } - if (length && oi.has_extents()) { - delta_stats.num_bytes -= oi.extents.size(); - if (write_full) { - // oi.size may shrink - oi.extents.clear(); - assert(offset == 0); - oi.extents.insert(0, length); - } else { - oi.extents.union_of(ch); // deduplicated - } - delta_stats.num_bytes += oi.extents.size(); + if (oi.has_extents()) { + delta_stats.num_bytes -= oi.extents.size(); + if (write_full) { + // oi.size may shrink + oi.extents.clear(); + assert(offset == 0); + if (length) { + oi.extents.insert(0, length); + } + } else { + if (length) { + oi.extents.union_of(ch); // deduplicated + } + } + delta_stats.num_bytes += oi.extents.size(); } delta_stats.num_wr++; delta_stats.num_wr_kb += SHIFT_ROUND_UP(length, 10);