include/denc.h: Review fixes

- Added note to release-checklist
- Created specialized DENC_START_OSD_REQID
- Use CEPH_RELEASE_SQUID (19) value

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
This commit is contained in:
Adam Kupczyk 2024-07-16 13:15:38 +00:00
parent 71ca41dbaa
commit 6143b80ef7
3 changed files with 17 additions and 4 deletions

View File

@ -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
--------

View File

@ -53,6 +53,7 @@
#include "common/error_code.h"
#include "common/likely.h"
#include "ceph_release.h"
#include "include/rados.h"
template<typename T, typename=void>
struct denc_traits {
@ -1862,17 +1863,28 @@ inline std::enable_if_t<traits::supported && !traits::featured> 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 {

View File

@ -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);