]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: fscrypt rmw fails when endoff end of block or file
authorChristopher Hoffman <choffman@redhat.com>
Tue, 7 May 2024 00:59:11 +0000 (00:59 +0000)
committerChristopher Hoffman <choffman@redhat.com>
Wed, 5 Nov 2025 13:59:34 +0000 (13:59 +0000)
Fscrypt rmw fails when end of a write lines up with end of
a block or end of the file.

Fixes: https://tracker.ceph.com/issues/65745
Signed-off-by: Christopher Hoffman <choffman@redhat.com>
src/client/Client.cc

index 4c8f587bec75e5164e992795dce13f6ed2c7c705..e2355f604194a9a337ba051a0a0632943368518b 100644 (file)
@@ -12218,7 +12218,7 @@ int Client::WriteEncMgr::read_modify_write(Context *_iofinish)
   ofs_in_end_block = fscrypt_ofs_in_block(endoff - 1);
 
   need_read_start = ofs_in_start_block >= 0;
-  need_read_end = (endoff < in->effective_size() && ofs_in_end_block < FSCRYPT_BLOCK_SIZE - 1 && start_block != end_block);
+  need_read_end = (endoff <= in->effective_size() && ofs_in_end_block < FSCRYPT_BLOCK_SIZE && start_block != end_block);
   read_start_size = FSCRYPT_BLOCK_SIZE;
 
   bool need_read = need_read_start | need_read_end;