diff --git a/doc/dev/release-checklists.rst b/doc/dev/release-checklists.rst index 834e66e89472b..29ca724da3147 100644 --- a/doc/dev/release-checklists.rst +++ b/doc/dev/release-checklists.rst @@ -98,6 +98,7 @@ Code cleanup `ceph_release_t::*`) - [ ] search code for `require_osd_release` - [ ] search code for `min_mon_release` +- [ ] check include/denc.h if DENC_START macro still needs reference to squid QA suite -------- diff --git a/src/include/denc.h b/src/include/denc.h index cdc54a55129e8..c06bf46bf24da 100644 --- a/src/include/denc.h +++ b/src/include/denc.h @@ -53,6 +53,7 @@ #include "common/error_code.h" #include "common/likely.h" #include "ceph_release.h" +#include "include/rados.h" template struct denc_traits { @@ -1862,17 +1863,28 @@ inline std::enable_if_t decode_nohead( __u8 struct_compat = compat; \ char *_denc_pchar; \ uint32_t _denc_u32; \ - static_assert(CEPH_RELEASE >= (19/*squid*/ + 2) || compat == 1); \ + static_assert(CEPH_RELEASE >= (CEPH_RELEASE_SQUID /*19*/ + 2) || compat == 1); \ _denc_start(p, &struct_v, &struct_compat, &_denc_pchar, &_denc_u32); \ do { -// For the only type that is with compat 2, osd_reqid_t, and unittest. +// For the only type that is with compat 2: unittest. #define DENC_START_COMPAT_2(v, compat, p) \ __u8 struct_v = v; \ __u8 struct_compat = compat; \ char *_denc_pchar; \ uint32_t _denc_u32; \ - static_assert(CEPH_RELEASE >= (19/*squid*/ + 2) || compat == 2); \ + static_assert(CEPH_RELEASE >= (CEPH_RELEASE_SQUID /*19*/ + 2) || compat == 2); \ + _denc_start(p, &struct_v, &struct_compat, &_denc_pchar, &_denc_u32); \ + do { + +// For osd_reqid_t which cannot be upgraded at all. +// We used it to communicate with clients and now we cannot safely upgrade. +#define DENC_START_OSD_REQID(v, compat, p) \ + __u8 struct_v = v; \ + __u8 struct_compat = compat; \ + char *_denc_pchar; \ + uint32_t _denc_u32; \ + static_assert(compat == 2, "osd_reqid_t cannot be upgraded"); \ _denc_start(p, &struct_v, &struct_compat, &_denc_pchar, &_denc_u32); \ do { diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index ee814f29678a4..fe62fad2805d3 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -164,7 +164,7 @@ struct osd_reqid_t { {} DENC(osd_reqid_t, v, p) { - DENC_START_COMPAT_2(2, 2, p); + DENC_START_OSD_REQID(2, 2, p); denc(v.name, p); denc(v.tid, p); denc(v.inc, p);