]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: Prevent race condition when printing Inode in ll_sync_inode 59621/head
authorChengen Du <chengen.du@canonical.com>
Mon, 12 Aug 2024 07:49:57 +0000 (15:49 +0800)
committerPonnuvel Palaniyappan <pponnuvel@gmail.com>
Tue, 27 May 2025 09:08:04 +0000 (10:08 +0100)
In the ll_sync_inode function, the entire Inode structure is printed without
holding a lock. This can lead to a race condition when evaluating the assertion
in xlist<ObjectCacher::Object*>::size(), resulting in abnormal behavior.

Fixes: https://tracker.ceph.com/issues/67491
Co-authored-by: dongdong tao <tdd21151186@gmail.com>
Signed-off-by: Chengen Du <chengen.du@canonical.com>
(cherry picked from commit 2b78a5b3147d4e97be332ca88d286aec0ce44dc3)

src/client/Client.cc

index 674a2a606367fa02bc7bb66b10d839699c185fd5..fbc42f79a97da229d85f7f61510442849561922c 100644 (file)
@@ -16081,7 +16081,7 @@ int Client::ll_sync_inode(Inode *in, bool syncdataonly)
   if (!mref_reader.is_state_satisfied())
     return -ENOTCONN;
 
-  ldout(cct, 3) << "ll_sync_inode " << *in << " " << dendl;
+  ldout(cct, 3) << "ll_sync_inode " << _get_vino(in) << " " << dendl;
   tout(cct) << "ll_sync_inode" << std::endl;
   tout(cct) << (uintptr_t)in << std::endl;