New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mon,osd: luminous feature bits, require flags, upgrade gates #13278

Merged
merged 29 commits into from Feb 9, 2017

Conversation

Projects
None yet
4 participants
@liewegas
Member

liewegas commented Feb 6, 2017

  • require upgrade to pass through luminous before moving beyond
  • require mons upgrade to luminous before osds

@liewegas liewegas added the core label Feb 6, 2017

liewegas added some commits Feb 2, 2017

include/ceph_features: add SERVER_M feature placeholder
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: CEPH_FEATURE_RESEND_ON_SPLIT
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: new macros, and document deprecation process
This was super confusing before.  Hopefully it is better now!

Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire MONCLOCKCHECK
Deprecated in Jewel.

Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire QUERY_T
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: return INDEP_PG_MAP
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: define HAVE_FEATURE helper
This lets you test a feature succintly by name, *AND* makes use of the
FEATUREMASK so that it can be used on bitmasks that may come from old
versions with prior usages of the bit.  This makes it usable for data
type encoding or with client-provided bits.

Signed-off-by: Sage Weil <sage@redhat.com>
mon/MonClient: use FEATUREMASK for testing for SERVER_KRAKEN on the s…
…erver

The mon we are talking to may be an old ceph-mon with the prior meanging of
the SERVER_KRAKEN bit; use the mask to disambiguate instead of testing for
two featurse explicitly.

Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire {BACKFILL,RECOVERY}_RESERVATION
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire OSD_SNAPMAPPER
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: remove ceph_sanitize_features workaround
Way back in 9ea02b8 we defined the
SNAPMAPPER feature such that it set bits 32-63 by sign-extending a negative
int32_t to int64_t.  In 4255b5c it was
fixed.  This affected v0.58-657-g9ea02b8 to v0.65-263-g4255b5c.

The workaround santized features whenever the top bit 63 was set to be the
intended set of features (bits 0-32).  Only buggy peers in that range
ever set bit 63.

Since these versions are truly ancient (pre-dumpling) and no clients
should be that old, we are dropping the workaround.  Note that the Linux
kernel client never had this bug: 2b3e0c905af43cfe402a2ef3f800be5dc1684005
went from 30 bits used to 38 bits defiend with the workaround in place.

We deprecate the bit now (i.e., stop paying attention to this bit).  After
another extended period of time we'll eventually be able to retire
and reuse it.

Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire MON_SCRUB
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire OSD_PACKED_RECOVERY
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire OSD_SET_ALLOC_HINT
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire OSD_REPOP, OSD_OBJECT_DIGEST, OSD_TRANS…
…ACTION_MAY_LAYOUT

Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire OSD_MIN_SIZE_RECOVERY, OSD_PROXY_FEATURES
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_features: retire CHUNKY_SCRUB
Signed-off-by: Sage Weil <sage@redhat.com>
include/ceph_feaetures: retire MON_NULLROUTE
Signed-off-by: Sage Weil <sage@redhat.com>
msg/Connection: has_features()
Test for multiple features all being set together.  Note that this can be
used with the CEPH_FEATUREMASK_ defines to safely test for reused feature
bits.

Signed-off-by: Sage Weil <sage@redhat.com>
@jdurgin

jdurgin approved these changes Feb 7, 2017

those new macros are much easier to understand!

@jdurgin

looks like the cli tests at least need updating though

@liewegas

This comment has been minimized.

Member

liewegas commented Feb 7, 2017

fixed test

liewegas added some commits Feb 2, 2017

osd/OSDMap: add REQUIRE_LUMINOUS flag
Signed-off-by: Sage Weil <sage@redhat.com>
mon/OSDMonitor: all upgrades pass through luminous
Prevent post-luminous OSDs from starting before require_luminous_osds is
set.

Signed-off-by: Sage Weil <sage@redhat.com>
mon/mon_types: add sticky FEATURE_LUMINOUS feature bit
Once mons upgrade to luminous, you can't go back.

Signed-off-by: Sage Weil <sage@redhat.com>
osd: drop redundant check for hammer OSDs
The OSDMAP_REQUIRE_JEWEL flag requirement implies that there are no
pre-0.94.4 (early hammer) OSDs running.

Signed-off-by: Sage Weil <sage@redhat.com>
osd: require luminous mons before starting
Require that mons are upgraded to luminous first.  This will ensure that
the last_force_op_resend flag is set for pre-luminous clients so that
luminous OSDs can safely discard them.  (This will come in a future patch.)

Signed-off-by: Sage Weil <sage@redhat.com>
mon: fix kraken requirement to use FEATUREMASK, HAVE_FEATURE macro
The KRAKEN_SERVER bit was reused.

Signed-off-by: Sage Weil <sage@redhat.com>
mon: apply monmap features to quorum requirements
Previously this was indirect..

 monmap requirements -> compatset -> quorum requirements

However, how that we are consistently using the monmap features, we no
longer need to use the compatset features when the monmap already
communicates the same thing.  Rename the helper to reflect that
quorum requirements come from both the compatset and the monmap.

Signed-off-by: Sage Weil <sage@redhat.com>

liewegas added some commits Feb 7, 2017

mon/OSDMonitor: use HAVE_FEATURE for kraken, jewel feature tests
Signed-off-by: Sage Weil <sage@redhat.com>
osd/OSDMap: fix kraken feature requirement
Use the FEATUREMASK since this is a reused bit.

Signed-off-by: Sage Weil <sage@redhat.com>
@liewegas

This comment has been minimized.

Member

liewegas commented Feb 7, 2017

I noticed the last few patches weren't using HAVE_FEATURE properly (checks for kraken and lumninous were using simple bit masks). Fixed.

qa/suites/rados/upgrade/jewel-x-singleton: upgrade mons first; box th…
…rasher

Signed-off-by: Sage Weil <sage@redhat.com>
@yuriw

This comment has been minimized.

Contributor

yuriw commented Feb 9, 2017

@jdurgin @liewegas this was tested and can be megred

@jdurgin

jdurgin approved these changes Feb 9, 2017

@jdurgin jdurgin merged commit d0792bc into ceph:master Feb 9, 2017

3 checks passed

Signed-off-by all commits in this PR are signed
Details
Unmodifed Submodules submodules for project are unmodified
Details
default Build finished.
Details

@liewegas liewegas deleted the liewegas:wip-luminous branch Feb 9, 2017

@tchaikov

This comment has been minimized.

Contributor

tchaikov commented on qa/suites/rados/upgrade/jewel-x-singleton/3-thrash/default.yaml in c1f26b3 Feb 11, 2017

@liewegas we cannot box a yieldable task this way. see http://pulpito.ceph.com/kchai-2017-02-11_10:50:50-rados-master---basic-smithi/805295/. the __exit__ of thrashosd is not called until the very end of the all tasks. search "joining the do_sighup greenlet" in /a/kchai-2017-02-11_10:50:50-rados-master---basic-smithi/805295/teuthology.log.

scratch this, sorry for the noise. i am preparing a fix for the bug.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment