]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg: update MOSDOp() to use ceph_tid_t instead of long 55413/head
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Thu, 1 Feb 2024 14:40:03 +0000 (14:40 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Thu, 1 Feb 2024 15:01:36 +0000 (15:01 +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>
src/messages/MOSDOp.h

index 6edc590e51f110bf2d600b7e6fbb30f8af50dc40..61908d802cd7873d3a2b772643b32e00e750f58a 100644 (file)
@@ -178,7 +178,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),