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
Show 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 @@
...
@@ -2,82 +2,174 @@
#define __CEPH_FEATURES
#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_INCARNATION_1 (0ull)
#define CEPH_FEATURE_NOSRCADDR (1ULL<<1)
#define CEPH_FEATURE_INCARNATION_2 (1ull<<57) // CEPH_FEATURE_SERVER_JEWEL
#define CEPH_FEATURE_MONCLOCKCHECK (1ULL<<2)
#define CEPH_FEATURE_FLOCK (1ULL<<3)
#define DEFINE_CEPH_FEATURE(bit, incarnation, name) \
#define CEPH_FEATURE_SUBSCRIBE2 (1ULL<<4)
const static uint64_t CEPH_FEATURE_##name = (1ULL<<bit); \
#define CEPH_FEATURE_MONNAMES (1ULL<<5)
const static uint64_t CEPH_FEATUREMASK_##name = \
#define CEPH_FEATURE_RECONNECT_SEQ (1ULL<<6)
(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
#define CEPH_FEATURE_DIRLAYOUTHASH (1ULL<<7)
#define CEPH_FEATURE_OBJECTLOCATOR (1ULL<<8)
/* this bit is ignored but still advertised by release *when* */
#define CEPH_FEATURE_PGID64 (1ULL<<9)
#define DEFINE_CEPH_FEATURE_DEPRECATED(bit, incarnation, name, when) \
#define CEPH_FEATURE_INCSUBOSDMAP (1ULL<<10)
const static uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \
#define CEPH_FEATURE_PGPOOL3 (1ULL<<11)
const static uint64_t DEPRECATED_CEPH_FEATUREMASK_##name = \
#define CEPH_FEATURE_OSDREPLYMUX (1ULL<<12)
(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
#define CEPH_FEATURE_OSDENC (1ULL<<13)
#define CEPH_FEATURE_OMAP (1ULL<<14)
/*
#define CEPH_FEATURE_MONENC (1ULL<<15)
* this bit is ignored by release *unused* and not advertised by
#define CEPH_FEATURE_QUERY_T (1ULL<<16)
* release *unadvertised*
#define CEPH_FEATURE_INDEP_PG_MAP (1ULL<<17)
*/
#define CEPH_FEATURE_CRUSH_TUNABLES (1ULL<<18)
#define DEFINE_CEPH_FEATURE_RETIRED(bit, inc, name, unused, unadvertised)
#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)
* test for a feature. this test is safer than a typical mask against
#define CEPH_FEATURE_MSG_AUTH (1ULL<<23)
* the bit because it ensures that we have the bit AND the marker for the
#define CEPH_FEATURE_RECOVERY_RESERVATION (1ULL<<24)
* bit's incarnation. this must be used in any case where the features
#define CEPH_FEATURE_CRUSH_TUNABLES2 (1ULL<<25)
* bits may include an old meaning of the bit.
#define CEPH_FEATURE_CREATEPOOLID (1ULL<<26)
*/
#define CEPH_FEATURE_REPLY_CREATE_INODE (1ULL<<27)
#define CEPH_HAVE_FEATURE(x, name) \
#define CEPH_FEATURE_OSD_HBMSGS (1ULL<<28)
(((x) & (CEPH_FEATUREMASK_##name)) == (CEPH_FEATUREMASK_##name))
#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)
* Notes on deprecation:
#define CEPH_FEATURE_MON_SCRUB (1ULL<<33)
*
#define CEPH_FEATURE_OSD_PACKED_RECOVERY (1ULL<<34)
* A *major* release is a release through which all upgrades must pass
#define CEPH_FEATURE_OSD_CACHEPOOL (1ULL<<35)
* (e.g., jewel). For example, no pre-jewel server will ever talk to
#define CEPH_FEATURE_CRUSH_V2 (1ULL<<36)
/* new indep; SET_* steps */
* a post-jewel server (mon, osd, etc).
#define CEPH_FEATURE_EXPORT_PEER (1ULL<<37)
*
#define CEPH_FEATURE_OSD_ERASURE_CODES (1ULL<<38)
* For feature bits used *only* on the server-side:
#define CEPH_FEATURE_OSD_TMAP2OMAP (1ULL<<38)
/* overlap with EC */
*
/* The process supports new-style OSDMap encoding. Monitors also use
* - In the first phase we indicate that a feature is DEPRECATED as of
this bit to determine if peers support NAK messages. */
* a particular release. This is the first major release X (say,
#define CEPH_FEATURE_OSDMAP_ENC (1ULL<<39)
* jewel) that does not depend on its peers advertising the feature.
#define CEPH_FEATURE_MDS_INLINE_DATA (1ULL<<40)
* That is, it safely assumes its peers all have the feature. We
#define CEPH_FEATURE_CRUSH_TUNABLES3 (1ULL<<41)
* indicate this with the DEPRECATED macro. For example,
#define CEPH_FEATURE_OSD_PRIMARY_AFFINITY (1ULL<<41)
/* overlap w/ tunables3 */
*
#define CEPH_FEATURE_MSGR_KEEPALIVE2 (1ULL<<42)
* DEFINE_CEPH_FEATURE_DEPRECATED( 2, 1, MONCLOCKCHECK, JEWEL)
#define CEPH_FEATURE_OSD_POOLRESEND (1ULL<<43)
*
#define CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 (1ULL<<44)
* because 10.2.z (jewel) did not care if its peers advertised this
#define CEPH_FEATURE_OSD_SET_ALLOC_HINT (1ULL<<45)
* feature bit.
#define CEPH_FEATURE_OSD_FADVISE_FLAGS (1ULL<<46)
*
#define CEPH_FEATURE_OSD_REPOP (1ULL<<46)
/* overlap with fadvise */
* - In the second phase we stop advertising the the bit and call it
#define CEPH_FEATURE_OSD_OBJECT_DIGEST (1ULL<<46)
/* overlap with fadvise */
* RETIRED. This can normally be done in the *next* major release
#define CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT (1ULL<<46)
/* overlap w/ fadvise */
* following the one in which we marked the feature DEPRECATED. In
#define CEPH_FEATURE_MDS_QUOTA (1ULL<<47)
* the above example, for 12.0.z (luminous) we can say:
#define CEPH_FEATURE_CRUSH_V4 (1ULL<<48)
/* straw2 buckets */
*
#define CEPH_FEATURE_OSD_MIN_SIZE_RECOVERY (1ULL<<49)
* DEFINE_CEPH_FEATURE_RETIRED( 2, 1, MONCLOCKCHECK, JEWEL, LUMINOUS)
// duplicated since it was introduced at the same time as MIN_SIZE_RECOVERY
*
#define CEPH_FEATURE_OSD_PROXY_FEATURES (1ULL<<49)
/* overlap w/ above */
* - The bit can be reused in the first post-luminous release, 13.0.z
#define CEPH_FEATURE_MON_METADATA (1ULL<<50)
* (m).
#define CEPH_FEATURE_OSD_BITWISE_HOBJ_SORT (1ULL<<51)
/* can sort objs bitwise */
*
#define CEPH_FEATURE_OSD_PROXY_WRITE_FEATURES (1ULL<<52)
* This ensures that no two versions who have different meanings for
#define CEPH_FEATURE_ERASURE_CODE_PLUGINS_V3 (1ULL<<53)
* the bit ever speak to each other.
#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
(
0
,
1
,
UID
)
#define CEPH_FEATURE_MON_STATEFUL_SUB (1ULL<<57)
/* stateful mon subscription */
DEFINE_CEPH_FEATURE
(
1
,
1
,
NOSRCADDR
)
#define CEPH_FEATURE_MON_ROUTE_OSDMAP (1ULL<<57)
/* peon sends osdmaps */
DEFINE_CEPH_FEATURE_RETIRED
(
2
,
1
,
MONCLOCKCHECK
,
JEWEL
,
LUMINOUS
)
#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
(
3
,
1
,
FLOCK
)
#define CEPH_FEATURE_NEW_OSDOPREPLY_ENCODING (1ULL<<58)
/* New, v7 encoding */
DEFINE_CEPH_FEATURE
(
4
,
1
,
SUBSCRIBE2
)
#define CEPH_FEATURE_FS_FILE_LAYOUT_V2 (1ULL<<58)
/* file_layout_t */
DEFINE_CEPH_FEATURE
(
5
,
1
,
MONNAMES
)
DEFINE_CEPH_FEATURE
(
6
,
1
,
RECONNECT_SEQ
)
#define CEPH_FEATURE_RESERVED (1ULL<<63)
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.
* 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