Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
f179d3ba
Commit
f179d3ba
authored
Jun 05, 2017
by
Ilya Dryomov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libceph: new features macros
Signed-off-by:
Ilya Dryomov
<
idryomov@gmail.com
>
parent
dcbbd97c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
167 additions
and
75 deletions
+167
-75
include/linux/ceph/ceph_features.h
include/linux/ceph/ceph_features.h
+167
-75
No files found.
include/linux/ceph/ceph_features.h
View file @
f179d3ba
...
...
@@ -2,82 +2,174 @@
#define __CEPH_FEATURES
/*
* feature bits
* Each time we reclaim bits for reuse we need to specify another bit
* that, if present, indicates we have the new incarnation of that
* feature. Base case is 1 (first use).
*/
#define CEPH_FEATURE_UID (1ULL<<0)
#define CEPH_FEATURE_NOSRCADDR (1ULL<<1)
#define CEPH_FEATURE_MONCLOCKCHECK (1ULL<<2)
#define CEPH_FEATURE_FLOCK (1ULL<<3)
#define CEPH_FEATURE_SUBSCRIBE2 (1ULL<<4)
#define CEPH_FEATURE_MONNAMES (1ULL<<5)
#define CEPH_FEATURE_RECONNECT_SEQ (1ULL<<6)
#define CEPH_FEATURE_DIRLAYOUTHASH (1ULL<<7)
#define CEPH_FEATURE_OBJECTLOCATOR (1ULL<<8)
#define CEPH_FEATURE_PGID64 (1ULL<<9)
#define CEPH_FEATURE_INCSUBOSDMAP (1ULL<<10)
#define CEPH_FEATURE_PGPOOL3 (1ULL<<11)
#define CEPH_FEATURE_OSDREPLYMUX (1ULL<<12)
#define CEPH_FEATURE_OSDENC (1ULL<<13)
#define CEPH_FEATURE_OMAP (1ULL<<14)
#define CEPH_FEATURE_MONENC (1ULL<<15)
#define CEPH_FEATURE_QUERY_T (1ULL<<16)
#define CEPH_FEATURE_INDEP_PG_MAP (1ULL<<17)
#define CEPH_FEATURE_CRUSH_TUNABLES (1ULL<<18)
#define CEPH_FEATURE_CHUNKY_SCRUB (1ULL<<19)
#define CEPH_FEATURE_MON_NULLROUTE (1ULL<<20)
#define CEPH_FEATURE_MON_GV (1ULL<<21)
#define CEPH_FEATURE_BACKFILL_RESERVATION (1ULL<<22)
#define CEPH_FEATURE_MSG_AUTH (1ULL<<23)
#define CEPH_FEATURE_RECOVERY_RESERVATION (1ULL<<24)
#define CEPH_FEATURE_CRUSH_TUNABLES2 (1ULL<<25)
#define CEPH_FEATURE_CREATEPOOLID (1ULL<<26)
#define CEPH_FEATURE_REPLY_CREATE_INODE (1ULL<<27)
#define CEPH_FEATURE_OSD_HBMSGS (1ULL<<28)
#define CEPH_FEATURE_MDSENC (1ULL<<29)
#define CEPH_FEATURE_OSDHASHPSPOOL (1ULL<<30)
#define CEPH_FEATURE_MON_SINGLE_PAXOS (1ULL<<31)
#define CEPH_FEATURE_OSD_SNAPMAPPER (1ULL<<32)
#define CEPH_FEATURE_MON_SCRUB (1ULL<<33)
#define CEPH_FEATURE_OSD_PACKED_RECOVERY (1ULL<<34)
#define CEPH_FEATURE_OSD_CACHEPOOL (1ULL<<35)
#define CEPH_FEATURE_CRUSH_V2 (1ULL<<36)
/* new indep; SET_* steps */
#define CEPH_FEATURE_EXPORT_PEER (1ULL<<37)
#define CEPH_FEATURE_OSD_ERASURE_CODES (1ULL<<38)
#define CEPH_FEATURE_OSD_TMAP2OMAP (1ULL<<38)
/* overlap with EC */
/* The process supports new-style OSDMap encoding. Monitors also use
this bit to determine if peers support NAK messages. */
#define CEPH_FEATURE_OSDMAP_ENC (1ULL<<39)
#define CEPH_FEATURE_MDS_INLINE_DATA (1ULL<<40)
#define CEPH_FEATURE_CRUSH_TUNABLES3 (1ULL<<41)
#define CEPH_FEATURE_OSD_PRIMARY_AFFINITY (1ULL<<41)
/* overlap w/ tunables3 */
#define CEPH_FEATURE_MSGR_KEEPALIVE2 (1ULL<<42)
#define CEPH_FEATURE_OSD_POOLRESEND (1ULL<<43)
#define CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 (1ULL<<44)
#define CEPH_FEATURE_OSD_SET_ALLOC_HINT (1ULL<<45)
#define CEPH_FEATURE_OSD_FADVISE_FLAGS (1ULL<<46)
#define CEPH_FEATURE_OSD_REPOP (1ULL<<46)
/* overlap with fadvise */
#define CEPH_FEATURE_OSD_OBJECT_DIGEST (1ULL<<46)
/* overlap with fadvise */
#define CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT (1ULL<<46)
/* overlap w/ fadvise */
#define CEPH_FEATURE_MDS_QUOTA (1ULL<<47)
#define CEPH_FEATURE_CRUSH_V4 (1ULL<<48)
/* straw2 buckets */
#define CEPH_FEATURE_OSD_MIN_SIZE_RECOVERY (1ULL<<49)
// duplicated since it was introduced at the same time as MIN_SIZE_RECOVERY
#define CEPH_FEATURE_OSD_PROXY_FEATURES (1ULL<<49)
/* overlap w/ above */
#define CEPH_FEATURE_MON_METADATA (1ULL<<50)
#define CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT (1ULL<<51)
/* can sort objs bitwise */
#define CEPH_FEATURE_OSD_PROXY_WRITE_FEATURES (1ULL<<52)
#define CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3 (1ULL<<53)
#define CEPH_FEATURE_OSD_HITSET_GMT (1ULL<<54)
#define CEPH_FEATURE_HAMMER_0_94_4 (1ULL<<55)
#define CEPH_FEATURE_NEW_OSDOP_ENCODING (1ULL<<56)
/* New, v7 encoding */
#define CEPH_FEATURE_MON_STATEFUL_SUB (1ULL<<57)
/* stateful mon subscription */
#define CEPH_FEATURE_MON_ROUTE_OSDMAP (1ULL<<57)
/* peon sends osdmaps */
#define CEPH_FEATURE_CRUSH_TUNABLES5 (1ULL<<58)
/* chooseleaf stable mode */
// duplicated since it was introduced at the same time as CEPH_FEATURE_CRUSH_TUNABLES5
#define CEPH_FEATURE_NEW_OSDOPREPLY_ENCODING (1ULL<<58)
/* New, v7 encoding */
#define CEPH_FEATURE_FS_FILE_LAYOUT_V2 (1ULL<<58)
/* file_layout_t */
#define CEPH_FEATURE_RESERVED (1ULL<<63)
#define CEPH_FEATURE_INCARNATION_1 (0ull)
#define CEPH_FEATURE_INCARNATION_2 (1ull<<57) // CEPH_FEATURE_SERVER_JEWEL
#define DEFINE_CEPH_FEATURE(bit, incarnation, name) \
const static uint64_t CEPH_FEATURE_##name = (1ULL<<bit); \
const static uint64_t CEPH_FEATUREMASK_##name = \
(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
/* this bit is ignored but still advertised by release *when* */
#define DEFINE_CEPH_FEATURE_DEPRECATED(bit, incarnation, name, when) \
const static uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \
const static uint64_t DEPRECATED_CEPH_FEATUREMASK_##name = \
(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
/*
* this bit is ignored by release *unused* and not advertised by
* release *unadvertised*
*/
#define DEFINE_CEPH_FEATURE_RETIRED(bit, inc, name, unused, unadvertised)
/*
* test for a feature. this test is safer than a typical mask against
* the bit because it ensures that we have the bit AND the marker for the
* bit's incarnation. this must be used in any case where the features
* bits may include an old meaning of the bit.
*/
#define CEPH_HAVE_FEATURE(x, name) \
(((x) & (CEPH_FEATUREMASK_##name)) == (CEPH_FEATUREMASK_##name))
/*
* Notes on deprecation:
*
* A *major* release is a release through which all upgrades must pass
* (e.g., jewel). For example, no pre-jewel server will ever talk to
* a post-jewel server (mon, osd, etc).
*
* For feature bits used *only* on the server-side:
*
* - In the first phase we indicate that a feature is DEPRECATED as of
* a particular release. This is the first major release X (say,
* jewel) that does not depend on its peers advertising the feature.
* That is, it safely assumes its peers all have the feature. We
* indicate this with the DEPRECATED macro. For example,
*
* DEFINE_CEPH_FEATURE_DEPRECATED( 2, 1, MONCLOCKCHECK, JEWEL)
*
* because 10.2.z (jewel) did not care if its peers advertised this
* feature bit.
*
* - In the second phase we stop advertising the the bit and call it
* RETIRED. This can normally be done in the *next* major release
* following the one in which we marked the feature DEPRECATED. In
* the above example, for 12.0.z (luminous) we can say:
*
* DEFINE_CEPH_FEATURE_RETIRED( 2, 1, MONCLOCKCHECK, JEWEL, LUMINOUS)
*
* - The bit can be reused in the first post-luminous release, 13.0.z
* (m).
*
* This ensures that no two versions who have different meanings for
* the bit ever speak to each other.
*/
DEFINE_CEPH_FEATURE
(
0
,
1
,
UID
)
DEFINE_CEPH_FEATURE
(
1
,
1
,
NOSRCADDR
)
DEFINE_CEPH_FEATURE_RETIRED
(
2
,
1
,
MONCLOCKCHECK
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE
(
3
,
1
,
FLOCK
)
DEFINE_CEPH_FEATURE
(
4
,
1
,
SUBSCRIBE2
)
DEFINE_CEPH_FEATURE
(
5
,
1
,
MONNAMES
)
DEFINE_CEPH_FEATURE
(
6
,
1
,
RECONNECT_SEQ
)
DEFINE_CEPH_FEATURE
(
7
,
1
,
DIRLAYOUTHASH
)
DEFINE_CEPH_FEATURE
(
8
,
1
,
OBJECTLOCATOR
)
DEFINE_CEPH_FEATURE
(
9
,
1
,
PGID64
)
DEFINE_CEPH_FEATURE
(
10
,
1
,
INCSUBOSDMAP
)
DEFINE_CEPH_FEATURE
(
11
,
1
,
PGPOOL3
)
DEFINE_CEPH_FEATURE
(
12
,
1
,
OSDREPLYMUX
)
DEFINE_CEPH_FEATURE
(
13
,
1
,
OSDENC
)
DEFINE_CEPH_FEATURE_RETIRED
(
14
,
1
,
OMAP
,
HAMMER
,
JEWEL
)
DEFINE_CEPH_FEATURE
(
14
,
2
,
SERVER_KRAKEN
)
DEFINE_CEPH_FEATURE
(
15
,
1
,
MONENC
)
DEFINE_CEPH_FEATURE_RETIRED
(
16
,
1
,
QUERY_T
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
17
,
1
,
INDEP_PG_MAP
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE
(
18
,
1
,
CRUSH_TUNABLES
)
DEFINE_CEPH_FEATURE_RETIRED
(
19
,
1
,
CHUNKY_SCRUB
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
20
,
1
,
MON_NULLROUTE
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
21
,
1
,
MON_GV
,
HAMMER
,
JEWEL
)
DEFINE_CEPH_FEATURE
(
21
,
2
,
SERVER_LUMINOUS
)
DEFINE_CEPH_FEATURE
(
21
,
2
,
RESEND_ON_SPLIT
)
// overlap
DEFINE_CEPH_FEATURE
(
21
,
2
,
RADOS_BACKOFF
)
// overlap
DEFINE_CEPH_FEATURE
(
21
,
2
,
OSDMAP_PG_UPMAP
)
// overlap
DEFINE_CEPH_FEATURE
(
21
,
2
,
CRUSH_CHOOSE_ARGS
)
// overlap
DEFINE_CEPH_FEATURE_RETIRED
(
22
,
1
,
BACKFILL_RESERVATION
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE
(
23
,
1
,
MSG_AUTH
)
DEFINE_CEPH_FEATURE_RETIRED
(
24
,
1
,
RECOVERY_RESERVATION
,
JEWEL
,
LUNINOUS
)
DEFINE_CEPH_FEATURE
(
25
,
1
,
CRUSH_TUNABLES2
)
DEFINE_CEPH_FEATURE
(
26
,
1
,
CREATEPOOLID
)
DEFINE_CEPH_FEATURE
(
27
,
1
,
REPLY_CREATE_INODE
)
DEFINE_CEPH_FEATURE_RETIRED
(
28
,
1
,
OSD_HBMSGS
,
HAMMER
,
JEWEL
)
DEFINE_CEPH_FEATURE
(
28
,
2
,
SERVER_M
)
DEFINE_CEPH_FEATURE
(
29
,
1
,
MDSENC
)
DEFINE_CEPH_FEATURE
(
30
,
1
,
OSDHASHPSPOOL
)
DEFINE_CEPH_FEATURE
(
31
,
1
,
MON_SINGLE_PAXOS
)
// deprecate me
DEFINE_CEPH_FEATURE_RETIRED
(
32
,
1
,
OSD_SNAPMAPPER
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
33
,
1
,
MON_SCRUB
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
34
,
1
,
OSD_PACKED_RECOVERY
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE
(
35
,
1
,
OSD_CACHEPOOL
)
DEFINE_CEPH_FEATURE
(
36
,
1
,
CRUSH_V2
)
DEFINE_CEPH_FEATURE
(
37
,
1
,
EXPORT_PEER
)
DEFINE_CEPH_FEATURE
(
38
,
1
,
OSD_ERASURE_CODES
)
DEFINE_CEPH_FEATURE
(
38
,
1
,
OSD_OSD_TMAP2OMAP
)
// overlap
DEFINE_CEPH_FEATURE
(
39
,
1
,
OSDMAP_ENC
)
DEFINE_CEPH_FEATURE
(
40
,
1
,
MDS_INLINE_DATA
)
DEFINE_CEPH_FEATURE
(
41
,
1
,
CRUSH_TUNABLES3
)
DEFINE_CEPH_FEATURE
(
41
,
1
,
OSD_PRIMARY_AFFINITY
)
// overlap
DEFINE_CEPH_FEATURE
(
42
,
1
,
MSGR_KEEPALIVE2
)
DEFINE_CEPH_FEATURE
(
43
,
1
,
OSD_POOLRESEND
)
DEFINE_CEPH_FEATURE
(
44
,
1
,
ERASURE_CODE_PLUGINS_V2
)
DEFINE_CEPH_FEATURE_RETIRED
(
45
,
1
,
OSD_SET_ALLOC_HINT
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE
(
46
,
1
,
OSD_FADVISE_FLAGS
)
DEFINE_CEPH_FEATURE_RETIRED
(
46
,
1
,
OSD_REPOP
,
JEWEL
,
LUMINOUS
)
// overlap
DEFINE_CEPH_FEATURE_RETIRED
(
46
,
1
,
OSD_OBJECT_DIGEST
,
JEWEL
,
LUMINOUS
)
// overlap
DEFINE_CEPH_FEATURE_RETIRED
(
46
,
1
,
OSD_TRANSACTION_MAY_LAYOUT
,
JEWEL
,
LUMINOUS
)
// overlap
DEFINE_CEPH_FEATURE
(
47
,
1
,
MDS_QUOTA
)
DEFINE_CEPH_FEATURE
(
48
,
1
,
CRUSH_V4
)
DEFINE_CEPH_FEATURE_RETIRED
(
49
,
1
,
OSD_MIN_SIZE_RECOVERY
,
JEWEL
,
LUMINOUS
)
DEFINE_CEPH_FEATURE_RETIRED
(
49
,
1
,
OSD_PROXY_FEATURES
,
JEWEL
,
LUMINOUS
)
// overlap
DEFINE_CEPH_FEATURE
(
50
,
1
,
MON_METADATA
)
DEFINE_CEPH_FEATURE
(
51
,
1
,
OSD_BITWISE_HOBJ_SORT
)
DEFINE_CEPH_FEATURE
(
52
,
1
,
OSD_PROXY_WRITE_FEATURES
)
DEFINE_CEPH_FEATURE
(
53
,
1
,
ERASURE_CODE_PLUGINS_V3
)
DEFINE_CEPH_FEATURE
(
54
,
1
,
OSD_HITSET_GMT
)
DEFINE_CEPH_FEATURE
(
55
,
1
,
HAMMER_0_94_4
)
DEFINE_CEPH_FEATURE
(
56
,
1
,
NEW_OSDOP_ENCODING
)
DEFINE_CEPH_FEATURE
(
57
,
1
,
MON_STATEFUL_SUB
)
DEFINE_CEPH_FEATURE
(
57
,
1
,
MON_ROUTE_OSDMAP
)
// overlap
DEFINE_CEPH_FEATURE
(
57
,
1
,
OSDSUBOP_NO_SNAPCONTEXT
)
// overlap
DEFINE_CEPH_FEATURE
(
57
,
1
,
SERVER_JEWEL
)
// overlap
DEFINE_CEPH_FEATURE
(
58
,
1
,
CRUSH_TUNABLES5
)
DEFINE_CEPH_FEATURE
(
58
,
1
,
NEW_OSDOPREPLY_ENCODING
)
// overlap
DEFINE_CEPH_FEATURE
(
58
,
1
,
FS_FILE_LAYOUT_V2
)
// overlap
DEFINE_CEPH_FEATURE
(
59
,
1
,
FS_BTIME
)
DEFINE_CEPH_FEATURE
(
59
,
1
,
FS_CHANGE_ATTR
)
// overlap
DEFINE_CEPH_FEATURE
(
59
,
1
,
MSG_ADDR2
)
// overlap
DEFINE_CEPH_FEATURE
(
60
,
1
,
BLKIN_TRACING
)
// *do not share this bit*
DEFINE_CEPH_FEATURE
(
61
,
1
,
RESERVED2
)
// unused, but slow down!
DEFINE_CEPH_FEATURE
(
62
,
1
,
RESERVED
)
// do not use; used as a sentinal
DEFINE_CEPH_FEATURE_DEPRECATED
(
63
,
1
,
RESERVED_BROKEN
,
LUMINOUS
)
// client-facing
/*
* Features supported.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment