mds: encode bal_rank_mask using a higher (next) version#54745
Merged
mds: encode bal_rank_mask using a higher (next) version#54745
bal_rank_mask using a higher (next) version#54745Conversation
This is required for a reef client to work with a higher revision
MDS, since essentially, this happens:
reef(client):
if (version >=17) {
decode(bal_rank_mask, p);
}
and higher-revision MDS (say, upcoming squid):
version = 17
encode(version, bl);
...
...
encode(max_xattr_size, bl);
encode(bal_rank_mask, bl);
The client incorrectly decodes max_xattr_size (type: uint64_t) into
bal_rank_mask (type: string).
This situation ended up due to a couple of reasons:
* the kclient patchset hanlding `max_xattr_size` was merged early on
and another MDS side change that bumped the MDSMap encoding version
to 17 got merged in the midst (PR ceph#43284). Details in comment:
ceph#46357 (comment)
* The reef backport for PR ceph#46357 got delayed (and, reef branched out).
Which means reef(18.2.0) user-space clients are broken with higher version
MDSs.
Fixes: https://tracker.ceph.com/issues/63713
Signed-off-by: Venky Shankar <vshankar@redhat.com>
Contributor
Author
|
(Not sure why github has started to create draft PRs by default for me. Maybe because few days back I pushed a draft change and now github thinks all my new PRs are probably draft - weird). |
batrick
approved these changes
Dec 2, 2023
Member
batrick
left a comment
There was a problem hiding this comment.
Kudos to @leonid-s-usov for catching it.
Contributor
Author
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is required for a reef client to work with a higher revision MDS, since essentially, this happens:
reef(client):
if (version >=17) {
decode(bal_rank_mask, p);
}
and higher-revision MDS (say, upcoming squid):
version = 17
encode(version, bl);
...
...
encode(max_xattr_size, bl);
encode(bal_rank_mask, bl);
The client incorrectly decodes max_xattr_size (type: uint64_t) into
bal_rank_mask (type: string).
This situation ended up due to a couple of reasons:
the kclient patchset hanlding
max_xattr_sizewas merged early on and another MDS side change that bumped the MDSMap encoding version to 17 got merged in the midst (PR mds: add mds_bal_rank_mask config option #43284). Details in comment:The reef backport for PR mds: prevent clients from exceeding the xattrs key/value limits #46357 got delayed (and, reef branched out).
Which means reef(18.2.0) user-space clients are broken with higher version MDSs.
Fixes: https://tracker.ceph.com/issues/63713
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windowsjenkins test rook e2e