]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: bump versions of decoders for upmap-primary 58801/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 28 May 2024 14:46:25 +0000 (14:46 +0000)
committerLaura Flores <lflores@ibm.com>
Wed, 24 Jul 2024 21:51:33 +0000 (16:51 -0500)
commitfba62acc980fc2ad7b92679b477615b8e3756599
tree34b2b91c23440027c9f7b926dd5e9bc506403856
parent46c551b8a65961060d36895f89c179f4115c3147
osd: bump versions of decoders for upmap-primary

In e9921ee76c06 new revisions for client-usable data of
`OSDMap` (rev 10) and `OSDMap::Incremental` (rev 9) have
been introduced. However, corresponding `DECODE_START` in
decoders haven't been bumped up.

The net effect is a blur between the schemas when somebody
would intentionally (with `malformed_input` being thrown)
want to break compatibility with decoders on those versions
(refer to `struct_compat`).

```
/**
 * start a decoding block
 *
 * @param v current version of the encoding that the code supports/encodes
 * @param bl bufferlist::iterator for the encoded data
 */
  __u8 struct_v, struct_compat; \
  using ::ceph::decode; \
  decode(struct_v, bl); \
  decode(struct_compat, bl); \
  if (v < struct_compat) \
    throw ::ceph::buffer::malformed_input(DECODE_ERR_OLDVERSION(__PRETTY_FUNCTION__, v, struct_compat)); \
  __u32 struct_len; \
  decode(struct_len, bl); \
  if (struct_len > bl.get_remaining()) \
    throw ::ceph::buffer::malformed_input(DECODE_ERR_PAST(__PRETTY_FUNCTION__)); \
  unsigned struct_end = bl.get_off() + struct_len; \
  do {
```

Fixes: https://tracker.ceph.com/issues/66285
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit 0756b702e95d5f84ba7887e4d5d2552a1421827f)
src/osd/OSDMap.cc