]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: Prevent race condition when printing Inode in ll_sync_inode 59162/head
authorChengen Du <chengen.du@canonical.com>
Mon, 12 Aug 2024 07:49:57 +0000 (15:49 +0800)
committerChengen Du <chengen.du@canonical.com>
Mon, 12 Aug 2024 10:17:37 +0000 (18:17 +0800)
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>
src/client/Client.cc

index 5f78e73f922249a550c395c7fe62df32f985a868..8f62bbbca79971c95ed9b1c4c527daf07306da2c 100644 (file)
@@ -16140,7 +16140,7 @@ int Client::ll_sync_inode(Inode *in, bool syncdataonly)
   if (!mref_reader.is_state_satisfied())
     return -CEPHFS_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;