Skip to content

Commit

Permalink
include/denc.h: Review fixes
Browse files Browse the repository at this point in the history
- Added note to release-checklist
- Created specialized DENC_START_OSD_REQID
- Use CEPH_RELEASE_SQUID (19) value

Signed-off-by: Adam Kupczyk <[email protected]>
  • Loading branch information
aclamk committed Jul 16, 2024
1 parent 71ca41d commit 6143b80
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
1 change: 1 addition & 0 deletions doc/dev/release-checklists.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
--------
Expand Down
18 changes: 15 additions & 3 deletions src/include/denc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {

Expand Down
2 changes: 1 addition & 1 deletion src/osd/osd_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 6143b80

Please sign in to comment.