]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
osd: bump versions of decoders for upmap-primary 57777/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 28 May 2024 14:46:25 +0000 (14:46 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 29 May 2024 16:52:56 +0000 (16:52 +0000)
commit0756b702e95d5f84ba7887e4d5d2552a1421827f
tree0631c5c497d4d8474dc7b9ad1d373930f92b1d7e
parentb494674fd09f43019d26827a5379484a1359464d
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>
src/osd/OSDMap.cc