]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg: update MOSDOp() to use ceph_tid_t instead of long 55425/head
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Thu, 1 Feb 2024 14:40:03 +0000 (14:40 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Fri, 2 Feb 2024 10:59:47 +0000 (10:59 +0000)
The MOSDOp constructor receives the the transaction ID as a long
instead of ceph_tid_t.

The issue is that "long" uses 32b on Windows instead of 64 bits,
so it flips after about 2 billion requests. At that point, the OSD
replies are dropped because of transaction ID mismatches.

We'll solve the issue by using the correct type for the transaction
id, specifically ceph_tid_t.

Fixes: https://tracker.ceph.com/issues/64291
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit 0bab1e6b690ec4a12e8dc27229c435d64ca0d0be)

src/messages/MOSDOp.h

index 2275c458832299dd0097cf9a45405888e803cf23..131efa9a73bdfd0b47aa2cdfa13383e45912b87c 100644 (file)
@@ -174,7 +174,7 @@ public:
       partial_decode_needed(true),
       final_decode_needed(true),
       bdata_encode(false) { }
-  MOSDOp(int inc, long tid, const hobject_t& ho, spg_t& _pgid,
+  MOSDOp(int inc, ceph_tid_t tid, const hobject_t& ho, spg_t& _pgid,
         epoch_t _osdmap_epoch,
         int _flags, uint64_t feat)
     : MOSDFastDispatchOp(CEPH_MSG_OSD_OP, HEAD_VERSION, COMPAT_VERSION),