]> git.proxmox.com Git - ceph.git/blame - ceph/src/mds/cephfs_features.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / mds / cephfs_features.h
CommitLineData
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
20class feature_bitset_t;
21namespace 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
84extern std::string_view cephfs_feature_name(size_t id);
85extern int cephfs_feature_from_name(std::string_view name);
86std::string cephfs_stringify_features(const feature_bitset_t& features);
87void cephfs_dump_features(ceph::Formatter *f, const feature_bitset_t& features);
88
11fdf7f2 89#endif