From bb1800c954c6349e12588291f0aa792a2f02c618 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 20 Aug 2020 19:39:15 +0800 Subject: [PATCH] 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 --- src/crimson/osd/pg_backend.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 7bb8660112581..6b9e353eae8ee 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(); } -- 2.39.5