From bf76f37507d1479d4da1b7f0b7f9596a3f72c144 Mon Sep 17 00:00:00 2001 From: Christopher Hoffman Date: Thu, 27 Feb 2025 19:11:40 +0000 Subject: [PATCH] client: Use correct sizes in write_success Write success had some incorrect usage of sizes. request_[size|offset] refers to logical size toalwritten + offset refers to written to osd size Fixes: https://tracker.ceph.com/issues/70193 Signed-off-by: Christopher Hoffman --- src/client/Client.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 1a6353a8eba3a..c5fb556fb36df 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -12146,14 +12146,12 @@ int64_t Client::_write_success(Fh *f, utime_t start, uint64_t fpos, // extend file? if (request_size + request_offset > in->effective_size()) { - size = request_size + request_offset; if (encrypted) { - in->set_effective_size(size); + in->set_effective_size(request_size + request_offset); in->mark_caps_dirty(CEPH_CAP_FILE_EXCL); - size = fscrypt_next_block_start(offset + size); } ldout(cct, 7) << "in->effective_size()=" << in->effective_size() << dendl; - in->size = size; + in->size = totalwritten + offset; in->mark_caps_dirty(CEPH_CAP_FILE_WR); if (is_quota_bytes_approaching(in, f->actor_perms)) { -- 2.39.5