]> git.proxmox.com Git - ceph.git/blob - ceph/src/mds/cephfs_features.h
85a636e9b3f2e6d80176bf9b808d908312338744
[ceph.git] / ceph / src / mds / cephfs_features.h
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
18 #include "include/cephfs/metrics/Types.h"
19
20 class feature_bitset_t;
21 namespace ceph {
22 class Formatter;
23 }
24
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.
30 #define CEPHFS_CURRENT_RELEASE CEPH_RELEASE_QUINCY
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
42 #define CEPHFS_FEATURE_DELEG_INO 13
43 #define CEPHFS_FEATURE_OCTOPUS 13
44 #define CEPHFS_FEATURE_METRIC_COLLECT 14
45 #define CEPHFS_FEATURE_ALTERNATE_NAME 15
46 #define CEPHFS_FEATURE_MAX 15
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, \
59 CEPHFS_FEATURE_DELEG_INO, \
60 CEPHFS_FEATURE_OCTOPUS, \
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, \
74 CLIENT_METRIC_TYPE_READ_IO_SIZES, \
75 CLIENT_METRIC_TYPE_WRITE_IO_SIZES, \
76 CLIENT_METRIC_TYPE_AVG_READ_LATENCY, \
77 CLIENT_METRIC_TYPE_STDEV_READ_LATENCY, \
78 CLIENT_METRIC_TYPE_AVG_WRITE_LATENCY, \
79 CLIENT_METRIC_TYPE_STDEV_WRITE_LATENCY, \
80 CLIENT_METRIC_TYPE_AVG_METADATA_LATENCY, \
81 CLIENT_METRIC_TYPE_STDEV_METADATA_LATENCY, \
82 }
83
84 #define CEPHFS_FEATURES_MDS_SUPPORTED CEPHFS_FEATURES_ALL
85 #define CEPHFS_FEATURES_MDS_REQUIRED {}
86
87 #define CEPHFS_FEATURES_CLIENT_SUPPORTED CEPHFS_FEATURES_ALL
88 #define CEPHFS_FEATURES_CLIENT_REQUIRED {}
89
90 extern std::string_view cephfs_feature_name(size_t id);
91 extern int cephfs_feature_from_name(std::string_view name);
92 std::string cephfs_stringify_features(const feature_bitset_t& features);
93 void cephfs_dump_features(ceph::Formatter *f, const feature_bitset_t& features);
94
95 #endif