From: Kefu Chai Date: Thu, 20 Aug 2020 11:39:15 +0000 (+0800) Subject: crimson/osd: update size of object after writing to object X-Git-Tag: v16.1.0~1347^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bb1800c954c6349e12588291f0aa792a2f02c618;p=ceph.git crimson/osd: update size of object after writing to object 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 --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 7bb866011258..6b9e353eae8e 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -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(); }