]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | /* | |
4 | * Ceph - scalable distributed file system | |
5 | * | |
6 | ||
7 | * | |
8 | * This is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU Lesser General Public | |
10 | * License version 2.1, as published by the Free Software | |
11 | * Foundation. See file COPYING. | |
12 | * | |
13 | */ | |
14 | ||
15 | #ifndef CEPHFS_FEATURES_H | |
16 | #define CEPHFS_FEATURES_H | |
17 | ||
f67539c2 TL |
18 | #include "include/cephfs/metrics/Types.h" |
19 | ||
20 | class feature_bitset_t; | |
21 | namespace ceph { | |
22 | class Formatter; | |
23 | } | |
24 | ||
9f95a23c TL |
25 | // When adding a new release, please update the "current" release below, add a |
26 | // feature bit for that release, add that feature bit to CEPHFS_FEATURES_ALL, | |
27 | // and update Server::update_required_client_features(). This feature bit | |
28 | // is used to indicate that operator only wants clients from that release or | |
29 | // later to mount CephFS. | |
20effc67 | 30 | #define CEPHFS_CURRENT_RELEASE CEPH_RELEASE_QUINCY |
11fdf7f2 TL |
31 | |
32 | // The first 5 bits are reserved for old ceph releases. | |
33 | #define CEPHFS_FEATURE_JEWEL 5 | |
34 | #define CEPHFS_FEATURE_KRAKEN 6 | |
35 | #define CEPHFS_FEATURE_LUMINOUS 7 | |
36 | #define CEPHFS_FEATURE_MIMIC 8 | |
37 | #define CEPHFS_FEATURE_REPLY_ENCODING 9 | |
38 | #define CEPHFS_FEATURE_RECLAIM_CLIENT 10 | |
39 | #define CEPHFS_FEATURE_LAZY_CAP_WANTED 11 | |
40 | #define CEPHFS_FEATURE_MULTI_RECONNECT 12 | |
41 | #define CEPHFS_FEATURE_NAUTILUS 12 | |
9f95a23c TL |
42 | #define CEPHFS_FEATURE_DELEG_INO 13 |
43 | #define CEPHFS_FEATURE_OCTOPUS 13 | |
f67539c2 TL |
44 | #define CEPHFS_FEATURE_METRIC_COLLECT 14 |
45 | #define CEPHFS_FEATURE_ALTERNATE_NAME 15 | |
46 | #define CEPHFS_FEATURE_MAX 15 | |
11fdf7f2 TL |
47 | |
48 | #define CEPHFS_FEATURES_ALL { \ | |
49 | 0, 1, 2, 3, 4, \ | |
50 | CEPHFS_FEATURE_JEWEL, \ | |
51 | CEPHFS_FEATURE_KRAKEN, \ | |
52 | CEPHFS_FEATURE_LUMINOUS, \ | |
53 | CEPHFS_FEATURE_MIMIC, \ | |
54 | CEPHFS_FEATURE_REPLY_ENCODING, \ | |
55 | CEPHFS_FEATURE_RECLAIM_CLIENT, \ | |
56 | CEPHFS_FEATURE_LAZY_CAP_WANTED, \ | |
57 | CEPHFS_FEATURE_MULTI_RECONNECT, \ | |
58 | CEPHFS_FEATURE_NAUTILUS, \ | |
9f95a23c TL |
59 | CEPHFS_FEATURE_DELEG_INO, \ |
60 | CEPHFS_FEATURE_OCTOPUS, \ | |
f67539c2 TL |
61 | CEPHFS_FEATURE_METRIC_COLLECT, \ |
62 | CEPHFS_FEATURE_ALTERNATE_NAME, \ | |
63 | } | |
64 | ||
65 | #define CEPHFS_METRIC_FEATURES_ALL { \ | |
66 | CLIENT_METRIC_TYPE_CAP_INFO, \ | |
67 | CLIENT_METRIC_TYPE_READ_LATENCY, \ | |
68 | CLIENT_METRIC_TYPE_WRITE_LATENCY, \ | |
69 | CLIENT_METRIC_TYPE_METADATA_LATENCY, \ | |
70 | CLIENT_METRIC_TYPE_DENTRY_LEASE, \ | |
71 | CLIENT_METRIC_TYPE_OPENED_FILES, \ | |
72 | CLIENT_METRIC_TYPE_PINNED_ICAPS, \ | |
73 | CLIENT_METRIC_TYPE_OPENED_INODES, \ | |
a4b75251 TL |
74 | CLIENT_METRIC_TYPE_READ_IO_SIZES, \ |
75 | CLIENT_METRIC_TYPE_WRITE_IO_SIZES, \ | |
11fdf7f2 TL |
76 | } |
77 | ||
78 | #define CEPHFS_FEATURES_MDS_SUPPORTED CEPHFS_FEATURES_ALL | |
79 | #define CEPHFS_FEATURES_MDS_REQUIRED {} | |
80 | ||
81 | #define CEPHFS_FEATURES_CLIENT_SUPPORTED CEPHFS_FEATURES_ALL | |
82 | #define CEPHFS_FEATURES_CLIENT_REQUIRED {} | |
83 | ||
f67539c2 TL |
84 | extern std::string_view cephfs_feature_name(size_t id); |
85 | extern int cephfs_feature_from_name(std::string_view name); | |
86 | std::string cephfs_stringify_features(const feature_bitset_t& features); | |
87 | void cephfs_dump_features(ceph::Formatter *f, const feature_bitset_t& features); | |
88 | ||
11fdf7f2 | 89 | #endif |