]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: update size of object after writing to object
authorKefu Chai <kchai@redhat.com>
Thu, 20 Aug 2020 11:39:15 +0000 (19:39 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 22 Aug 2020 01:22:54 +0000 (09:22 +0800)
in the writesame op implemented in
6f7d1a435c1e80ee7ad6a9fca898d686255cc206, we failed to update the OI of
object after appending to it, in this change `oi.size` is updated
accordingly.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/crimson/osd/pg_backend.cc

index 7bb866011258131158c86211fb23ffe0036b47d7..6b9e353eae8ee018d4e267110406d04a56cfc75e 100644 (file)
@@ -472,13 +472,14 @@ seastar::future<> PGBackend::write_same(
     throw crimson::osd::invalid_argument();
   }
   ceph::bufferlist repeated_indata;
-  for (uint64_t size; size < len; size += op.writesame.data_length) {
+  for (uint64_t size = 0; size < len; size += op.writesame.data_length) {
     repeated_indata.append(osd_op.indata);
   }
   maybe_create_new_object(os, txn);
   txn.write(coll->get_cid(), ghobject_t{os.oi.soid},
-           op.writesame.offset, op.writesame.length,
-           std::move(repeated_indata), op.flags);
+            op.writesame.offset, len,
+            std::move(repeated_indata), op.flags);
+  os.oi.size = len;
   osd_op_params.clean_regions.mark_data_region_dirty(op.writesame.offset, len);
   return seastar::now();
 }