Project

General

Profile

Actions

Tasks #70193

closed

Tasks #63293: Implement fscrypt in libcephfs and cephfs-fuse

Tasks #69975: Sepia Lab Test Runs

Tasks #70192: choffman-2025-02-25_14:26:50-fs:fscrypt-wip-choffman-fscrypt-distro-default-smithi

dbench fails

Added by Christopher Hoffman 12 months ago. Updated 12 months ago.

Status:
Resolved
Priority:
Normal
Category:
-
Target version:
-
% Done:

0%

Reviewed:
Affected Versions:
Component(FS):
Labels (FS):
Pull request ID:
Tags (freeform):
Merge Commit:
Fixed In:
Released In:
Upkeep Timestamp:

Actions #1

Updated by Christopher Hoffman 12 months ago

  • Status changed from New to In Progress
Actions #2

Updated by Christopher Hoffman 12 months ago

  • Status changed from In Progress to Resolved

Issue resolved and reran here:
https://pulpito.ceph.com/choffman-2025-02-28_20:17:24-fs-wip-choffman-fscrypt-distro-default-smithi/8161144/

Author: Christopher Hoffman <[email protected]>
Date:   Thu Feb 27 19:11:40 2025 +0000

    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 <[email protected]>

diff --git a/src/client/Client.cc b/src/client/Client.cc
index 32799533039..0dd5eedc226 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -11834,14 +11834,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)) {

Actions

Also available in: Atom PDF