]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PrimaryLogPG: make oi.extents handle 0-length write/write_full properly
authorxie xingguo <xie.xingguo@zte.com.cn>
Thu, 26 Oct 2017 03:04:33 +0000 (11:04 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Mon, 30 Oct 2017 13:32:42 +0000 (21:32 +0800)
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/PrimaryLogPG.cc

index 8b9beedba7b639a9b41bcd89b5eb37cb231f3340..d7f37292d86160eb2ed1c7f3a2f5aa478bb011da 100644 (file)
@@ -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);