]> git.proxmox.com Git - ceph.git/blame - ceph/src/common/options.cc
bump version to 12.2.0-pve1
[ceph.git] / ceph / src / common / options.cc
CommitLineData
c07f9fc5
FG
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
4#include "acconfig.h"
5#include "options.h"
6#include "common/Formatter.h"
7
8// Helpers for validators
9#include "include/stringify.h"
10#include <boost/algorithm/string.hpp>
11#include <boost/lexical_cast.hpp>
12#include <boost/regex.hpp>
13
14
15void Option::dump_value(const char *field_name,
16 const Option::value_t &v, Formatter *f) const
17{
18 if (boost::get<boost::blank>(&v)) {
19 // This should be nil but Formatter doesn't allow it.
20 f->dump_string(field_name, "");
21 } else if (type == TYPE_UINT) {
22 f->dump_unsigned(field_name, boost::get<uint64_t>(v));
23 } else if (type == TYPE_INT) {
24 f->dump_int(field_name, boost::get<int64_t>(v));
25 } else if (type == TYPE_STR) {
26 f->dump_string(field_name, boost::get<std::string>(v));
27 } else if (type == TYPE_FLOAT) {
28 f->dump_float(field_name, boost::get<double>(v));
29 } else if (type == TYPE_BOOL) {
30 f->dump_bool(field_name, boost::get<bool>(v));
31 } else {
32 f->dump_stream(field_name) << v;
33 }
34}
35
36int Option::pre_validate(std::string *new_value, std::string *err) const
37{
38 if (validator) {
39 return validator(new_value, err);
40 } else {
41 return 0;
42 }
43}
44
45int Option::validate(const Option::value_t &new_value, std::string *err) const
46{
47 // Generic validation: min
48 if (!boost::get<boost::blank>(&(min))) {
49 if (new_value < min) {
50 std::ostringstream oss;
51 oss << "Value '" << new_value << "' is below minimum " << min;
52 *err = oss.str();
53 return -EINVAL;
54 }
55 }
56
57 // Generic validation: max
58 if (!boost::get<boost::blank>(&(max))) {
59 if (new_value > max) {
60 std::ostringstream oss;
61 oss << "Value '" << new_value << "' exceeds maximum " << max;
62 *err = oss.str();
63 return -EINVAL;
64 }
65 }
66
67 // Generic validation: enum
68 if (!enum_allowed.empty() && type == Option::TYPE_STR) {
69 auto found = std::find(enum_allowed.begin(), enum_allowed.end(),
70 boost::get<std::string>(new_value));
71 if (found == enum_allowed.end()) {
72 std::ostringstream oss;
73 oss << "'" << new_value << "' is not one of the permitted "
74 "values: " << joinify(enum_allowed.begin(),
75 enum_allowed.end(),
76 std::string(", "));
77 *err = oss.str();
78 return -EINVAL;
79 }
80 }
81
82 return 0;
83}
84
85void Option::dump(Formatter *f) const
86{
87 f->open_object_section("option");
88 f->dump_string("name", name);
89
90 f->dump_string("type", type_to_str(type));
c07f9fc5
FG
91
92 f->dump_string("level", level_to_str(level));
93
94 f->dump_string("desc", desc);
95 f->dump_string("long_desc", long_desc);
96
97 dump_value("default", value, f);
98 dump_value("daemon_default", daemon_value, f);
99
100 f->open_array_section("tags");
101 for (const auto t : tags) {
102 f->dump_string("tag", t);
103 }
104 f->close_section();
105
106 f->open_array_section("services");
107 for (const auto s : services) {
108 f->dump_string("service", s);
109 }
110 f->close_section();
111
112 f->open_array_section("see_also");
113 for (const auto sa : see_also) {
114 f->dump_string("see_also", sa);
115 }
116 f->close_section();
117
118 if (type == TYPE_STR) {
119 f->open_array_section("enum_values");
120 for (const auto &ea : enum_allowed) {
121 f->dump_string("enum_value", ea);
122 }
123 f->close_section();
124 }
125
126 dump_value("min", min, f);
127 dump_value("max", max, f);
128
129 f->close_section();
130}
131
132
d2e6a577
FG
133std::vector<Option> get_global_options() {
134 return std::vector<Option>({
135 Option("host", Option::TYPE_STR, Option::LEVEL_BASIC)
136 .set_description("local hostname")
137 .set_long_description("if blank, ceph assumes the short hostname (hostname -s)")
138 .add_service("common")
139 .add_tag("network"),
140
141 Option("fsid", Option::TYPE_UUID, Option::LEVEL_BASIC)
142 .set_description("cluster fsid (uuid)")
143 .add_service("common")
144 .add_tag("service"),
145
146 Option("public_addr", Option::TYPE_ADDR, Option::LEVEL_BASIC)
147 .set_description("public-facing address to bind to")
148 .add_service({"mon", "mds", "osd", "mgr"}),
149
150 Option("public_bind_addr", Option::TYPE_ADDR, Option::LEVEL_ADVANCED)
151 .set_default(entity_addr_t())
152 .add_service("mon")
153 .set_description(""),
154
155 Option("cluster_addr", Option::TYPE_ADDR, Option::LEVEL_BASIC)
156 .set_description("cluster-facing address to bind to")
157 .add_service("osd")
158 .add_tag("network"),
159
160 Option("public_network", Option::TYPE_STR, Option::LEVEL_ADVANCED)
161 .add_service({"mon", "mds", "osd", "mgr"})
162 .add_tag("network")
163 .set_description(""),
164
165 Option("cluster_network", Option::TYPE_STR, Option::LEVEL_ADVANCED)
166 .add_service("osd")
167 .add_tag("network")
168 .set_description(""),
169
170 Option("monmap", Option::TYPE_STR, Option::LEVEL_ADVANCED)
171 .set_description("path to MonMap file")
172 .set_long_description("This option is normally used during mkfs, but can also "
173 "be used to identify which monitors to connect to.")
174 .add_service("mon")
175 .add_tag("mkfs"),
176
177 Option("mon_host", Option::TYPE_STR, Option::LEVEL_BASIC)
178 .set_description("list of hosts or addresses to search for a monitor")
179 .set_long_description("This is a comma, whitespace, or semicolon separated "
180 "list of IP addresses or hostnames. Hostnames are "
181 "resolved via DNS and all A or AAAA records are "
182 "included in the search list.")
183 .add_service("common"),
184
185 Option("mon_dns_srv_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
186 .set_description("name of DNS SRV record to check for monitor addresses")
187 .add_service("common")
188 .add_tag("network")
189 .add_see_also("mon_host"),
190
191 // lockdep
192 Option("lockdep", Option::TYPE_BOOL, Option::LEVEL_DEV)
193 .set_description("enable lockdep lock dependency analyzer")
194 .add_service("common"),
195
196 Option("lockdep_force_backtrace", Option::TYPE_BOOL, Option::LEVEL_DEV)
197 .set_description("always gather current backtrace at every lock")
198 .add_service("common")
199 .add_see_also("lockdep"),
200
201 Option("run_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
202 .set_default("/var/run/ceph")
203 .set_description("path for the 'run' directory for storing pid and socket files")
204 .add_service("common")
205 .add_see_also("admin_socket"),
206
207 Option("admin_socket", Option::TYPE_STR, Option::LEVEL_ADVANCED)
208 .set_default("")
209 .set_daemon_default("$run_dir/$cluster-$name.asok")
210 .set_description("path for the runtime control socket file, used by the 'ceph daemon' command")
211 .add_service("common"),
212
213 Option("admin_socket_mode", Option::TYPE_STR, Option::LEVEL_ADVANCED)
214 .set_description("file mode to set for the admin socket file, e.g, '0755'")
215 .add_service("common")
216 .add_see_also("admin_socket"),
217
218 Option("crushtool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
219 .set_description("name of the 'crushtool' utility")
220 .add_service("mon"),
221
222 // daemon
223 Option("daemonize", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
224 .set_default(false)
225 .set_daemon_default(true)
226 .set_description("whether to daemonize (background) after startup")
227 .add_service({"mon", "mgr", "osd", "mds"})
228 .add_tag("service")
229 .add_see_also({"pid_file", "chdir"}),
230
231 Option("setuser", Option::TYPE_STR, Option::LEVEL_ADVANCED)
232 .set_description("uid or user name to switch to on startup")
233 .set_long_description("This is normally specified by the systemd unit file.")
234 .add_service({"mon", "mgr", "osd", "mds"})
235 .add_tag("service")
236 .add_see_also("setgroup"),
237
238 Option("setgroup", Option::TYPE_STR, Option::LEVEL_ADVANCED)
239 .set_description("gid or group name to switch to on startup")
240 .set_long_description("This is normally specified by the systemd unit file.")
241 .add_service({"mon", "mgr", "osd", "mds"})
242 .add_tag("service")
243 .add_see_also("setuser"),
244
245 Option("setuser_match_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
246 .set_description("if set, setuser/setgroup is condition on this path matching ownership")
247 .set_long_description("If setuser or setgroup are specified, and this option is non-empty, then the uid/gid of the daemon will only be changed if the file or directory specified by this option has a matching uid and/or gid. This exists primarily to allow switching to user ceph for OSDs to be conditional on whether the osd data contents have also been chowned after an upgrade. This is normally specified by the systemd unit file.")
248 .add_service({"mon", "mgr", "osd", "mds"})
249 .add_tag("service")
250 .add_see_also({"setuser", "setgroup"}),
251
252 Option("pid_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
253 .set_description("path to write a pid file (if any)")
254 .add_service({"mon", "mgr", "osd", "mds"})
255 .add_tag("service"),
256
257 Option("chdir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
258 .set_description("path to chdir(2) to after daemonizing")
259 .add_service({"mon", "mgr", "osd", "mds"})
260 .add_tag("service")
261 .add_see_also("daemonize"),
262
263 Option("fatal_signal_handlers", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
264 .set_default(true)
265 .set_description("whether to register signal handlers for SIGABRT etc that dump a stack trace")
266 .set_long_description("This is normally true for daemons and values for libraries.")
267 .add_service({"mon", "mgr", "osd", "mds"})
268 .add_tag("service"),
269
270 // restapi
271 Option("restapi_log_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
272 .set_description("default set by python code"),
273
274 Option("restapi_base_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
275 .set_description("default set by python code"),
276
277 Option("erasure_code_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
278 .set_default(CEPH_PKGLIBDIR"/erasure-code")
279 .set_description("directory where erasure-code plugins can be found")
280 .add_service({"mon", "osd"})
281 .set_safe(),
282
283 // logging
284 Option("log_file", Option::TYPE_STR, Option::LEVEL_BASIC)
285 .set_default("")
286 .set_daemon_default("/var/log/ceph/$cluster-$name.log")
287 .set_description("path to log file")
288 .add_see_also({"log_to_stderr",
289 "err_to_stderr",
290 "log_to_syslog",
291 "err_to_syslog"}),
292
293 Option("log_max_new", Option::TYPE_INT, Option::LEVEL_ADVANCED)
294 .set_default(1000)
295 .set_description("max unwritten log entries to allow before waiting to flush to the log")
296 .add_see_also("log_max_recent"),
297
298 Option("log_max_recent", Option::TYPE_INT, Option::LEVEL_ADVANCED)
299 .set_default(500)
300 .set_daemon_default(10000)
301 .set_description("recent log entries to keep in memory to dump in the event of a crash")
302 .set_long_description("The purpose of this option is to log at a higher debug level only to the in-memory buffer, and write out the detailed log messages only if there is a crash. Only log entries below the lower log level will be written unconditionally to the log. For example, debug_osd=1/5 will write everything <= 1 to the log unconditionally but keep entries at levels 2-5 in memory. If there is a seg fault or assertion failure, all entries will be dumped to the log."),
303
304 Option("log_to_stderr", Option::TYPE_BOOL, Option::LEVEL_BASIC)
305 .set_default(true)
306 .set_daemon_default(false)
307 .set_description("send log lines to stderr"),
308
309 Option("err_to_stderr", Option::TYPE_BOOL, Option::LEVEL_BASIC)
310 .set_default(false)
311 .set_daemon_default(true)
312 .set_description("send critical error log lines to stderr"),
313
314 Option("log_to_syslog", Option::TYPE_BOOL, Option::LEVEL_BASIC)
315 .set_default(false)
316 .set_description("send log lines to syslog facility"),
317
318 Option("err_to_syslog", Option::TYPE_BOOL, Option::LEVEL_BASIC)
319 .set_default(false)
320 .set_description("send critical error log lines to syslog facility"),
321
322 Option("log_flush_on_exit", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
323 .set_default(false)
324 .set_description("set a process exit handler to ensure the log is flushed on exit"),
325
326 Option("log_stop_at_utilization", Option::TYPE_FLOAT, Option::LEVEL_BASIC)
327 .set_default(.97)
328 .set_min_max(0.0, 1.0)
329 .set_description("stop writing to the log file when device utilization reaches this ratio")
330 .add_see_also("log_file"),
331
332 Option("log_to_graylog", Option::TYPE_BOOL, Option::LEVEL_BASIC)
333 .set_default(false)
334 .set_description("send log lines to remote graylog server")
335 .add_see_also({"err_to_graylog",
336 "log_graylog_host",
337 "log_graylog_port"}),
338
339 Option("err_to_graylog", Option::TYPE_BOOL, Option::LEVEL_BASIC)
340 .set_default(false)
341 .set_description("send critical error log lines to remote graylog server")
342 .add_see_also({"log_to_graylog",
343 "log_graylog_host",
344 "log_graylog_port"}),
345
346 Option("log_graylog_host", Option::TYPE_STR, Option::LEVEL_BASIC)
347 .set_default("127.0.0.1")
348 .set_description("address or hostname of graylog server to log to")
349 .add_see_also({"log_to_graylog",
350 "err_to_graylog",
351 "log_graylog_port"}),
352
353 Option("log_graylog_port", Option::TYPE_INT, Option::LEVEL_BASIC)
354 .set_default(12201)
355 .set_description("port number for the remote graylog server")
356 .add_see_also("log_graylog_host"),
357
358
359
360 // unmodified
361 Option("clog_to_monitors", Option::TYPE_STR, Option::LEVEL_ADVANCED)
362 .set_default("default=true")
363 .set_description(""),
364
365 Option("clog_to_syslog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
366 .set_default("false")
367 .set_description(""),
368
369 Option("clog_to_syslog_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
370 .set_default("info")
371 .set_description(""),
372
373 Option("clog_to_syslog_facility", Option::TYPE_STR, Option::LEVEL_ADVANCED)
374 .set_default("default=daemon audit=local0")
375 .set_description(""),
376
377 Option("clog_to_graylog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
378 .set_default("false")
379 .set_description(""),
380
381 Option("clog_to_graylog_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
382 .set_default("127.0.0.1")
383 .set_description(""),
384
385 Option("clog_to_graylog_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
386 .set_default("12201")
387 .set_description(""),
388
389 Option("mon_cluster_log_to_syslog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
390 .set_default("default=false")
391 .set_description(""),
392
393 Option("mon_cluster_log_to_syslog_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
394 .set_default("info")
395 .set_description(""),
396
397 Option("mon_cluster_log_to_syslog_facility", Option::TYPE_STR, Option::LEVEL_ADVANCED)
398 .set_default("daemon")
399 .set_description(""),
400
401 Option("mon_cluster_log_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
402 .set_default("default=/var/log/ceph/$cluster.$channel.log cluster=/var/log/ceph/$cluster.log")
403 .set_description(""),
404
405 Option("mon_cluster_log_file_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
406 .set_default("info")
407 .set_description(""),
408
409 Option("mon_cluster_log_to_graylog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
410 .set_default("false")
411 .set_description(""),
412
413 Option("mon_cluster_log_to_graylog_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
414 .set_default("127.0.0.1")
415 .set_description(""),
416
417 Option("mon_cluster_log_to_graylog_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
418 .set_default("12201")
419 .set_description(""),
420
421 Option("enable_experimental_unrecoverable_data_corrupting_features", Option::TYPE_STR, Option::LEVEL_ADVANCED)
422 .set_default("")
423 .set_description(""),
424
425 Option("plugin_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
426 .set_default(CEPH_PKGLIBDIR)
427 .set_description("")
428 .set_safe(),
429
430 Option("xio_trace_mempool", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
431 .set_default(false)
432 .set_description(""),
433
434 Option("xio_trace_msgcnt", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
435 .set_default(false)
436 .set_description(""),
437
438 Option("xio_trace_xcon", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
439 .set_default(false)
440 .set_description(""),
441
442 Option("xio_queue_depth", Option::TYPE_INT, Option::LEVEL_ADVANCED)
443 .set_default(128)
444 .set_description(""),
445
446 Option("xio_mp_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
447 .set_default(128)
448 .set_description(""),
449
450 Option("xio_mp_max_64", Option::TYPE_INT, Option::LEVEL_ADVANCED)
451 .set_default(65536)
452 .set_description(""),
453
454 Option("xio_mp_max_256", Option::TYPE_INT, Option::LEVEL_ADVANCED)
455 .set_default(8192)
456 .set_description(""),
c07f9fc5 457
d2e6a577
FG
458 Option("xio_mp_max_1k", Option::TYPE_INT, Option::LEVEL_ADVANCED)
459 .set_default(8192)
460 .set_description(""),
461
462 Option("xio_mp_max_page", Option::TYPE_INT, Option::LEVEL_ADVANCED)
463 .set_default(4096)
464 .set_description(""),
465
466 Option("xio_mp_max_hint", Option::TYPE_INT, Option::LEVEL_ADVANCED)
467 .set_default(4096)
468 .set_description(""),
469
470 Option("xio_portal_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
471 .set_default(2)
472 .set_description(""),
473
474 Option("xio_max_conns_per_portal", Option::TYPE_INT, Option::LEVEL_ADVANCED)
475 .set_default(32)
476 .set_description(""),
477
478 Option("xio_transport_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
479 .set_default("rdma")
480 .set_description(""),
481
482 Option("xio_max_send_inline", Option::TYPE_INT, Option::LEVEL_ADVANCED)
483 .set_default(512)
484 .set_description(""),
485
486 Option("compressor_zlib_isal", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
487 .set_default(false)
488 .set_description(""),
489
490 Option("compressor_zlib_level", Option::TYPE_INT, Option::LEVEL_ADVANCED)
491 .set_default(5)
492 .set_description(""),
493
494 Option("async_compressor_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
495 .set_default(false)
496 .set_description(""),
497
498 Option("async_compressor_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
499 .set_default("snappy")
500 .set_description(""),
501
502 Option("async_compressor_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
503 .set_default(2)
504 .set_description(""),
505
506 Option("async_compressor_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
507 .set_default(5)
508 .set_description(""),
509
510 Option("async_compressor_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
511 .set_default(30)
512 .set_description(""),
513
514 Option("plugin_crypto_accelerator", Option::TYPE_STR, Option::LEVEL_ADVANCED)
515 .set_default("crypto_isal")
516 .set_description(""),
517
518 Option("mempool_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
519 .set_default(false)
520 .set_description(""),
521
522 Option("key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
523 .set_default("")
524 .set_description(""),
525
526 Option("keyfile", Option::TYPE_STR, Option::LEVEL_ADVANCED)
527 .set_default("")
528 .set_description(""),
529
530 Option("keyring", Option::TYPE_STR, Option::LEVEL_ADVANCED)
531 .set_default(
532 "/etc/ceph/$cluster.$name.keyring,/etc/ceph/$cluster.keyring,"
533 "/etc/ceph/keyring,/etc/ceph/keyring.bin,"
534 #if defined(__FreeBSD)
535 "/usr/local/etc/ceph/$cluster.$name.keyring,"
536 "/usr/local/etc/ceph/$cluster.keyring,"
537 "/usr/local/etc/ceph/keyring,/usr/local/etc/ceph/keyring.bin,"
538 #endif
539 )
540 .set_description(""),
541
542 Option("heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
543 .set_default(5)
544 .set_description(""),
545
546 Option("heartbeat_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
547 .set_default("")
548 .set_description(""),
549
550 Option("heartbeat_inject_failure", Option::TYPE_INT, Option::LEVEL_DEV)
551 .set_default(0)
552 .set_description(""),
553
554 Option("perf", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
555 .set_default(true)
556 .set_description(""),
557
558 Option("ms_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
559 .set_default("async+posix")
560 .set_description("")
561 .set_safe(),
562
563 Option("ms_public_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
564 .set_default("")
565 .set_description(""),
566
567 Option("ms_cluster_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
568 .set_default("")
569 .set_description(""),
570
571 Option("ms_tcp_nodelay", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
572 .set_default(true)
573 .set_description(""),
574
575 Option("ms_tcp_rcvbuf", Option::TYPE_INT, Option::LEVEL_ADVANCED)
576 .set_default(0)
577 .set_description(""),
578
579 Option("ms_tcp_prefetch_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
580 .set_default(4096)
581 .set_description(""),
582
583 Option("ms_initial_backoff", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
584 .set_default(.2)
585 .set_description(""),
586
587 Option("ms_max_backoff", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
588 .set_default(15.0)
589 .set_description(""),
590
591 Option("ms_crc_data", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
592 .set_default(true)
593 .set_description(""),
594
595 Option("ms_crc_header", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
596 .set_default(true)
597 .set_description(""),
598
599 Option("ms_die_on_bad_msg", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
600 .set_default(false)
601 .set_description(""),
602
603 Option("ms_die_on_unhandled_msg", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
604 .set_default(false)
605 .set_description(""),
606
607 Option("ms_die_on_old_message", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
608 .set_default(false)
609 .set_description(""),
610
611 Option("ms_die_on_skipped_message", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
612 .set_default(false)
613 .set_description(""),
614
615 Option("ms_dispatch_throttle_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
616 .set_default(100 << 20)
617 .set_description(""),
618
619 Option("ms_bind_ipv6", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
620 .set_default(false)
621 .set_description(""),
622
623 Option("ms_bind_port_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
624 .set_default(6800)
625 .set_description(""),
626
627 Option("ms_bind_port_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
628 .set_default(7300)
629 .set_description(""),
630
631 Option("ms_bind_retry_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
632 #if !defined(__FreeBSD__)
633 .set_default(3)
634 #else
635 // FreeBSD does not use SO_REAUSEADDR so allow for a bit more time per default
636 .set_default(6)
637 #endif
638 .set_description(""),
639
640 Option("ms_bind_retry_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
641 #if !defined(__FreeBSD__)
642 .set_default(5)
643 #else
644 // FreeBSD does not use SO_REAUSEADDR so allow for a bit more time per default
645 .set_default(6)
646 #endif
647 .set_description(""),
648
649 Option("ms_bind_before_connect", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
650 .set_default(false)
651 .set_description(""),
652
653 Option("ms_tcp_listen_backlog", Option::TYPE_INT, Option::LEVEL_ADVANCED)
654 .set_default(512)
655 .set_description(""),
656
657 Option("ms_rwthread_stack_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
658 .set_default(1024 << 10)
659 .set_description(""),
660
661 Option("ms_tcp_read_timeout", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
662 .set_default(900)
663 .set_description(""),
664
665 Option("ms_pq_max_tokens_per_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
666 .set_default(16777216)
667 .set_description(""),
668
669 Option("ms_pq_min_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
670 .set_default(65536)
671 .set_description(""),
672
673 Option("ms_inject_socket_failures", Option::TYPE_UINT, Option::LEVEL_DEV)
674 .set_default(0)
675 .set_description(""),
676
677 Option("ms_inject_delay_type", Option::TYPE_STR, Option::LEVEL_DEV)
678 .set_default("")
679 .set_description("")
680 .set_safe(),
681
682 Option("ms_inject_delay_msg_type", Option::TYPE_STR, Option::LEVEL_DEV)
683 .set_default("")
684 .set_description(""),
685
686 Option("ms_inject_delay_max", Option::TYPE_FLOAT, Option::LEVEL_DEV)
687 .set_default(1)
688 .set_description(""),
689
690 Option("ms_inject_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
691 .set_default(0)
692 .set_description(""),
693
694 Option("ms_inject_internal_delays", Option::TYPE_FLOAT, Option::LEVEL_DEV)
695 .set_default(0)
696 .set_description(""),
697
698 Option("ms_dump_on_send", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
699 .set_default(false)
700 .set_description(""),
701
702 Option("ms_dump_corrupt_message_level", Option::TYPE_INT, Option::LEVEL_ADVANCED)
703 .set_default(1)
704 .set_description(""),
705
706 Option("ms_async_op_threads", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
707 .set_default(3)
708 .set_description(""),
709
710 Option("ms_async_max_op_threads", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
711 .set_default(5)
712 .set_description(""),
713
714 Option("ms_async_set_affinity", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
715 .set_default(true)
716 .set_description(""),
717
718 Option("ms_async_affinity_cores", Option::TYPE_STR, Option::LEVEL_ADVANCED)
719 .set_default("")
720 .set_description(""),
721
722 Option("ms_async_rdma_device_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
723 .set_default("")
724 .set_description(""),
725
726 Option("ms_async_rdma_enable_hugepage", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
727 .set_default(false)
728 .set_description(""),
729
730 Option("ms_async_rdma_buffer_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
731 .set_default(128 << 10)
732 .set_description(""),
733
734 Option("ms_async_rdma_send_buffers", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
735 .set_default(1024)
736 .set_description(""),
737
738 Option("ms_async_rdma_receive_buffers", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
739 .set_default(1024)
740 .set_description(""),
741
742 Option("ms_async_rdma_port_num", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
743 .set_default(1)
744 .set_description(""),
745
746 Option("ms_async_rdma_polling_us", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
747 .set_default(1000)
748 .set_description(""),
749
750 Option("ms_async_rdma_local_gid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
751 .set_default("")
752 .set_description(""),
753
754 Option("ms_async_rdma_roce_ver", Option::TYPE_INT, Option::LEVEL_ADVANCED)
755 .set_default(1)
756 .set_description(""),
757
758 Option("ms_async_rdma_sl", Option::TYPE_INT, Option::LEVEL_ADVANCED)
759 .set_default(3)
760 .set_description(""),
761
762 Option("ms_async_rdma_dscp", Option::TYPE_INT, Option::LEVEL_ADVANCED)
763 .set_default(96)
764 .set_description(""),
765
766 Option("ms_dpdk_port_id", Option::TYPE_INT, Option::LEVEL_ADVANCED)
767 .set_default(0)
768 .set_description(""),
769
770 Option("ms_dpdk_coremask", Option::TYPE_STR, Option::LEVEL_ADVANCED)
771 .set_default("1")
772 .set_description("")
773 .set_safe(),
774
775 Option("ms_dpdk_memory_channel", Option::TYPE_STR, Option::LEVEL_ADVANCED)
776 .set_default("4")
777 .set_description(""),
778
779 Option("ms_dpdk_hugepages", Option::TYPE_STR, Option::LEVEL_ADVANCED)
780 .set_default("")
781 .set_description(""),
782
783 Option("ms_dpdk_pmd", Option::TYPE_STR, Option::LEVEL_ADVANCED)
784 .set_default("")
785 .set_description(""),
786
787 Option("ms_dpdk_host_ipv4_addr", Option::TYPE_STR, Option::LEVEL_ADVANCED)
788 .set_default("")
789 .set_description("")
790 .set_safe(),
791
792 Option("ms_dpdk_gateway_ipv4_addr", Option::TYPE_STR, Option::LEVEL_ADVANCED)
793 .set_default("")
794 .set_description("")
795 .set_safe(),
796
797 Option("ms_dpdk_netmask_ipv4_addr", Option::TYPE_STR, Option::LEVEL_ADVANCED)
798 .set_default("")
799 .set_description("")
800 .set_safe(),
c07f9fc5 801
d2e6a577
FG
802 Option("ms_dpdk_lro", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
803 .set_default(true)
804 .set_description(""),
c07f9fc5 805
d2e6a577
FG
806 Option("ms_dpdk_hw_flow_control", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
807 .set_default(true)
808 .set_description(""),
c07f9fc5 809
d2e6a577
FG
810 Option("ms_dpdk_hw_queue_weight", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
811 .set_default(1)
812 .set_description(""),
c07f9fc5 813
d2e6a577
FG
814 Option("ms_dpdk_debug_allow_loopback", Option::TYPE_BOOL, Option::LEVEL_DEV)
815 .set_default(false)
816 .set_description(""),
c07f9fc5 817
d2e6a577
FG
818 Option("ms_dpdk_rx_buffer_count_per_core", Option::TYPE_INT, Option::LEVEL_ADVANCED)
819 .set_default(8192)
820 .set_description(""),
c07f9fc5 821
d2e6a577
FG
822 Option("inject_early_sigterm", Option::TYPE_BOOL, Option::LEVEL_DEV)
823 .set_default(false)
824 .set_description(""),
c07f9fc5 825
d2e6a577
FG
826 Option("mon_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
827 .set_default("/var/lib/ceph/mon/$cluster-$id")
828 .set_description(""),
c07f9fc5 829
d2e6a577
FG
830 Option("mon_initial_members", Option::TYPE_STR, Option::LEVEL_ADVANCED)
831 .set_default("")
832 .set_description(""),
c07f9fc5 833
d2e6a577
FG
834 Option("mon_compact_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
835 .set_default(false)
836 .set_description(""),
c07f9fc5 837
d2e6a577
FG
838 Option("mon_compact_on_bootstrap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
839 .set_default(false)
840 .set_description(""),
c07f9fc5 841
d2e6a577
FG
842 Option("mon_compact_on_trim", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
843 .set_default(true)
844 .set_description(""),
c07f9fc5 845
d2e6a577
FG
846 Option("mon_osd_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
847 .set_default(10)
848 .set_description(""),
c07f9fc5 849
d2e6a577
FG
850 Option("mon_cpu_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
851 .set_default(4)
852 .set_description(""),
c07f9fc5 853
d2e6a577
FG
854 Option("mon_osd_mapping_pgs_per_chunk", Option::TYPE_INT, Option::LEVEL_ADVANCED)
855 .set_default(4096)
856 .set_description(""),
c07f9fc5 857
d2e6a577
FG
858 Option("mon_osd_max_creating_pgs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
859 .set_default(1024)
860 .set_description(""),
c07f9fc5 861
d2e6a577
FG
862 Option("mon_tick_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
863 .set_default(5)
864 .set_description(""),
c07f9fc5 865
d2e6a577
FG
866 Option("mon_session_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
867 .set_default(300)
868 .set_description(""),
c07f9fc5 869
d2e6a577
FG
870 Option("mon_subscribe_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
871 .set_default(24*3600)
872 .set_description(""),
c07f9fc5 873
d2e6a577
FG
874 Option("mon_delta_reset_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
875 .set_default(10)
876 .set_description(""),
c07f9fc5 877
d2e6a577
FG
878 Option("mon_osd_laggy_halflife", Option::TYPE_INT, Option::LEVEL_ADVANCED)
879 .set_default(60*60)
880 .set_description(""),
c07f9fc5 881
d2e6a577
FG
882 Option("mon_osd_laggy_weight", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
883 .set_default(.3)
884 .set_description(""),
c07f9fc5 885
d2e6a577
FG
886 Option("mon_osd_laggy_max_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
887 .set_default(300)
888 .set_description(""),
c07f9fc5 889
d2e6a577
FG
890 Option("mon_osd_adjust_heartbeat_grace", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
891 .set_default(true)
892 .set_description(""),
c07f9fc5 893
d2e6a577
FG
894 Option("mon_osd_adjust_down_out_interval", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
895 .set_default(true)
896 .set_description(""),
c07f9fc5 897
d2e6a577
FG
898 Option("mon_osd_auto_mark_in", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
899 .set_default(false)
900 .set_description(""),
c07f9fc5 901
d2e6a577
FG
902 Option("mon_osd_auto_mark_auto_out_in", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
903 .set_default(true)
904 .set_description(""),
c07f9fc5 905
d2e6a577
FG
906 Option("mon_osd_auto_mark_new_in", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
907 .set_default(true)
908 .set_description(""),
c07f9fc5 909
d2e6a577
FG
910 Option("mon_osd_destroyed_out_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
911 .set_default(600)
912 .set_description(""),
c07f9fc5 913
d2e6a577
FG
914 Option("mon_osd_down_out_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
915 .set_default(600)
916 .set_description(""),
c07f9fc5 917
d2e6a577
FG
918 Option("mon_osd_down_out_subtree_limit", Option::TYPE_STR, Option::LEVEL_ADVANCED)
919 .set_default("rack")
920 .set_description(""),
c07f9fc5 921
d2e6a577
FG
922 Option("mon_osd_min_up_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
923 .set_default(.3)
924 .set_description(""),
c07f9fc5 925
d2e6a577
FG
926 Option("mon_osd_min_in_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
927 .set_default(.75)
928 .set_description(""),
c07f9fc5 929
d2e6a577
FG
930 Option("mon_osd_warn_op_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
931 .set_default(32)
932 .set_description(""),
c07f9fc5 933
d2e6a577
FG
934 Option("mon_osd_err_op_age_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
935 .set_default(128)
936 .set_description(""),
c07f9fc5 937
d2e6a577
FG
938 Option("mon_osd_max_split_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
939 .set_default(32)
940 .set_description(""),
c07f9fc5 941
d2e6a577
FG
942 Option("mon_osd_allow_primary_temp", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
943 .set_default(false)
944 .set_description(""),
c07f9fc5 945
d2e6a577
FG
946 Option("mon_osd_allow_primary_affinity", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
947 .set_default(false)
948 .set_description(""),
c07f9fc5 949
d2e6a577
FG
950 Option("mon_osd_prime_pg_temp", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
951 .set_default(true)
952 .set_description(""),
c07f9fc5 953
d2e6a577
FG
954 Option("mon_osd_prime_pg_temp_max_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
955 .set_default(.5)
956 .set_description(""),
c07f9fc5 957
d2e6a577
FG
958 Option("mon_osd_prime_pg_temp_max_estimate", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
959 .set_default(.25)
960 .set_description(""),
c07f9fc5 961
d2e6a577
FG
962 Option("mon_osd_pool_ec_fast_read", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
963 .set_default(false)
964 .set_description(""),
c07f9fc5 965
d2e6a577
FG
966 Option("mon_stat_smooth_intervals", Option::TYPE_INT, Option::LEVEL_ADVANCED)
967 .set_default(6)
968 .set_description(""),
c07f9fc5 969
d2e6a577
FG
970 Option("mon_election_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
971 .set_default(5)
972 .set_description(""),
c07f9fc5 973
d2e6a577
FG
974 Option("mon_lease", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
975 .set_default(5)
976 .set_description(""),
c07f9fc5 977
d2e6a577
FG
978 Option("mon_lease_renew_interval_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
979 .set_default(.6)
980 .set_description(""),
c07f9fc5 981
d2e6a577
FG
982 Option("mon_lease_ack_timeout_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
983 .set_default(2.0)
984 .set_description(""),
c07f9fc5 985
d2e6a577
FG
986 Option("mon_accept_timeout_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
987 .set_default(2.0)
988 .set_description(""),
c07f9fc5 989
d2e6a577
FG
990 Option("mon_clock_drift_allowed", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
991 .set_default(.050)
992 .set_description(""),
c07f9fc5 993
d2e6a577
FG
994 Option("mon_clock_drift_warn_backoff", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
995 .set_default(5)
996 .set_description(""),
c07f9fc5 997
d2e6a577
FG
998 Option("mon_timecheck_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
999 .set_default(300.0)
1000 .set_description(""),
c07f9fc5 1001
d2e6a577
FG
1002 Option("mon_timecheck_skew_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1003 .set_default(30.0)
1004 .set_description(""),
c07f9fc5 1005
d2e6a577
FG
1006 Option("mon_pg_stuck_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1007 .set_default(60)
1008 .set_description(""),
c07f9fc5 1009
d2e6a577
FG
1010 Option("mon_pg_min_inactive", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1011 .set_default(1)
1012 .set_description(""),
c07f9fc5 1013
d2e6a577
FG
1014 Option("mon_pg_warn_min_per_osd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1015 .set_default(30)
1016 .set_description(""),
c07f9fc5 1017
d2e6a577
FG
1018 Option("mon_pg_warn_max_per_osd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1019 .set_default(300)
1020 .set_description(""),
c07f9fc5 1021
d2e6a577
FG
1022 Option("mon_pg_warn_max_object_skew", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1023 .set_default(10.0)
1024 .set_description(""),
c07f9fc5 1025
d2e6a577
FG
1026 Option("mon_pg_warn_min_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1027 .set_default(10000)
1028 .set_description(""),
c07f9fc5 1029
d2e6a577
FG
1030 Option("mon_pg_warn_min_pool_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1031 .set_default(1000)
1032 .set_description(""),
c07f9fc5 1033
d2e6a577
FG
1034 Option("mon_pg_check_down_all_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1035 .set_default(.5)
1036 .set_description(""),
c07f9fc5 1037
d2e6a577
FG
1038 Option("mon_cache_target_full_warn_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1039 .set_default(.66)
1040 .set_description(""),
c07f9fc5 1041
d2e6a577
FG
1042 Option("mon_osd_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1043 .set_default(.95)
1044 .set_description(""),
c07f9fc5 1045
d2e6a577
FG
1046 Option("mon_osd_backfillfull_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1047 .set_default(.90)
1048 .set_description(""),
c07f9fc5 1049
d2e6a577
FG
1050 Option("mon_osd_nearfull_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1051 .set_default(.85)
1052 .set_description(""),
c07f9fc5 1053
d2e6a577
FG
1054 Option("mon_osd_initial_require_min_compat_client", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1055 .set_default("jewel")
1056 .set_description(""),
c07f9fc5 1057
d2e6a577
FG
1058 Option("mon_allow_pool_delete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1059 .set_default(false)
1060 .set_description(""),
c07f9fc5 1061
d2e6a577
FG
1062 Option("mon_fake_pool_delete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1063 .set_default(false)
1064 .set_description(""),
c07f9fc5 1065
d2e6a577
FG
1066 Option("mon_globalid_prealloc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1067 .set_default(10000)
1068 .set_description(""),
c07f9fc5 1069
d2e6a577
FG
1070 Option("mon_osd_report_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1071 .set_default(900)
1072 .set_description(""),
c07f9fc5 1073
d2e6a577
FG
1074 Option("mon_force_standby_active", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1075 .set_default(true)
1076 .set_description(""),
c07f9fc5 1077
d2e6a577
FG
1078 Option("mon_warn_on_legacy_crush_tunables", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1079 .set_default(true)
1080 .set_description(""),
c07f9fc5 1081
d2e6a577
FG
1082 Option("mon_crush_min_required_version", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1083 .set_default("firefly")
1084 .set_description(""),
c07f9fc5 1085
d2e6a577
FG
1086 Option("mon_warn_on_crush_straw_calc_version_zero", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1087 .set_default(true)
1088 .set_description(""),
c07f9fc5 1089
d2e6a577
FG
1090 Option("mon_warn_on_osd_down_out_interval_zero", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1091 .set_default(true)
1092 .set_description(""),
c07f9fc5 1093
d2e6a577
FG
1094 Option("mon_warn_on_cache_pools_without_hit_sets", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1095 .set_default(true)
1096 .set_description(""),
c07f9fc5 1097
d2e6a577
FG
1098 Option("mon_warn_on_pool_no_app", Option::TYPE_BOOL, Option::LEVEL_DEV)
1099 .set_default(true)
1100 .set_description("Enable POOL_APP_NOT_ENABLED health check"),
c07f9fc5 1101
d2e6a577
FG
1102 Option("mon_min_osdmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1103 .set_default(500)
1104 .set_description(""),
c07f9fc5 1105
d2e6a577
FG
1106 Option("mon_max_pgmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1107 .set_default(500)
1108 .set_description(""),
c07f9fc5 1109
d2e6a577
FG
1110 Option("mon_max_log_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1111 .set_default(500)
1112 .set_description(""),
c07f9fc5 1113
d2e6a577
FG
1114 Option("mon_max_mdsmap_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1115 .set_default(500)
1116 .set_description(""),
c07f9fc5 1117
d2e6a577
FG
1118 Option("mon_max_osd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1119 .set_default(10000)
1120 .set_description(""),
c07f9fc5 1121
d2e6a577
FG
1122 Option("mon_probe_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1123 .set_default(2.0)
1124 .set_description(""),
c07f9fc5 1125
d2e6a577
FG
1126 Option("mon_client_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1127 .set_default(100ul << 20)
1128 .set_description(""),
c07f9fc5 1129
d2e6a577
FG
1130 Option("mon_mgr_proxy_client_bytes_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1131 .set_default(.3)
1132 .set_description(""),
c07f9fc5 1133
d2e6a577
FG
1134 Option("mon_log_max_summary", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1135 .set_default(50)
1136 .set_description(""),
c07f9fc5 1137
d2e6a577
FG
1138 Option("mon_daemon_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1139 .set_default(400ul << 20)
1140 .set_description(""),
c07f9fc5 1141
d2e6a577
FG
1142 Option("mon_max_log_entries_per_event", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1143 .set_default(4096)
1144 .set_description(""),
c07f9fc5 1145
d2e6a577
FG
1146 Option("mon_reweight_min_pgs_per_osd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1147 .set_default(10)
1148 .set_description(""),
c07f9fc5 1149
d2e6a577
FG
1150 Option("mon_reweight_min_bytes_per_osd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1151 .set_default(100*1024*1024)
1152 .set_description(""),
c07f9fc5 1153
d2e6a577
FG
1154 Option("mon_reweight_max_osds", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1155 .set_default(4)
1156 .set_description(""),
c07f9fc5 1157
d2e6a577
FG
1158 Option("mon_reweight_max_change", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1159 .set_default(0.05)
1160 .set_description(""),
c07f9fc5 1161
d2e6a577
FG
1162 Option("mon_health_data_update_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1163 .set_default(60.0)
1164 .set_description(""),
c07f9fc5 1165
d2e6a577
FG
1166 Option("mon_health_to_clog", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1167 .set_default(true)
1168 .set_description(""),
c07f9fc5 1169
d2e6a577
FG
1170 Option("mon_health_to_clog_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1171 .set_default(3600)
1172 .set_description(""),
c07f9fc5 1173
d2e6a577
FG
1174 Option("mon_health_to_clog_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1175 .set_default(60.0)
1176 .set_description(""),
c07f9fc5 1177
d2e6a577
FG
1178 Option("mon_health_preluminous_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1179 .set_default(false)
1180 .set_description("Include health warnings in preluminous JSON fields"),
c07f9fc5 1181
d2e6a577
FG
1182 Option("mon_health_preluminous_compat_warning", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1183 .set_default(true)
1184 .set_description("Warn about the health JSON format change in preluminous JSON fields"),
c07f9fc5 1185
d2e6a577
FG
1186 Option("mon_health_max_detail", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1187 .set_default(50)
1188 .set_description(""),
c07f9fc5 1189
d2e6a577
FG
1190 Option("mon_data_avail_crit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1191 .set_default(5)
1192 .set_description(""),
c07f9fc5 1193
d2e6a577
FG
1194 Option("mon_data_avail_warn", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1195 .set_default(30)
1196 .set_description(""),
c07f9fc5 1197
d2e6a577
FG
1198 Option("mon_data_size_warn", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1199 .set_default(15ull*1024*1024*1024)
1200 .set_description(""),
c07f9fc5 1201
d2e6a577
FG
1202 Option("mon_warn_not_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1203 .set_default(0)
1204 .set_description(""),
c07f9fc5 1205
d2e6a577
FG
1206 Option("mon_warn_not_deep_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1207 .set_default(0)
1208 .set_description(""),
c07f9fc5 1209
d2e6a577
FG
1210 Option("mon_scrub_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1211 .set_default(3600*24)
1212 .set_description(""),
c07f9fc5 1213
d2e6a577
FG
1214 Option("mon_scrub_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1215 .set_default(60*5)
1216 .set_description(""),
c07f9fc5 1217
d2e6a577
FG
1218 Option("mon_scrub_max_keys", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1219 .set_default(100)
1220 .set_description(""),
c07f9fc5 1221
d2e6a577
FG
1222 Option("mon_scrub_inject_crc_mismatch", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1223 .set_default(0.0)
1224 .set_description(""),
c07f9fc5 1225
d2e6a577
FG
1226 Option("mon_scrub_inject_missing_keys", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1227 .set_default(0.0)
1228 .set_description(""),
c07f9fc5 1229
d2e6a577
FG
1230 Option("mon_config_key_max_entry_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1231 .set_default(4096)
1232 .set_description(""),
c07f9fc5 1233
d2e6a577
FG
1234 Option("mon_sync_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1235 .set_default(60.0)
1236 .set_description(""),
c07f9fc5 1237
d2e6a577
FG
1238 Option("mon_sync_max_payload_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1239 .set_default(1048576)
1240 .set_description(""),
c07f9fc5 1241
d2e6a577
FG
1242 Option("mon_sync_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1243 .set_default(false)
1244 .set_description(""),
c07f9fc5 1245
d2e6a577
FG
1246 Option("mon_inject_sync_get_chunk_delay", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1247 .set_default(0)
1248 .set_description(""),
c07f9fc5 1249
d2e6a577
FG
1250 Option("mon_osd_min_down_reporters", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1251 .set_default(2)
1252 .set_description(""),
c07f9fc5 1253
d2e6a577
FG
1254 Option("mon_osd_reporter_subtree_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1255 .set_default("host")
1256 .set_description(""),
c07f9fc5 1257
d2e6a577
FG
1258 Option("mon_osd_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1259 .set_default(0)
1260 .set_description(""),
c07f9fc5 1261
d2e6a577
FG
1262 Option("mon_mds_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1263 .set_default(0)
1264 .set_description(""),
c07f9fc5 1265
d2e6a577
FG
1266 Option("mon_mds_skip_sanity", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1267 .set_default(false)
1268 .set_description(""),
c07f9fc5 1269
d2e6a577
FG
1270 Option("mon_debug_deprecated_as_obsolete", Option::TYPE_BOOL, Option::LEVEL_DEV)
1271 .set_default(false)
1272 .set_description(""),
c07f9fc5 1273
d2e6a577
FG
1274 Option("mon_debug_dump_transactions", Option::TYPE_BOOL, Option::LEVEL_DEV)
1275 .set_default(false)
1276 .set_description(""),
c07f9fc5 1277
d2e6a577
FG
1278 Option("mon_debug_dump_json", Option::TYPE_BOOL, Option::LEVEL_DEV)
1279 .set_default(false)
1280 .set_description(""),
c07f9fc5 1281
d2e6a577
FG
1282 Option("mon_debug_dump_location", Option::TYPE_STR, Option::LEVEL_DEV)
1283 .set_default("/var/log/ceph/$cluster-$name.tdump")
1284 .set_description(""),
c07f9fc5 1285
d2e6a577
FG
1286 Option("mon_debug_no_require_luminous", Option::TYPE_BOOL, Option::LEVEL_DEV)
1287 .set_default(false)
1288 .set_description(""),
c07f9fc5 1289
d2e6a577
FG
1290 Option("mon_debug_no_require_bluestore_for_ec_overwrites", Option::TYPE_BOOL, Option::LEVEL_DEV)
1291 .set_default(false)
1292 .set_description(""),
c07f9fc5 1293
d2e6a577
FG
1294 Option("mon_debug_no_initial_persistent_features", Option::TYPE_BOOL, Option::LEVEL_DEV)
1295 .set_default(false)
1296 .set_description(""),
c07f9fc5 1297
d2e6a577
FG
1298 Option("mon_inject_transaction_delay_max", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1299 .set_default(10.0)
1300 .set_description(""),
c07f9fc5 1301
d2e6a577
FG
1302 Option("mon_inject_transaction_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1303 .set_default(0)
1304 .set_description(""),
c07f9fc5 1305
d2e6a577
FG
1306 Option("mon_sync_provider_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1307 .set_default(0)
1308 .set_description(""),
c07f9fc5 1309
d2e6a577
FG
1310 Option("mon_sync_requester_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1311 .set_default(0)
1312 .set_description(""),
c07f9fc5 1313
d2e6a577
FG
1314 Option("mon_force_quorum_join", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1315 .set_default(false)
1316 .set_description(""),
c07f9fc5 1317
d2e6a577
FG
1318 Option("mon_keyvaluedb", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1319 .set_default("rocksdb")
1320 .set_description(""),
c07f9fc5 1321
d2e6a577
FG
1322 Option("mon_debug_unsafe_allow_tier_with_nonempty_snaps", Option::TYPE_BOOL, Option::LEVEL_DEV)
1323 .set_default(false)
1324 .set_description(""),
c07f9fc5 1325
d2e6a577
FG
1326 Option("mon_osd_blacklist_default_expire", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1327 .set_default(60*60)
1328 .set_description(""),
c07f9fc5 1329
d2e6a577
FG
1330 Option("mon_osd_crush_smoke_test", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1331 .set_default(true)
1332 .set_description(""),
c07f9fc5 1333
d2e6a577
FG
1334 Option("paxos_stash_full_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1335 .set_default(25)
1336 .set_description(""),
c07f9fc5 1337
d2e6a577
FG
1338 Option("paxos_max_join_drift", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1339 .set_default(10)
1340 .set_description(""),
c07f9fc5 1341
d2e6a577
FG
1342 Option("paxos_propose_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1343 .set_default(1.0)
1344 .set_description(""),
c07f9fc5 1345
d2e6a577
FG
1346 Option("paxos_min_wait", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1347 .set_default(0.05)
1348 .set_description(""),
c07f9fc5 1349
d2e6a577
FG
1350 Option("paxos_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1351 .set_default(500)
1352 .set_description(""),
c07f9fc5 1353
d2e6a577
FG
1354 Option("paxos_trim_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1355 .set_default(250)
1356 .set_description(""),
c07f9fc5 1357
d2e6a577
FG
1358 Option("paxos_trim_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1359 .set_default(500)
1360 .set_description(""),
c07f9fc5 1361
d2e6a577
FG
1362 Option("paxos_service_trim_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1363 .set_default(250)
1364 .set_description(""),
c07f9fc5 1365
d2e6a577
FG
1366 Option("paxos_service_trim_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1367 .set_default(500)
1368 .set_description(""),
c07f9fc5 1369
d2e6a577
FG
1370 Option("paxos_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1371 .set_default(0)
1372 .set_description(""),
c07f9fc5 1373
d2e6a577
FG
1374 Option("auth_cluster_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1375 .set_default("cephx")
1376 .set_description(""),
c07f9fc5 1377
d2e6a577
FG
1378 Option("auth_service_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1379 .set_default("cephx")
1380 .set_description(""),
c07f9fc5 1381
d2e6a577
FG
1382 Option("auth_client_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1383 .set_default("cephx, none")
1384 .set_description(""),
c07f9fc5 1385
d2e6a577
FG
1386 Option("auth_supported", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1387 .set_default("")
1388 .set_description(""),
c07f9fc5 1389
d2e6a577
FG
1390 Option("max_rotating_auth_attempts", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1391 .set_default(10)
1392 .set_description(""),
c07f9fc5 1393
d2e6a577
FG
1394 Option("cephx_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1395 .set_default(false)
1396 .set_description(""),
c07f9fc5 1397
d2e6a577
FG
1398 Option("cephx_cluster_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1399 .set_default(false)
1400 .set_description(""),
c07f9fc5 1401
d2e6a577
FG
1402 Option("cephx_service_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1403 .set_default(false)
1404 .set_description(""),
c07f9fc5 1405
d2e6a577
FG
1406 Option("cephx_sign_messages", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1407 .set_default(true)
1408 .set_description(""),
c07f9fc5 1409
d2e6a577
FG
1410 Option("auth_mon_ticket_ttl", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1411 .set_default(60*60*12)
1412 .set_description(""),
c07f9fc5 1413
d2e6a577
FG
1414 Option("auth_service_ticket_ttl", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1415 .set_default(60*60)
1416 .set_description(""),
c07f9fc5 1417
d2e6a577
FG
1418 Option("auth_debug", Option::TYPE_BOOL, Option::LEVEL_DEV)
1419 .set_default(false)
1420 .set_description(""),
c07f9fc5 1421
d2e6a577
FG
1422 Option("mon_client_hunt_parallel", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1423 .set_default(2)
1424 .set_description(""),
c07f9fc5 1425
d2e6a577
FG
1426 Option("mon_client_hunt_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1427 .set_default(3.0)
1428 .set_description(""),
c07f9fc5 1429
d2e6a577
FG
1430 Option("mon_client_ping_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1431 .set_default(10.0)
1432 .set_description(""),
c07f9fc5 1433
d2e6a577
FG
1434 Option("mon_client_ping_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1435 .set_default(30.0)
1436 .set_description(""),
c07f9fc5 1437
d2e6a577
FG
1438 Option("mon_client_hunt_interval_backoff", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1439 .set_default(2.0)
1440 .set_description(""),
c07f9fc5 1441
d2e6a577
FG
1442 Option("mon_client_hunt_interval_min_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1443 .set_default(1.0)
1444 .set_description(""),
c07f9fc5 1445
d2e6a577
FG
1446 Option("mon_client_hunt_interval_max_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1447 .set_default(10.0)
1448 .set_description(""),
c07f9fc5 1449
d2e6a577
FG
1450 Option("mon_client_max_log_entries_per_message", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1451 .set_default(1000)
1452 .set_description(""),
c07f9fc5 1453
d2e6a577
FG
1454 Option("mon_max_pool_pg_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1455 .set_default(65536)
1456 .set_description(""),
c07f9fc5 1457
d2e6a577
FG
1458 Option("mon_pool_quota_warn_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1459 .set_default(0)
1460 .set_description(""),
c07f9fc5 1461
d2e6a577
FG
1462 Option("mon_pool_quota_crit_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1463 .set_default(0)
1464 .set_description(""),
c07f9fc5 1465
d2e6a577
FG
1466 Option("crush_location", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1467 .set_default("")
1468 .set_description(""),
c07f9fc5 1469
d2e6a577
FG
1470 Option("crush_location_hook", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1471 .set_default("")
1472 .set_description(""),
c07f9fc5 1473
d2e6a577
FG
1474 Option("crush_location_hook_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1475 .set_default(10)
1476 .set_description(""),
c07f9fc5 1477
d2e6a577
FG
1478 Option("objecter_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1479 .set_default(5.0)
1480 .set_description(""),
c07f9fc5 1481
d2e6a577
FG
1482 Option("objecter_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1483 .set_default(10.0)
1484 .set_description(""),
c07f9fc5 1485
d2e6a577
FG
1486 Option("objecter_inflight_op_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1487 .set_default(1024*1024*100)
1488 .set_description(""),
c07f9fc5 1489
d2e6a577
FG
1490 Option("objecter_inflight_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1491 .set_default(1024)
1492 .set_description(""),
c07f9fc5 1493
d2e6a577
FG
1494 Option("objecter_completion_locks_per_session", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1495 .set_default(32)
1496 .set_description(""),
c07f9fc5 1497
d2e6a577
FG
1498 Option("objecter_inject_no_watch_ping", Option::TYPE_BOOL, Option::LEVEL_DEV)
1499 .set_default(false)
1500 .set_description(""),
c07f9fc5 1501
d2e6a577
FG
1502 Option("objecter_retry_writes_after_first_reply", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1503 .set_default(false)
1504 .set_description(""),
c07f9fc5 1505
d2e6a577
FG
1506 Option("objecter_debug_inject_relock_delay", Option::TYPE_BOOL, Option::LEVEL_DEV)
1507 .set_default(false)
1508 .set_description(""),
c07f9fc5 1509
d2e6a577
FG
1510 Option("filer_max_purge_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1511 .set_default(10)
1512 .set_description(""),
c07f9fc5 1513
d2e6a577
FG
1514 Option("filer_max_truncate_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1515 .set_default(128)
1516 .set_description(""),
c07f9fc5 1517
d2e6a577
FG
1518 Option("journaler_write_head_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1519 .set_default(15)
1520 .set_description(""),
c07f9fc5 1521
d2e6a577
FG
1522 Option("journaler_prefetch_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1523 .set_default(10)
1524 .set_description(""),
c07f9fc5 1525
d2e6a577
FG
1526 Option("journaler_prezero_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1527 .set_default(5)
1528 .set_description(""),
c07f9fc5 1529
d2e6a577
FG
1530 Option("osd_check_max_object_name_len_on_startup", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1531 .set_default(true)
1532 .set_description(""),
c07f9fc5 1533
d2e6a577
FG
1534 Option("osd_max_backfills", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1535 .set_default(1)
1536 .set_description(""),
c07f9fc5 1537
d2e6a577
FG
1538 Option("osd_min_recovery_priority", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1539 .set_default(0)
1540 .set_description(""),
c07f9fc5 1541
d2e6a577
FG
1542 Option("osd_backfill_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1543 .set_default(30.0)
1544 .set_description(""),
c07f9fc5 1545
d2e6a577
FG
1546 Option("osd_recovery_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1547 .set_default(30.0)
1548 .set_description(""),
c07f9fc5 1549
d2e6a577
FG
1550 Option("osd_agent_max_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1551 .set_default(4)
1552 .set_description(""),
c07f9fc5 1553
d2e6a577
FG
1554 Option("osd_agent_max_low_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1555 .set_default(2)
1556 .set_description(""),
c07f9fc5 1557
d2e6a577
FG
1558 Option("osd_agent_min_evict_effort", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1559 .set_default(.1)
1560 .set_description(""),
c07f9fc5 1561
d2e6a577
FG
1562 Option("osd_agent_quantize_effort", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1563 .set_default(.1)
1564 .set_description(""),
c07f9fc5 1565
d2e6a577
FG
1566 Option("osd_agent_delay_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1567 .set_default(5.0)
1568 .set_description(""),
c07f9fc5 1569
d2e6a577
FG
1570 Option("osd_find_best_info_ignore_history_les", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1571 .set_default(false)
1572 .set_description(""),
c07f9fc5 1573
d2e6a577
FG
1574 Option("osd_agent_hist_halflife", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1575 .set_default(1000)
1576 .set_description(""),
c07f9fc5 1577
d2e6a577
FG
1578 Option("osd_agent_slop", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1579 .set_default(.02)
1580 .set_description(""),
c07f9fc5 1581
d2e6a577
FG
1582 Option("osd_uuid", Option::TYPE_UUID, Option::LEVEL_ADVANCED)
1583 .set_default(uuid_d())
1584 .set_description(""),
c07f9fc5 1585
d2e6a577
FG
1586 Option("osd_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1587 .set_default("/var/lib/ceph/osd/$cluster-$id")
1588 .set_description(""),
c07f9fc5 1589
d2e6a577
FG
1590 Option("osd_journal", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1591 .set_default("/var/lib/ceph/osd/$cluster-$id/journal")
1592 .set_description(""),
c07f9fc5 1593
d2e6a577
FG
1594 Option("osd_journal_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1595 .set_default(5120)
1596 .set_description(""),
c07f9fc5 1597
d2e6a577
FG
1598 Option("osd_journal_flush_on_shutdown", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1599 .set_default(true)
1600 .set_description(""),
c07f9fc5 1601
d2e6a577
FG
1602 Option("osd_os_flags", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1603 .set_default(0)
1604 .set_description(""),
c07f9fc5 1605
d2e6a577
FG
1606 Option("osd_max_write_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1607 .set_default(90)
1608 .set_description(""),
c07f9fc5 1609
d2e6a577
FG
1610 Option("osd_max_pgls", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1611 .set_default(1024)
1612 .set_description(""),
c07f9fc5 1613
d2e6a577
FG
1614 Option("osd_client_message_size_cap", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1615 .set_default(500*1024L*1024L)
1616 .set_description(""),
c07f9fc5 1617
d2e6a577
FG
1618 Option("osd_client_message_cap", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1619 .set_default(100)
1620 .set_description(""),
c07f9fc5 1621
d2e6a577
FG
1622 Option("osd_pg_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1623 .set_default(6)
1624 .set_description(""),
c07f9fc5 1625
d2e6a577
FG
1626 Option("osd_pgp_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1627 .set_default(6)
1628 .set_description(""),
c07f9fc5 1629
d2e6a577
FG
1630 Option("osd_crush_update_weight_set", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1631 .set_default(true)
1632 .set_description(""),
c07f9fc5 1633
d2e6a577
FG
1634 Option("osd_crush_chooseleaf_type", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1635 .set_default(1)
1636 .set_description(""),
c07f9fc5 1637
d2e6a577
FG
1638 Option("osd_pool_use_gmt_hitset", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1639 .set_default(true)
1640 .set_description(""),
c07f9fc5 1641
d2e6a577
FG
1642 Option("osd_crush_update_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1643 .set_default(true)
1644 .set_description(""),
c07f9fc5 1645
d2e6a577
FG
1646 Option("osd_class_update_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1647 .set_default(true)
1648 .set_description(""),
c07f9fc5 1649
d2e6a577
FG
1650 Option("osd_crush_initial_weight", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1651 .set_default(-1)
1652 .set_description(""),
c07f9fc5 1653
d2e6a577
FG
1654 Option("osd_pool_default_crush_rule", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1655 .set_default(-1)
1656 .set_description(""),
c07f9fc5 1657
d2e6a577
FG
1658 Option("osd_pool_erasure_code_stripe_unit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1659 .set_default(4096)
1660 .set_description(""),
c07f9fc5 1661
d2e6a577
FG
1662 Option("osd_pool_default_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1663 .set_default(3)
1664 .set_description(""),
c07f9fc5 1665
d2e6a577
FG
1666 Option("osd_pool_default_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1667 .set_default(0)
1668 .set_description(""),
c07f9fc5 1669
d2e6a577
FG
1670 Option("osd_pool_default_pg_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1671 .set_default(8)
1672 .set_description(""),
c07f9fc5 1673
d2e6a577
FG
1674 Option("osd_pool_default_pgp_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1675 .set_default(8)
1676 .set_description(""),
c07f9fc5 1677
d2e6a577
FG
1678 Option("osd_pool_default_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1679 .set_default("replicated")
1680 .set_description(""),
c07f9fc5 1681
d2e6a577
FG
1682 Option("osd_pool_default_erasure_code_profile", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1683 .set_default("plugin=jerasure technique=reed_sol_van k=2 m=1")
1684 .set_description(""),
c07f9fc5 1685
d2e6a577
FG
1686 Option("osd_erasure_code_plugins", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1687 .set_default("jerasure lrc"
1688 #ifdef HAVE_BETTER_YASM_ELF64
1689 " isa"
1690 #endif
1691 )
1692 .set_description(""),
c07f9fc5 1693
d2e6a577
FG
1694 Option("osd_allow_recovery_below_min_size", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1695 .set_default(true)
1696 .set_description(""),
c07f9fc5 1697
d2e6a577
FG
1698 Option("osd_pool_default_flags", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1699 .set_default(0)
1700 .set_description(""),
c07f9fc5 1701
d2e6a577
FG
1702 Option("osd_pool_default_flag_hashpspool", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1703 .set_default(true)
1704 .set_description(""),
c07f9fc5 1705
d2e6a577
FG
1706 Option("osd_pool_default_flag_nodelete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1707 .set_default(false)
1708 .set_description(""),
c07f9fc5 1709
d2e6a577
FG
1710 Option("osd_pool_default_flag_nopgchange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1711 .set_default(false)
1712 .set_description(""),
c07f9fc5 1713
d2e6a577
FG
1714 Option("osd_pool_default_flag_nosizechange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1715 .set_default(false)
1716 .set_description(""),
c07f9fc5 1717
d2e6a577
FG
1718 Option("osd_pool_default_hit_set_bloom_fpp", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1719 .set_default(.05)
1720 .set_description(""),
c07f9fc5 1721
d2e6a577
FG
1722 Option("osd_pool_default_cache_target_dirty_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1723 .set_default(.4)
1724 .set_description(""),
c07f9fc5 1725
d2e6a577
FG
1726 Option("osd_pool_default_cache_target_dirty_high_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1727 .set_default(.6)
1728 .set_description(""),
c07f9fc5 1729
d2e6a577
FG
1730 Option("osd_pool_default_cache_target_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1731 .set_default(.8)
1732 .set_description(""),
c07f9fc5 1733
d2e6a577
FG
1734 Option("osd_pool_default_cache_min_flush_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1735 .set_default(0)
1736 .set_description(""),
c07f9fc5 1737
d2e6a577
FG
1738 Option("osd_pool_default_cache_min_evict_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1739 .set_default(0)
1740 .set_description(""),
c07f9fc5 1741
d2e6a577
FG
1742 Option("osd_pool_default_cache_max_evict_check_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1743 .set_default(10)
1744 .set_description(""),
c07f9fc5 1745
d2e6a577
FG
1746 Option("osd_hit_set_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1747 .set_default(1000)
1748 .set_description(""),
c07f9fc5 1749
d2e6a577
FG
1750 Option("osd_hit_set_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1751 .set_default(100000)
1752 .set_description(""),
c07f9fc5 1753
d2e6a577
FG
1754 Option("osd_hit_set_namespace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1755 .set_default(".ceph-internal")
1756 .set_description(""),
c07f9fc5 1757
d2e6a577
FG
1758 Option("osd_tier_promote_max_objects_sec", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1759 .set_default(25)
1760 .set_description(""),
c07f9fc5 1761
d2e6a577
FG
1762 Option("osd_tier_promote_max_bytes_sec", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1763 .set_default(5 * 1024*1024)
1764 .set_description(""),
c07f9fc5 1765
d2e6a577
FG
1766 Option("osd_tier_default_cache_mode", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1767 .set_default("writeback")
1768 .set_description(""),
c07f9fc5 1769
d2e6a577
FG
1770 Option("osd_tier_default_cache_hit_set_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1771 .set_default(4)
1772 .set_description(""),
c07f9fc5 1773
d2e6a577
FG
1774 Option("osd_tier_default_cache_hit_set_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1775 .set_default(1200)
1776 .set_description(""),
c07f9fc5 1777
d2e6a577
FG
1778 Option("osd_tier_default_cache_hit_set_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1779 .set_default("bloom")
1780 .set_description(""),
c07f9fc5 1781
d2e6a577
FG
1782 Option("osd_tier_default_cache_min_read_recency_for_promote", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1783 .set_default(1)
1784 .set_description(""),
c07f9fc5 1785
d2e6a577
FG
1786 Option("osd_tier_default_cache_min_write_recency_for_promote", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1787 .set_default(1)
1788 .set_description(""),
c07f9fc5 1789
d2e6a577
FG
1790 Option("osd_tier_default_cache_hit_set_grade_decay_rate", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1791 .set_default(20)
1792 .set_description(""),
c07f9fc5 1793
d2e6a577
FG
1794 Option("osd_tier_default_cache_hit_set_search_last_n", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1795 .set_default(1)
1796 .set_description(""),
c07f9fc5 1797
d2e6a577
FG
1798 Option("osd_map_dedup", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1799 .set_default(true)
1800 .set_description(""),
1801
1802 Option("osd_map_max_advance", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1803 .set_default(40)
1804 .set_description(""),
1805
1806 Option("osd_map_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1807 .set_default(50)
1808 .set_description(""),
1809
1810 Option("osd_map_message_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1811 .set_default(40)
1812 .set_description(""),
1813
1814 Option("osd_map_share_max_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1815 .set_default(40)
1816 .set_description(""),
1817
1818 Option("osd_inject_bad_map_crc_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1819 .set_default(0)
1820 .set_description(""),
1821
1822 Option("osd_inject_failure_on_pg_removal", Option::TYPE_BOOL, Option::LEVEL_DEV)
1823 .set_default(false)
1824 .set_description(""),
1825
1826 Option("osd_max_markdown_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1827 .set_default(600)
1828 .set_description(""),
1829
1830 Option("osd_max_markdown_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1831 .set_default(5)
1832 .set_description(""),
1833
1834 Option("osd_peering_wq_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1835 .set_default(2)
1836 .set_description(""),
1837
1838 Option("osd_peering_wq_batch_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1839 .set_default(20)
1840 .set_description(""),
1841
1842 Option("osd_op_pq_max_tokens_per_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1843 .set_default(4194304)
1844 .set_description(""),
1845
1846 Option("osd_op_pq_min_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1847 .set_default(65536)
1848 .set_description(""),
1849
1850 Option("osd_disk_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1851 .set_default(1)
1852 .set_description(""),
1853
1854 Option("osd_disk_thread_ioprio_class", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1855 .set_default("")
1856 .set_description(""),
1857
1858 Option("osd_disk_thread_ioprio_priority", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1859 .set_default(-1)
1860 .set_description(""),
1861
1862 Option("osd_recover_clone_overlap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1863 .set_default(true)
1864 .set_description(""),
1865
1866 Option("osd_op_num_threads_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1867 .set_default(0)
1868 .set_description(""),
1869
1870 Option("osd_op_num_threads_per_shard_hdd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1871 .set_default(1)
1872 .set_description(""),
1873
1874 Option("osd_op_num_threads_per_shard_ssd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1875 .set_default(2)
1876 .set_description(""),
1877
1878 Option("osd_op_num_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1879 .set_default(0)
1880 .set_description(""),
1881
1882 Option("osd_op_num_shards_hdd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1883 .set_default(5)
1884 .set_description(""),
1885
1886 Option("osd_op_num_shards_ssd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1887 .set_default(8)
1888 .set_description(""),
1889
1890 Option("osd_op_queue", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1891 .set_default("wpq")
1892 .set_enum_allowed( { "wpq", "prioritized", "mclock_opclass", "mclock_client", "debug_random" } )
1893 .set_description("which operation queue algorithm to use")
1894 .set_long_description("which operation queue algorithm to use; mclock_opclass and mclock_client are currently experimental")
1895 .add_see_also("osd_op_queue_cut_off"),
1896
1897 Option("osd_op_queue_cut_off", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1898 .set_default("low")
1899 .set_enum_allowed( { "low", "high", "debug_random" } )
1900 .set_description("the threshold between high priority ops and low priority ops")
1901 .set_long_description("the threshold between high priority ops that use strict priority ordering and low priority ops that use a fairness algorithm that may or may not incorporate priority")
1902 .add_see_also("osd_op_queue"),
1903
1904 Option("osd_op_queue_mclock_client_op_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1905 .set_default(1000.0)
1906 .set_description("mclock reservation of client operator requests")
1907 .set_long_description("mclock reservation of client operator requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
1908 .add_see_also("osd_op_queue")
1909 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1910 .add_see_also("osd_op_queue_mclock_client_op_lim")
1911 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1912 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1913 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1914 .add_see_also("osd_op_queue_mclock_snap_res")
1915 .add_see_also("osd_op_queue_mclock_snap_wgt")
1916 .add_see_also("osd_op_queue_mclock_snap_lim")
1917 .add_see_also("osd_op_queue_mclock_recov_res")
1918 .add_see_also("osd_op_queue_mclock_recov_wgt")
1919 .add_see_also("osd_op_queue_mclock_recov_lim")
1920 .add_see_also("osd_op_queue_mclock_scrub_res")
1921 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1922 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1923
1924 Option("osd_op_queue_mclock_client_op_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1925 .set_default(500.0)
1926 .set_description("mclock weight of client operator requests")
1927 .set_long_description("mclock weight of client operator requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
1928 .add_see_also("osd_op_queue")
1929 .add_see_also("osd_op_queue_mclock_client_op_res")
1930 .add_see_also("osd_op_queue_mclock_client_op_lim")
1931 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1932 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1933 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1934 .add_see_also("osd_op_queue_mclock_snap_res")
1935 .add_see_also("osd_op_queue_mclock_snap_wgt")
1936 .add_see_also("osd_op_queue_mclock_snap_lim")
1937 .add_see_also("osd_op_queue_mclock_recov_res")
1938 .add_see_also("osd_op_queue_mclock_recov_wgt")
1939 .add_see_also("osd_op_queue_mclock_recov_lim")
1940 .add_see_also("osd_op_queue_mclock_scrub_res")
1941 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1942 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1943
1944 Option("osd_op_queue_mclock_client_op_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1945 .set_default(0.0)
1946 .set_description("mclock limit of client operator requests")
1947 .set_long_description("mclock limit of client operator requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
1948 .add_see_also("osd_op_queue")
1949 .add_see_also("osd_op_queue_mclock_client_op_res")
1950 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1951 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1952 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1953 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1954 .add_see_also("osd_op_queue_mclock_snap_res")
1955 .add_see_also("osd_op_queue_mclock_snap_wgt")
1956 .add_see_also("osd_op_queue_mclock_snap_lim")
1957 .add_see_also("osd_op_queue_mclock_recov_res")
1958 .add_see_also("osd_op_queue_mclock_recov_wgt")
1959 .add_see_also("osd_op_queue_mclock_recov_lim")
1960 .add_see_also("osd_op_queue_mclock_scrub_res")
1961 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1962 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1963
1964 Option("osd_op_queue_mclock_osd_subop_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1965 .set_default(1000.0)
1966 .set_description("mclock reservation of osd sub-operation requests")
1967 .set_long_description("mclock reservation of osd sub-operation requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
1968 .add_see_also("osd_op_queue")
1969 .add_see_also("osd_op_queue_mclock_client_op_res")
1970 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1971 .add_see_also("osd_op_queue_mclock_client_op_lim")
1972 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1973 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1974 .add_see_also("osd_op_queue_mclock_snap_res")
1975 .add_see_also("osd_op_queue_mclock_snap_wgt")
1976 .add_see_also("osd_op_queue_mclock_snap_lim")
1977 .add_see_also("osd_op_queue_mclock_recov_res")
1978 .add_see_also("osd_op_queue_mclock_recov_wgt")
1979 .add_see_also("osd_op_queue_mclock_recov_lim")
1980 .add_see_also("osd_op_queue_mclock_scrub_res")
1981 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1982 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1983
1984 Option("osd_op_queue_mclock_osd_subop_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1985 .set_default(500.0)
1986 .set_description("mclock weight of osd sub-operation requests")
1987 .set_long_description("mclock weight of osd sub-operation requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
1988 .add_see_also("osd_op_queue")
1989 .add_see_also("osd_op_queue_mclock_client_op_res")
1990 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1991 .add_see_also("osd_op_queue_mclock_client_op_lim")
1992 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1993 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1994 .add_see_also("osd_op_queue_mclock_snap_res")
1995 .add_see_also("osd_op_queue_mclock_snap_wgt")
1996 .add_see_also("osd_op_queue_mclock_snap_lim")
1997 .add_see_also("osd_op_queue_mclock_recov_res")
1998 .add_see_also("osd_op_queue_mclock_recov_wgt")
1999 .add_see_also("osd_op_queue_mclock_recov_lim")
2000 .add_see_also("osd_op_queue_mclock_scrub_res")
2001 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2002 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2003
2004 Option("osd_op_queue_mclock_osd_subop_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2005 .set_default(0.0)
2006 .set_description("mclock limit of osd sub-operation requests")
2007 .set_long_description("mclock limit of osd sub-operation requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2008 .add_see_also("osd_op_queue")
2009 .add_see_also("osd_op_queue_mclock_client_op_res")
2010 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2011 .add_see_also("osd_op_queue_mclock_client_op_lim")
2012 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2013 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2014 .add_see_also("osd_op_queue_mclock_snap_res")
2015 .add_see_also("osd_op_queue_mclock_snap_wgt")
2016 .add_see_also("osd_op_queue_mclock_snap_lim")
2017 .add_see_also("osd_op_queue_mclock_recov_res")
2018 .add_see_also("osd_op_queue_mclock_recov_wgt")
2019 .add_see_also("osd_op_queue_mclock_recov_lim")
2020 .add_see_also("osd_op_queue_mclock_scrub_res")
2021 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2022 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2023
2024 Option("osd_op_queue_mclock_snap_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2025 .set_default(0.0)
2026 .set_description("mclock reservation of snaptrim requests")
2027 .set_long_description("mclock reservation of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2028 .add_see_also("osd_op_queue")
2029 .add_see_also("osd_op_queue_mclock_client_op_res")
2030 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2031 .add_see_also("osd_op_queue_mclock_client_op_lim")
2032 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2033 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2034 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2035 .add_see_also("osd_op_queue_mclock_snap_wgt")
2036 .add_see_also("osd_op_queue_mclock_snap_lim")
2037 .add_see_also("osd_op_queue_mclock_recov_res")
2038 .add_see_also("osd_op_queue_mclock_recov_wgt")
2039 .add_see_also("osd_op_queue_mclock_recov_lim")
2040 .add_see_also("osd_op_queue_mclock_scrub_res")
2041 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2042 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2043
2044 Option("osd_op_queue_mclock_snap_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2045 .set_default(1.0)
2046 .set_description("mclock weight of snaptrim requests")
2047 .set_long_description("mclock weight of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2048 .add_see_also("osd_op_queue")
2049 .add_see_also("osd_op_queue_mclock_client_op_res")
2050 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2051 .add_see_also("osd_op_queue_mclock_client_op_lim")
2052 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2053 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2054 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2055 .add_see_also("osd_op_queue_mclock_snap_res")
2056 .add_see_also("osd_op_queue_mclock_snap_lim")
2057 .add_see_also("osd_op_queue_mclock_recov_res")
2058 .add_see_also("osd_op_queue_mclock_recov_wgt")
2059 .add_see_also("osd_op_queue_mclock_recov_lim")
2060 .add_see_also("osd_op_queue_mclock_scrub_res")
2061 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2062 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2063
2064 Option("osd_op_queue_mclock_snap_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2065 .set_default(0.001)
2066 .set_description("")
2067 .set_description("mclock limit of snaptrim requests")
2068 .set_long_description("mclock limit of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2069 .add_see_also("osd_op_queue_mclock_client_op_res")
2070 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2071 .add_see_also("osd_op_queue_mclock_client_op_lim")
2072 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2073 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2074 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2075 .add_see_also("osd_op_queue_mclock_snap_res")
2076 .add_see_also("osd_op_queue_mclock_snap_wgt")
2077 .add_see_also("osd_op_queue_mclock_recov_res")
2078 .add_see_also("osd_op_queue_mclock_recov_wgt")
2079 .add_see_also("osd_op_queue_mclock_recov_lim")
2080 .add_see_also("osd_op_queue_mclock_scrub_res")
2081 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2082 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2083
2084 Option("osd_op_queue_mclock_recov_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2085 .set_default(0.0)
2086 .set_description("mclock reservation of recovery requests")
2087 .set_long_description("mclock reservation of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2088 .add_see_also("osd_op_queue")
2089 .add_see_also("osd_op_queue_mclock_client_op_res")
2090 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2091 .add_see_also("osd_op_queue_mclock_client_op_lim")
2092 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2093 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2094 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2095 .add_see_also("osd_op_queue_mclock_snap_res")
2096 .add_see_also("osd_op_queue_mclock_snap_wgt")
2097 .add_see_also("osd_op_queue_mclock_snap_lim")
2098 .add_see_also("osd_op_queue_mclock_recov_wgt")
2099 .add_see_also("osd_op_queue_mclock_recov_lim")
2100 .add_see_also("osd_op_queue_mclock_scrub_res")
2101 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2102 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2103
2104 Option("osd_op_queue_mclock_recov_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2105 .set_default(1.0)
2106 .set_description("mclock weight of recovery requests")
2107 .set_long_description("mclock weight of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2108 .add_see_also("osd_op_queue")
2109 .add_see_also("osd_op_queue_mclock_client_op_res")
2110 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2111 .add_see_also("osd_op_queue_mclock_client_op_lim")
2112 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2113 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2114 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2115 .add_see_also("osd_op_queue_mclock_snap_res")
2116 .add_see_also("osd_op_queue_mclock_snap_wgt")
2117 .add_see_also("osd_op_queue_mclock_snap_lim")
2118 .add_see_also("osd_op_queue_mclock_recov_res")
2119 .add_see_also("osd_op_queue_mclock_recov_lim")
2120 .add_see_also("osd_op_queue_mclock_scrub_res")
2121 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2122 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2123
2124 Option("osd_op_queue_mclock_recov_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2125 .set_default(0.001)
2126 .set_description("mclock limit of recovery requests")
2127 .set_long_description("mclock limit of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2128 .add_see_also("osd_op_queue")
2129 .add_see_also("osd_op_queue_mclock_client_op_res")
2130 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2131 .add_see_also("osd_op_queue_mclock_client_op_lim")
2132 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2133 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2134 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2135 .add_see_also("osd_op_queue_mclock_snap_res")
2136 .add_see_also("osd_op_queue_mclock_snap_wgt")
2137 .add_see_also("osd_op_queue_mclock_snap_lim")
2138 .add_see_also("osd_op_queue_mclock_recov_res")
2139 .add_see_also("osd_op_queue_mclock_recov_wgt")
2140 .add_see_also("osd_op_queue_mclock_scrub_res")
2141 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2142 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2143
2144 Option("osd_op_queue_mclock_scrub_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2145 .set_default(0.0)
2146 .set_description("mclock reservation of scrub requests")
2147 .set_long_description("mclock reservation of scrub requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2148 .add_see_also("osd_op_queue")
2149 .add_see_also("osd_op_queue_mclock_client_op_res")
2150 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2151 .add_see_also("osd_op_queue_mclock_client_op_lim")
2152 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2153 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2154 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2155 .add_see_also("osd_op_queue_mclock_snap_res")
2156 .add_see_also("osd_op_queue_mclock_snap_wgt")
2157 .add_see_also("osd_op_queue_mclock_snap_lim")
2158 .add_see_also("osd_op_queue_mclock_recov_res")
2159 .add_see_also("osd_op_queue_mclock_recov_wgt")
2160 .add_see_also("osd_op_queue_mclock_recov_lim")
2161 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2162 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2163
2164 Option("osd_op_queue_mclock_scrub_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2165 .set_default(1.0)
2166 .set_description("mclock weight of scrub requests")
2167 .set_long_description("mclock weight of scrub requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2168 .add_see_also("osd_op_queue")
2169 .add_see_also("osd_op_queue_mclock_client_op_res")
2170 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2171 .add_see_also("osd_op_queue_mclock_client_op_lim")
2172 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2173 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2174 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2175 .add_see_also("osd_op_queue_mclock_snap_res")
2176 .add_see_also("osd_op_queue_mclock_snap_wgt")
2177 .add_see_also("osd_op_queue_mclock_snap_lim")
2178 .add_see_also("osd_op_queue_mclock_recov_res")
2179 .add_see_also("osd_op_queue_mclock_recov_wgt")
2180 .add_see_also("osd_op_queue_mclock_recov_lim")
2181 .add_see_also("osd_op_queue_mclock_scrub_res")
2182 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2183
2184 Option("osd_op_queue_mclock_scrub_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2185 .set_default(0.001)
2186 .set_description("mclock weight of limit requests")
2187 .set_long_description("mclock weight of limit requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2188 .add_see_also("osd_op_queue")
2189 .add_see_also("osd_op_queue_mclock_client_op_res")
2190 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2191 .add_see_also("osd_op_queue_mclock_client_op_lim")
2192 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2193 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2194 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2195 .add_see_also("osd_op_queue_mclock_snap_res")
2196 .add_see_also("osd_op_queue_mclock_snap_wgt")
2197 .add_see_also("osd_op_queue_mclock_snap_lim")
2198 .add_see_also("osd_op_queue_mclock_recov_res")
2199 .add_see_also("osd_op_queue_mclock_recov_wgt")
2200 .add_see_also("osd_op_queue_mclock_recov_lim")
2201 .add_see_also("osd_op_queue_mclock_scrub_res")
2202 .add_see_also("osd_op_queue_mclock_scrub_wgt"),
2203
2204 Option("osd_ignore_stale_divergent_priors", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2205 .set_default(false)
2206 .set_description(""),
2207
2208 Option("osd_read_ec_check_for_errors", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2209 .set_default(false)
2210 .set_description(""),
2211
2212 Option("osd_recover_clone_overlap_limit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2213 .set_default(10)
2214 .set_description(""),
2215
2216 Option("osd_backfill_scan_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2217 .set_default(64)
2218 .set_description(""),
2219
2220 Option("osd_backfill_scan_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2221 .set_default(512)
2222 .set_description(""),
2223
2224 Option("osd_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2225 .set_default(15)
2226 .set_description(""),
2227
2228 Option("osd_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2229 .set_default(150)
2230 .set_description(""),
2231
2232 Option("osd_recovery_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2233 .set_default(30)
2234 .set_description(""),
2235
2236 Option("osd_recovery_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2237 .set_default(300)
2238 .set_description(""),
2239
2240 Option("osd_recovery_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2241 .set_default(0)
2242 .set_description("Time in seconds to sleep before next recovery or backfill op"),
2243
2244 Option("osd_recovery_sleep_hdd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2245 .set_default(0.1)
2246 .set_description("Time in seconds to sleep before next recovery or backfill op for HDDs"),
2247
2248 Option("osd_recovery_sleep_ssd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2249 .set_default(0)
2250 .set_description("Time in seconds to sleep before next recovery or backfill op for SSDs"),
2251
2252 Option("osd_recovery_sleep_hybrid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2253 .set_default(0.025)
2254 .set_description("Time in seconds to sleep before next recovery or backfill op when data is on HDD and journal is on SSD"),
2255
2256 Option("osd_snap_trim_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2257 .set_default(0)
2258 .set_description(""),
2259
2260 Option("osd_scrub_invalid_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2261 .set_default(true)
2262 .set_description(""),
2263
2264 Option("osd_remove_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2265 .set_default(60*60)
2266 .set_description(""),
2267
2268 Option("osd_remove_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2269 .set_default(10*60*60)
2270 .set_description(""),
2271
2272 Option("osd_command_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2273 .set_default(10*60)
2274 .set_description(""),
2275
2276 Option("osd_command_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2277 .set_default(15*60)
2278 .set_description(""),
2279
2280 Option("osd_heartbeat_addr", Option::TYPE_ADDR, Option::LEVEL_ADVANCED)
2281 .set_default(entity_addr_t())
2282 .set_description(""),
2283
2284 Option("osd_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2285 .set_default(6)
2286 .set_description(""),
2287
2288 Option("osd_heartbeat_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2289 .set_default(20)
2290 .set_description(""),
2291
2292 Option("osd_heartbeat_min_peers", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2293 .set_default(10)
2294 .set_description(""),
2295
2296 Option("osd_heartbeat_use_min_delay_socket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2297 .set_default(false)
2298 .set_description(""),
c07f9fc5 2299
d2e6a577
FG
2300 Option("osd_heartbeat_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2301 .set_default(2000)
2302 .set_description(""),
c07f9fc5 2303
d2e6a577
FG
2304 Option("osd_pg_max_concurrent_snap_trims", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2305 .set_default(2)
2306 .set_description(""),
c07f9fc5 2307
d2e6a577
FG
2308 Option("osd_max_trimming_pgs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2309 .set_default(2)
2310 .set_description(""),
c07f9fc5 2311
d2e6a577
FG
2312 Option("osd_heartbeat_min_healthy_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2313 .set_default(.33)
2314 .set_description(""),
c07f9fc5 2315
d2e6a577
FG
2316 Option("osd_mon_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2317 .set_default(30)
2318 .set_description(""),
c07f9fc5 2319
d2e6a577
FG
2320 Option("osd_mon_report_interval_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2321 .set_default(600)
2322 .set_description(""),
c07f9fc5 2323
d2e6a577
FG
2324 Option("osd_mon_report_interval_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2325 .set_default(5)
2326 .set_description(""),
c07f9fc5 2327
d2e6a577
FG
2328 Option("osd_mon_report_max_in_flight", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2329 .set_default(2)
2330 .set_description(""),
c07f9fc5 2331
d2e6a577
FG
2332 Option("osd_beacon_report_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2333 .set_default(300)
2334 .set_description(""),
c07f9fc5 2335
d2e6a577
FG
2336 Option("osd_pg_stat_report_interval_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2337 .set_default(500)
2338 .set_description(""),
c07f9fc5 2339
d2e6a577
FG
2340 Option("osd_mon_ack_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2341 .set_default(30.0)
2342 .set_description(""),
c07f9fc5 2343
d2e6a577
FG
2344 Option("osd_stats_ack_timeout_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2345 .set_default(2.0)
2346 .set_description(""),
c07f9fc5 2347
d2e6a577
FG
2348 Option("osd_stats_ack_timeout_decay", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2349 .set_default(.9)
2350 .set_description(""),
c07f9fc5 2351
d2e6a577
FG
2352 Option("osd_default_data_pool_replay_window", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2353 .set_default(45)
2354 .set_description(""),
c07f9fc5 2355
d2e6a577
FG
2356 Option("osd_auto_mark_unfound_lost", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2357 .set_default(false)
2358 .set_description(""),
c07f9fc5 2359
d2e6a577
FG
2360 Option("osd_recovery_delay_start", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2361 .set_default(0)
2362 .set_description(""),
c07f9fc5 2363
d2e6a577
FG
2364 Option("osd_recovery_max_active", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2365 .set_default(3)
2366 .set_description(""),
c07f9fc5 2367
d2e6a577
FG
2368 Option("osd_recovery_max_single_start", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2369 .set_default(1)
2370 .set_description(""),
c07f9fc5 2371
d2e6a577
FG
2372 Option("osd_recovery_max_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2373 .set_default(8<<20)
2374 .set_description(""),
c07f9fc5 2375
d2e6a577
FG
2376 Option("osd_recovery_max_omap_entries_per_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2377 .set_default(64000)
2378 .set_description(""),
c07f9fc5 2379
d2e6a577
FG
2380 Option("osd_copyfrom_max_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2381 .set_default(8<<20)
2382 .set_description(""),
c07f9fc5 2383
d2e6a577
FG
2384 Option("osd_push_per_object_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2385 .set_default(1000)
2386 .set_description(""),
c07f9fc5 2387
d2e6a577
FG
2388 Option("osd_max_push_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2389 .set_default(8<<20)
2390 .set_description(""),
c07f9fc5 2391
d2e6a577
FG
2392 Option("osd_max_push_objects", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2393 .set_default(10)
2394 .set_description(""),
c07f9fc5 2395
d2e6a577
FG
2396 Option("osd_recovery_forget_lost_objects", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2397 .set_default(false)
2398 .set_description(""),
c07f9fc5 2399
d2e6a577
FG
2400 Option("osd_max_scrubs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2401 .set_default(1)
2402 .set_description(""),
c07f9fc5 2403
d2e6a577
FG
2404 Option("osd_scrub_during_recovery", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2405 .set_default(false)
2406 .set_description(""),
c07f9fc5 2407
d2e6a577
FG
2408 Option("osd_scrub_begin_hour", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2409 .set_default(0)
2410 .set_description(""),
c07f9fc5 2411
d2e6a577
FG
2412 Option("osd_scrub_end_hour", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2413 .set_default(24)
2414 .set_description(""),
c07f9fc5 2415
d2e6a577
FG
2416 Option("osd_scrub_load_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2417 .set_default(0.5)
2418 .set_description(""),
c07f9fc5 2419
d2e6a577
FG
2420 Option("osd_scrub_min_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2421 .set_default(60*60*24)
2422 .set_description(""),
2423
2424 Option("osd_scrub_max_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2425 .set_default(7*60*60*24)
2426 .set_description(""),
2427
2428 Option("osd_scrub_interval_randomize_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2429 .set_default(0.5)
2430 .set_description(""),
2431
2432 Option("osd_scrub_backoff_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2433 .set_default(.66)
2434 .set_description(""),
2435
2436 Option("osd_scrub_chunk_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2437 .set_default(5)
2438 .set_description(""),
2439
2440 Option("osd_scrub_chunk_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2441 .set_default(25)
2442 .set_description(""),
2443
2444 Option("osd_scrub_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2445 .set_default(0)
2446 .set_description(""),
2447
2448 Option("osd_scrub_auto_repair", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2449 .set_default(false)
2450 .set_description(""),
2451
2452 Option("osd_scrub_auto_repair_num_errors", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2453 .set_default(5)
2454 .set_description(""),
2455
2456 Option("osd_deep_scrub_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2457 .set_default(60*60*24*7)
2458 .set_description(""),
2459
2460 Option("osd_deep_scrub_randomize_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2461 .set_default(0.15)
2462 .set_description(""),
2463
2464 Option("osd_deep_scrub_stride", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2465 .set_default(524288)
2466 .set_description(""),
2467
2468 Option("osd_deep_scrub_update_digest_min_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2469 .set_default(2*60*60)
2470 .set_description(""),
2471
2472 Option("osd_class_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2473 .set_default(CEPH_LIBDIR "/rados-classes")
2474 .set_description(""),
2475
2476 Option("osd_open_classes_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2477 .set_default(true)
2478 .set_description(""),
2479
2480 Option("osd_class_load_list", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2481 .set_default("cephfs hello journal lock log numops " "rbd refcount replica_log rgw statelog timeindex user version")
2482 .set_description(""),
2483
2484 Option("osd_class_default_list", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2485 .set_default("cephfs hello journal lock log numops " "rbd refcount replica_log rgw statelog timeindex user version")
2486 .set_description(""),
2487
2488 Option("osd_check_for_log_corruption", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2489 .set_default(false)
2490 .set_description(""),
2491
2492 Option("osd_use_stale_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2493 .set_default(false)
2494 .set_description(""),
2495
2496 Option("osd_rollback_to_cluster_snap", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2497 .set_default("")
2498 .set_description(""),
2499
2500 Option("osd_default_notify_timeout", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2501 .set_default(30)
2502 .set_description(""),
2503
2504 Option("osd_kill_backfill_at", Option::TYPE_INT, Option::LEVEL_DEV)
2505 .set_default(0)
2506 .set_description(""),
2507
2508 Option("osd_pg_epoch_persisted_max_stale", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2509 .set_default(40)
2510 .set_description(""),
2511
2512 Option("osd_min_pg_log_entries", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
b5b8bbf5 2513 .set_default(3000)
d2e6a577
FG
2514 .set_description("minimum number of entries to maintain in the PG log")
2515 .add_service("osd")
2516 .add_see_also("osd_max_pg_log_entries")
2517 .add_see_also("osd_pg_log_dups_tracked"),
2518
2519 Option("osd_max_pg_log_entries", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2520 .set_default(10000)
2521 .set_description("maximum number of entries to maintain in the PG log when degraded before we trim")
2522 .add_service("osd")
2523 .add_see_also("osd_min_pg_log_entries")
2524 .add_see_also("osd_pg_log_dups_tracked"),
2525
2526 Option("osd_pg_log_dups_tracked", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2527 .set_default(3000)
2528 .set_description("how many versions back to track in order to detect duplicate ops; this is combined with both the regular pg log entries and additional minimal dup detection entries")
2529 .add_service("osd")
2530 .add_see_also("osd_min_pg_log_entries")
2531 .add_see_also("osd_max_pg_log_entries"),
2532
2533 Option("osd_force_recovery_pg_log_entries_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2534 .set_default(1.3)
2535 .set_description(""),
2536
2537 Option("osd_pg_log_trim_min", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2538 .set_default(100)
2539 .set_description(""),
2540
2541 Option("osd_op_complaint_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2542 .set_default(30)
2543 .set_description(""),
2544
2545 Option("osd_command_max_records", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2546 .set_default(256)
2547 .set_description(""),
2548
2549 Option("osd_max_pg_blocked_by", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2550 .set_default(16)
2551 .set_description(""),
2552
2553 Option("osd_op_log_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2554 .set_default(5)
2555 .set_description(""),
2556
2557 Option("osd_verify_sparse_read_holes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2558 .set_default(false)
2559 .set_description(""),
2560
2561 Option("osd_backoff_on_unfound", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2562 .set_default(true)
2563 .set_description(""),
2564
2565 Option("osd_backoff_on_degraded", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2566 .set_default(false)
2567 .set_description(""),
2568
2569 Option("osd_backoff_on_down", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2570 .set_default(true)
2571 .set_description(""),
2572
2573 Option("osd_backoff_on_peering", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2574 .set_default(false)
2575 .set_description(""),
2576
2577 Option("osd_debug_crash_on_ignored_backoff", Option::TYPE_BOOL, Option::LEVEL_DEV)
2578 .set_default(false)
2579 .set_description(""),
2580
2581 Option("osd_debug_inject_dispatch_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2582 .set_default(0)
2583 .set_description(""),
2584
2585 Option("osd_debug_inject_dispatch_delay_duration", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2586 .set_default(.1)
2587 .set_description(""),
2588
2589 Option("osd_debug_drop_ping_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2590 .set_default(0)
2591 .set_description(""),
2592
2593 Option("osd_debug_drop_ping_duration", Option::TYPE_INT, Option::LEVEL_DEV)
2594 .set_default(0)
2595 .set_description(""),
2596
2597 Option("osd_debug_op_order", Option::TYPE_BOOL, Option::LEVEL_DEV)
2598 .set_default(false)
2599 .set_description(""),
2600
2601 Option("osd_debug_verify_missing_on_start", Option::TYPE_BOOL, Option::LEVEL_DEV)
2602 .set_default(false)
2603 .set_description(""),
2604
2605 Option("osd_debug_scrub_chance_rewrite_digest", Option::TYPE_UINT, Option::LEVEL_DEV)
2606 .set_default(0)
2607 .set_description(""),
2608
2609 Option("osd_debug_verify_snaps_on_info", Option::TYPE_BOOL, Option::LEVEL_DEV)
2610 .set_default(false)
2611 .set_description(""),
2612
2613 Option("osd_debug_verify_stray_on_activate", Option::TYPE_BOOL, Option::LEVEL_DEV)
2614 .set_default(false)
2615 .set_description(""),
2616
2617 Option("osd_debug_skip_full_check_in_backfill_reservation", Option::TYPE_BOOL, Option::LEVEL_DEV)
2618 .set_default(false)
2619 .set_description(""),
2620
2621 Option("osd_debug_reject_backfill_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2622 .set_default(0)
2623 .set_description(""),
c07f9fc5 2624
d2e6a577
FG
2625 Option("osd_debug_inject_copyfrom_error", Option::TYPE_BOOL, Option::LEVEL_DEV)
2626 .set_default(false)
2627 .set_description(""),
c07f9fc5 2628
d2e6a577
FG
2629 Option("osd_debug_misdirected_ops", Option::TYPE_BOOL, Option::LEVEL_DEV)
2630 .set_default(false)
2631 .set_description(""),
c07f9fc5 2632
d2e6a577
FG
2633 Option("osd_debug_skip_full_check_in_recovery", Option::TYPE_BOOL, Option::LEVEL_DEV)
2634 .set_default(false)
2635 .set_description(""),
c07f9fc5 2636
d2e6a577
FG
2637 Option("osd_debug_random_push_read_error", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2638 .set_default(0)
2639 .set_description(""),
c07f9fc5 2640
d2e6a577
FG
2641 Option("osd_debug_verify_cached_snaps", Option::TYPE_BOOL, Option::LEVEL_DEV)
2642 .set_default(false)
2643 .set_description(""),
c07f9fc5 2644
d2e6a577
FG
2645 Option("osd_enable_op_tracker", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2646 .set_default(true)
2647 .set_description(""),
c07f9fc5 2648
d2e6a577
FG
2649 Option("osd_num_op_tracker_shard", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2650 .set_default(32)
2651 .set_description(""),
c07f9fc5 2652
d2e6a577
FG
2653 Option("osd_op_history_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2654 .set_default(20)
2655 .set_description(""),
c07f9fc5 2656
d2e6a577
FG
2657 Option("osd_op_history_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2658 .set_default(600)
2659 .set_description(""),
c07f9fc5 2660
d2e6a577
FG
2661 Option("osd_op_history_slow_op_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2662 .set_default(20)
2663 .set_description(""),
c07f9fc5 2664
d2e6a577
FG
2665 Option("osd_op_history_slow_op_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2666 .set_default(10.0)
2667 .set_description(""),
c07f9fc5 2668
d2e6a577
FG
2669 Option("osd_target_transaction_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2670 .set_default(30)
2671 .set_description(""),
c07f9fc5 2672
d2e6a577
FG
2673 Option("osd_failsafe_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2674 .set_default(.97)
2675 .set_description(""),
c07f9fc5 2676
d2e6a577
FG
2677 Option("osd_fast_fail_on_connection_refused", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2678 .set_default(true)
2679 .set_description(""),
c07f9fc5 2680
d2e6a577
FG
2681 Option("osd_pg_object_context_cache_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2682 .set_default(64)
2683 .set_description(""),
c07f9fc5 2684
d2e6a577
FG
2685 Option("osd_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2686 .set_default(false)
2687 .set_description(""),
c07f9fc5 2688
d2e6a577
FG
2689 Option("osd_function_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2690 .set_default(false)
2691 .set_description(""),
c07f9fc5 2692
d2e6a577
FG
2693 Option("osd_fast_info", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2694 .set_default(true)
2695 .set_description(""),
c07f9fc5 2696
d2e6a577
FG
2697 Option("osd_debug_pg_log_writeout", Option::TYPE_BOOL, Option::LEVEL_DEV)
2698 .set_default(false)
2699 .set_description(""),
c07f9fc5 2700
d2e6a577
FG
2701 Option("osd_loop_before_reset_tphandle", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2702 .set_default(64)
2703 .set_description(""),
c07f9fc5 2704
d2e6a577
FG
2705 Option("threadpool_default_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2706 .set_default(60)
2707 .set_description(""),
c07f9fc5 2708
d2e6a577
FG
2709 Option("threadpool_empty_queue_max_wait", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2710 .set_default(2)
2711 .set_description(""),
c07f9fc5 2712
d2e6a577
FG
2713 Option("leveldb_log_to_ceph_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2714 .set_default(true)
2715 .set_description(""),
c07f9fc5 2716
d2e6a577
FG
2717 Option("leveldb_write_buffer_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2718 .set_default(8 *1024*1024)
2719 .set_description(""),
c07f9fc5 2720
d2e6a577
FG
2721 Option("leveldb_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2722 .set_default(128 *1024*1024)
2723 .set_description(""),
c07f9fc5 2724
d2e6a577
FG
2725 Option("leveldb_block_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2726 .set_default(0)
2727 .set_description(""),
c07f9fc5 2728
d2e6a577
FG
2729 Option("leveldb_bloom_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2730 .set_default(0)
2731 .set_description(""),
c07f9fc5 2732
d2e6a577
FG
2733 Option("leveldb_max_open_files", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2734 .set_default(0)
2735 .set_description(""),
c07f9fc5 2736
d2e6a577
FG
2737 Option("leveldb_compression", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2738 .set_default(true)
2739 .set_description(""),
c07f9fc5 2740
d2e6a577
FG
2741 Option("leveldb_paranoid", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2742 .set_default(false)
2743 .set_description(""),
2744
2745 Option("leveldb_log", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2746 .set_default("/dev/null")
2747 .set_description(""),
2748
2749 Option("leveldb_compact_on_mount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2750 .set_default(false)
2751 .set_description(""),
2752
2753 Option("kinetic_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2754 .set_default("")
2755 .set_description(""),
2756
2757 Option("kinetic_port", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2758 .set_default(8123)
2759 .set_description(""),
2760
2761 Option("kinetic_user_id", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2762 .set_default(1)
2763 .set_description(""),
2764
2765 Option("kinetic_hmac_key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2766 .set_default("asdfasdf")
2767 .set_description(""),
2768
2769 Option("kinetic_use_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2770 .set_default(false)
2771 .set_description(""),
2772
2773 Option("rocksdb_separate_wal_dir", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2774 .set_default(false)
2775 .set_description(""),
2776
2777 Option("rocksdb_db_paths", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2778 .set_default("")
2779 .set_description("")
2780 .set_safe(),
2781
2782 Option("rocksdb_log_to_ceph_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2783 .set_default(true)
2784 .set_description(""),
2785
2786 Option("rocksdb_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2787 .set_default(128*1024*1024)
2788 .set_description(""),
2789
2790 Option("rocksdb_cache_row_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2791 .set_default(0)
2792 .set_description(""),
2793
2794 Option("rocksdb_cache_shard_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2795 .set_default(4)
2796 .set_description(""),
2797
2798 Option("rocksdb_cache_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2799 .set_default("lru")
2800 .set_description(""),
2801
2802 Option("rocksdb_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2803 .set_default(4*1024)
2804 .set_description(""),
2805
2806 Option("rocksdb_perf", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2807 .set_default(false)
2808 .set_description(""),
2809
2810 Option("rocksdb_collect_compaction_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2811 .set_default(false)
2812 .set_description(""),
2813
2814 Option("rocksdb_collect_extended_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2815 .set_default(false)
2816 .set_description(""),
2817
2818 Option("rocksdb_collect_memory_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2819 .set_default(false)
2820 .set_description(""),
2821
2822 Option("rocksdb_enable_rmrange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2823 .set_default(false)
2824 .set_description(""),
2825
2826 Option("rocksdb_bloom_bits_per_key", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2827 .set_default(20)
2828 .set_description("Number of bits per key to use for RocksDB's bloom filters.")
2829 .set_long_description("RocksDB bloom filters can be used to quickly answer the question of whether or not a key may exist or definitely does not exist in a given RocksDB SST file without having to read all keys into memory. Using a higher bit value decreases the likelihood of false positives at the expense of additional disk space and memory consumption when the filter is loaded into RAM. The current default value of 20 was found to provide significant performance gains when getattr calls are made (such as during new object creation in bluestore) without significant memory overhead or cache pollution when combined with rocksdb partitioned index filters. See: https://github.com/facebook/rocksdb/wiki/Partitioned-Index-Filters for more information."),
2830
2831 Option("rocksdb_cache_index_and_filter_blocks", Option::TYPE_BOOL, Option::LEVEL_DEV)
2832 .set_default(true)
2833 .set_description("Whether to cache indices and filters in block cache")
2834 .set_long_description("By default RocksDB will load an SST file's index and bloom filters into memory when it is opened and remove them from memory when an SST file is closed. Thus, memory consumption by indices and bloom filters is directly tied to the number of concurrent SST files allowed to be kept open. This option instead stores cached indicies and filters in the block cache where they directly compete with other cached data. By default we set this option to true to better account for and bound rocksdb memory usage and keep filters in memory even when an SST file is closed."),
2835
2836 Option("rocksdb_cache_index_and_filter_blocks_with_high_priority", Option::TYPE_BOOL, Option::LEVEL_DEV)
2837 .set_default(true)
2838 .set_description("Whether to cache indices and filters in the block cache with high priority")
2839 .set_long_description("A downside of setting rocksdb_cache_index_and_filter_blocks to true is that regular data can push indices and filters out of memory. Setting this option to true means they are cached with higher priority than other data and should typically stay in the block cache."),
2840
2841 Option("rocksdb_pin_l0_filter_and_index_blocks_in_cache", Option::TYPE_BOOL, Option::LEVEL_DEV)
2842 .set_default(true)
2843 .set_description("Whether to pin Level 0 indices and bloom filters in the block cache")
2844 .set_long_description("A downside of setting rocksdb_cache_index_and_filter_blocks to true is that regular data can push indices and filters out of memory. Setting this option to true means that level 0 SST files will always have their indices and filters pinned in the block cache."),
2845
2846 Option("rocksdb_index_type", Option::TYPE_STR, Option::LEVEL_DEV)
2847 .set_default("binary_search")
2848 .set_description("Type of index for SST files: binary_search, hash_search, two_level")
2849 .set_long_description("This option controls the table index type. binary_search is a space efficient index block that is optimized for block-search-based index. hash_search may improve prefix lookup performance at the expense of higher disk and memory usage and potentially slower compactions. two_level is an experimental index type that uses two binary search indexes and works in conjunction with partition filters. See: http://rocksdb.org/blog/2017/05/12/partitioned-index-filter.html"),
2850
2851 Option("rocksdb_partition_filters", Option::TYPE_BOOL, Option::LEVEL_DEV)
2852 .set_default(false)
2853 .set_description("(experimental) partition SST index/filters into smaller blocks")
2854 .set_long_description("This is an experimental option for rocksdb that works in conjunction with two_level indices to avoid having to keep the entire filter/index in cache when cache_index_and_filter_blocks is true. The idea is to keep a much smaller top-level index in heap/cache and then opportunistically cache the lower level indices. See: https://github.com/facebook/rocksdb/wiki/Partitioned-Index-Filters"),
2855
2856 Option("rocksdb_metadata_block_size", Option::TYPE_UINT, Option::LEVEL_DEV)
2857 .set_default(4096)
2858 .set_description("The block size for index partitions. (0 = rocksdb default)"),
2859
2860 Option("mon_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2861 .set_default("write_buffer_size=33554432,compression=kNoCompression")
2862 .set_description(""),
2863
2864 Option("osd_client_op_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2865 .set_default(63)
2866 .set_description(""),
2867
2868 Option("osd_recovery_op_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2869 .set_default(3)
2870 .set_description(""),
2871
2872 Option("osd_snap_trim_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2873 .set_default(5)
2874 .set_description(""),
2875
2876 Option("osd_snap_trim_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2877 .set_default(1<<20)
2878 .set_description(""),
2879
2880 Option("osd_scrub_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2881 .set_default(5)
2882 .set_description(""),
2883
2884 Option("osd_scrub_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2885 .set_default(50<<20)
2886 .set_description(""),
2887
2888 Option("osd_requested_scrub_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2889 .set_default(120)
2890 .set_description(""),
2891
2892 Option("osd_recovery_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2893 .set_default(5)
2894 .set_description(""),
2895
2896 Option("osd_recovery_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2897 .set_default(20<<20)
2898 .set_description(""),
2899
2900 Option("osd_recovery_op_warn_multiple", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2901 .set_default(16)
2902 .set_description(""),
2903
2904 Option("osd_mon_shutdown_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2905 .set_default(5)
2906 .set_description(""),
2907
2908 Option("osd_shutdown_pgref_assert", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2909 .set_default(false)
2910 .set_description(""),
2911
2912 Option("osd_max_object_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2913 .set_default(128*1024L*1024L)
2914 .set_description(""),
2915
2916 Option("osd_max_object_name_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2917 .set_default(2048)
2918 .set_description(""),
2919
2920 Option("osd_max_object_namespace_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2921 .set_default(256)
2922 .set_description(""),
2923
2924 Option("osd_max_attr_name_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2925 .set_default(100)
2926 .set_description(""),
2927
2928 Option("osd_max_attr_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2929 .set_default(0)
2930 .set_description(""),
2931
2932 Option("osd_max_omap_entries_per_request", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2933 .set_default(131072)
2934 .set_description(""),
c07f9fc5 2935
d2e6a577
FG
2936 Option("osd_max_omap_bytes_per_request", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2937 .set_default(1<<30)
2938 .set_description(""),
c07f9fc5 2939
d2e6a577
FG
2940 Option("osd_objectstore", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2941 .set_default("filestore")
2942 .set_description(""),
c07f9fc5 2943
d2e6a577
FG
2944 Option("osd_objectstore_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2945 .set_default(false)
2946 .set_description(""),
c07f9fc5 2947
d2e6a577
FG
2948 Option("osd_objectstore_fuse", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2949 .set_default(false)
2950 .set_description(""),
c07f9fc5 2951
d2e6a577
FG
2952 Option("osd_bench_small_size_max_iops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2953 .set_default(100)
2954 .set_description(""),
c07f9fc5 2955
d2e6a577
FG
2956 Option("osd_bench_large_size_max_throughput", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2957 .set_default(100 << 20)
2958 .set_description(""),
c07f9fc5 2959
d2e6a577
FG
2960 Option("osd_bench_max_block_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2961 .set_default(64 << 20)
2962 .set_description(""),
c07f9fc5 2963
d2e6a577
FG
2964 Option("osd_bench_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2965 .set_default(30)
2966 .set_description(""),
c07f9fc5 2967
d2e6a577
FG
2968 Option("osd_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2969 .set_default(false)
2970 .set_description(""),
c07f9fc5 2971
d2e6a577
FG
2972 Option("osdc_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2973 .set_default(false)
2974 .set_description(""),
c07f9fc5 2975
d2e6a577
FG
2976 Option("osd_discard_disconnected_ops", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2977 .set_default(true)
2978 .set_description(""),
c07f9fc5 2979
d2e6a577
FG
2980 Option("memstore_device_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2981 .set_default(1024*1024*1024)
2982 .set_description(""),
c07f9fc5 2983
d2e6a577 2984 Option("memstore_page_set", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
35e4c445 2985 .set_default(false)
d2e6a577 2986 .set_description(""),
c07f9fc5 2987
d2e6a577
FG
2988 Option("memstore_page_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2989 .set_default(64 << 10)
2990 .set_description(""),
c07f9fc5 2991
d2e6a577
FG
2992 Option("objectstore_blackhole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2993 .set_default(false)
2994 .set_description(""),
c07f9fc5 2995
d2e6a577
FG
2996 // --------------------------
2997 // bluestore
c07f9fc5 2998
d2e6a577
FG
2999 Option("bdev_debug_inflight_ios", Option::TYPE_BOOL, Option::LEVEL_DEV)
3000 .set_default(false)
3001 .set_description(""),
c07f9fc5 3002
d2e6a577
FG
3003 Option("bdev_inject_crash", Option::TYPE_INT, Option::LEVEL_DEV)
3004 .set_default(0)
3005 .set_description(""),
c07f9fc5 3006
d2e6a577
FG
3007 Option("bdev_inject_crash_flush_delay", Option::TYPE_INT, Option::LEVEL_DEV)
3008 .set_default(2)
3009 .set_description(""),
c07f9fc5 3010
d2e6a577
FG
3011 Option("bdev_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3012 .set_default(true)
3013 .set_description(""),
c07f9fc5 3014
d2e6a577
FG
3015 Option("bdev_aio_poll_ms", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3016 .set_default(250)
3017 .set_description(""),
c07f9fc5 3018
d2e6a577
FG
3019 Option("bdev_aio_max_queue_depth", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3020 .set_default(1024)
3021 .set_description(""),
c07f9fc5 3022
d2e6a577
FG
3023 Option("bdev_aio_reap_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3024 .set_default(16)
3025 .set_description(""),
c07f9fc5 3026
d2e6a577
FG
3027 Option("bdev_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3028 .set_default(4096)
3029 .set_description(""),
c07f9fc5 3030
d2e6a577
FG
3031 Option("bdev_debug_aio", Option::TYPE_BOOL, Option::LEVEL_DEV)
3032 .set_default(false)
3033 .set_description(""),
c07f9fc5 3034
d2e6a577
FG
3035 Option("bdev_debug_aio_suicide_timeout", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3036 .set_default(60.0)
3037 .set_description(""),
c07f9fc5 3038
d2e6a577
FG
3039 Option("bdev_nvme_unbind_from_kernel", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3040 .set_default(false)
3041 .set_description(""),
c07f9fc5 3042
d2e6a577
FG
3043 Option("bdev_nvme_retry_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3044 .set_default(-1)
3045 .set_description(""),
c07f9fc5 3046
d2e6a577
FG
3047 Option("bluefs_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3048 .set_default(1048576)
3049 .set_description(""),
3050
3051 Option("bluefs_max_prefetch", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3052 .set_default(1048576)
3053 .set_description(""),
3054
3055 Option("bluefs_min_log_runway", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3056 .set_default(1048576)
3057 .set_description(""),
3058
3059 Option("bluefs_max_log_runway", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3060 .set_default(4194304)
3061 .set_description(""),
3062
3063 Option("bluefs_log_compact_min_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3064 .set_default(5.0)
3065 .set_description(""),
3066
3067 Option("bluefs_log_compact_min_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3068 .set_default(16*1048576)
3069 .set_description(""),
3070
3071 Option("bluefs_min_flush_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3072 .set_default(524288)
3073 .set_description(""),
3074
3075 Option("bluefs_compact_log_sync", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3076 .set_default(false)
3077 .set_description(""),
3078
3079 Option("bluefs_buffered_io", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3080 .set_default(false)
3081 .set_description(""),
3082
3083 Option("bluefs_sync_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3084 .set_default(false)
3085 .set_description(""),
3086
3087 Option("bluefs_allocator", Option::TYPE_STR, Option::LEVEL_DEV)
3088 .set_default("bitmap")
3089 .set_description(""),
3090
3091 Option("bluefs_preextend_wal_files", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3092 .set_default(false)
3093 .set_description(""),
3094
3095 Option("bluestore_bluefs", Option::TYPE_BOOL, Option::LEVEL_DEV)
3096 .set_default(true)
3097 .add_tag("mkfs")
3098 .set_description("Use BlueFS to back rocksdb")
3099 .set_long_description("BlueFS allows rocksdb to share the same physical device(s) as the rest of BlueStore. It should be used in all cases unless testing/developing an alternative metadata database for BlueStore."),
3100
3101 Option("bluestore_bluefs_env_mirror", Option::TYPE_BOOL, Option::LEVEL_DEV)
3102 .set_default(false)
3103 .add_tag("mkfs")
3104 .set_description("Mirror bluefs data to file system for testing/validation"),
3105
3106 Option("bluestore_bluefs_min", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3107 .set_default(1*1024*1024*1024)
3108 .set_description("minimum disk space allocated to BlueFS (e.g., at mkfs)"),
3109
3110 Option("bluestore_bluefs_min_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3111 .set_default(.02)
3112 .set_description("Minimum fraction of free space devoted to BlueFS"),
3113
3114 Option("bluestore_bluefs_max_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3115 .set_default(.90)
3116 .set_description("Maximum fraction of free storage devoted to BlueFS"),
3117
3118 Option("bluestore_bluefs_gift_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3119 .set_default(.02)
3120 .set_description("Maximum fraction of free space to give to BlueFS at once"),
3121
3122 Option("bluestore_bluefs_reclaim_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3123 .set_default(.20)
3124 .set_description("Maximum fraction of free space to reclaim from BlueFS at once"),
3125
3126 Option("bluestore_bluefs_balance_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3127 .set_default(1)
3128 .set_description("How frequently (in seconds) to balance free space between BlueFS and BlueStore"),
3129
3130 Option("bluestore_spdk_mem", Option::TYPE_UINT, Option::LEVEL_DEV)
3131 .set_default(512)
3132 .set_description(""),
3133
3134 Option("bluestore_spdk_coremask", Option::TYPE_STR, Option::LEVEL_DEV)
3135 .set_default("0x3")
3136 .set_description(""),
3137
3138 Option("bluestore_spdk_max_io_completion", Option::TYPE_UINT, Option::LEVEL_DEV)
3139 .set_default(0)
3140 .set_description(""),
3141
3142 Option("bluestore_block_path", Option::TYPE_STR, Option::LEVEL_DEV)
3143 .set_default("")
3144 .add_tag("mkfs")
3145 .set_description("Path to block device/file"),
3146
3147 Option("bluestore_block_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3148 .set_default(10ull * 1024*1024*1024)
3149 .add_tag("mkfs")
3150 .set_description("Size of file to create for backing bluestore"),
3151
3152 Option("bluestore_block_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3153 .set_default(true)
3154 .add_tag("mkfs")
3155 .set_description("Create bluestore_block_path if it doesn't exist")
3156 .add_see_also("bluestore_block_path").add_see_also("bluestore_block_size"),
3157
3158 Option("bluestore_block_db_path", Option::TYPE_STR, Option::LEVEL_DEV)
3159 .set_default("")
3160 .add_tag("mkfs")
3161 .set_description("Path for db block device"),
3162
3163 Option("bluestore_block_db_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3164 .set_default(0)
3165 .add_tag("mkfs")
3166 .set_description("Size of file to create for bluestore_block_db_path"),
3167
3168 Option("bluestore_block_db_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3169 .set_default(false)
3170 .add_tag("mkfs")
3171 .set_description("Create bluestore_block_db_path if it doesn't exist")
3172 .add_see_also("bluestore_block_db_path")
3173 .add_see_also("bluestore_block_db_size"),
3174
3175 Option("bluestore_block_wal_path", Option::TYPE_STR, Option::LEVEL_DEV)
3176 .set_default("")
3177 .add_tag("mkfs")
3178 .set_description("Path to block device/file backing bluefs wal"),
3179
3180 Option("bluestore_block_wal_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3181 .set_default(96 * 1024*1024)
3182 .add_tag("mkfs")
3183 .set_description("Size of file to create for bluestore_block_wal_path"),
3184
3185 Option("bluestore_block_wal_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3186 .set_default(false)
3187 .add_tag("mkfs")
3188 .set_description("Create bluestore_block_wal_path if it doesn't exist")
3189 .add_see_also("bluestore_block_wal_path")
3190 .add_see_also("bluestore_block_wal_size"),
3191
3192 Option("bluestore_block_preallocate_file", Option::TYPE_BOOL, Option::LEVEL_DEV)
3193 .set_default(false)
3194 .add_tag("mkfs")
3195 .set_description("Preallocate file created via bluestore_block*_create"),
3196
3197 Option("bluestore_csum_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3198 .set_default("crc32c")
3199 .set_enum_allowed({"none", "crc32c", "crc32c_16", "crc32c_8", "xxhash32", "xxhash64"})
3200 .set_safe()
3201 .set_description("Default checksum algorithm to use")
3202 .set_long_description("crc32c, xxhash32, and xxhash64 are available. The _16 and _8 variants use only a subset of the bits for more compact (but less reliable) checksumming."),
3203
3204 Option("bluestore_csum_min_block", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3205 .set_default(4096)
3206 .set_safe()
3207 .set_description("Minimum block size to checksum")
3208 .set_long_description("A larger checksum block means less checksum metadata to store, but results in read amplification when doing a read smaller than this size (because the entire block must be read to verify the checksum).")
3209 .add_see_also("bluestore_csum_max_block"),
3210
3211 Option("bluestore_csum_max_block", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3212 .set_default(64*1024)
3213 .set_safe()
3214 .set_description("Maximum block size to checksum")
3215 .add_see_also("bluestore_csum_min_block"),
3216
3217 Option("bluestore_min_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3218 .set_default(0)
3219 .add_tag("mkfs")
3220 .set_description("Minimum allocation size to allocate for an object")
3221 .set_long_description("A smaller allocation size generally means less data is read and then rewritten when a copy-on-write operation is triggered (e.g., when writing to something that was recently snapshotted). Similarly, less data is journaled before performing an overwrite (writes smaller than min_alloc_size must first pass through the BlueStore journal). Larger values of min_alloc_size reduce the amount of metadata required to describe the on-disk layout and reduce overall fragmentation."),
3222
3223 Option("bluestore_min_alloc_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3224 .set_default(64*1024)
3225 .add_tag("mkfs")
3226 .set_description("Default min_alloc_size value for rotational media"),
3227
3228 Option("bluestore_min_alloc_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3229 .set_default(16*1024)
3230 .add_tag("mkfs")
3231 .set_description("Default min_alloc_size value for non-rotational (solid state) media"),
3232
3233 Option("bluestore_max_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3234 .set_default(0)
3235 .add_tag("mkfs")
3236 .set_description("Maximum size of a single allocation (0 for no max)"),
3237
3238 Option("bluestore_prefer_deferred_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3239 .set_default(0)
3240 .set_safe()
3241 .set_description("Writes smaller than this size will be written to the journal and then asynchronously written to the device. This can be beneficial when using rotational media where seeks are expensive, and is helpful both with and without solid state journal/wal devices."),
3242
3243 Option("bluestore_prefer_deferred_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3244 .set_default(32768)
3245 .set_safe()
3246 .set_description("Default bluestore_prefer_deferred_size for rotational media"),
3247
3248 Option("bluestore_prefer_deferred_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3249 .set_default(0)
3250 .set_safe()
3251 .set_description("Default bluestore_prefer_deferred_size for non-rotational (solid state) media"),
3252
3253 Option("bluestore_compression_mode", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3254 .set_default("none")
3255 .set_enum_allowed({"none", "passive", "aggressive", "force"})
3256 .set_safe()
3257 .set_description("Default policy for using compression when pool does not specify")
3258 .set_long_description("'none' means never use compression. 'passive' means use compression when clients hint that data is compressible. 'aggressive' means use compression unless clients hint that data is not compressible. This option is used when the per-pool property for the compression mode is not present."),
3259
3260 Option("bluestore_compression_algorithm", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3261 .set_default("snappy")
3262 .set_enum_allowed({"", "snappy", "zlib", "zstd", "lz4"})
3263 .set_safe()
3264 .set_description("Default compression algorithm to use when writing object data")
3265 .set_long_description("This controls the default compressor to use (if any) if the per-pool property is not set. Note that zstd is *not* recommended for bluestore due to high CPU overhead when compressing small amounts of data."),
3266
3267 Option("bluestore_compression_min_blob_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3268 .set_default(0)
3269 .set_safe()
3270 .set_description("Chunks smaller than this are never compressed"),
3271
3272 Option("bluestore_compression_min_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3273 .set_default(128*1024)
3274 .set_safe()
3275 .set_description("Default value of bluestore_compression_min_blob_size for rotational media"),
3276
3277 Option("bluestore_compression_min_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3278 .set_default(8*1024)
3279 .set_safe()
3280 .set_description("Default value of bluestore_compression_min_blob_size for non-rotational (solid state) media"),
3281
3282 Option("bluestore_compression_max_blob_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3283 .set_default(0)
3284 .set_safe()
3285 .set_description("Chunks larger than this are broken into smaller chunks before being compressed"),
3286
3287 Option("bluestore_compression_max_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3288 .set_default(512*1024)
3289 .set_safe()
3290 .set_description("Default value of bluestore_compression_max_blob_size for rotational media"),
3291
3292 Option("bluestore_compression_max_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3293 .set_default(64*1024)
3294 .set_safe()
3295 .set_description("Default value of bluestore_compression_max_blob_size for non-rotational (solid state) media"),
3296
3297 Option("bluestore_gc_enable_blob_threshold", Option::TYPE_INT, Option::LEVEL_DEV)
3298 .set_default(0)
3299 .set_safe()
3300 .set_description(""),
3301
3302 Option("bluestore_gc_enable_total_threshold", Option::TYPE_INT, Option::LEVEL_DEV)
3303 .set_default(0)
3304 .set_safe()
3305 .set_description(""),
3306
3307 Option("bluestore_max_blob_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3308 .set_default(0)
3309 .set_safe()
3310 .set_description(""),
3311
3312 Option("bluestore_max_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_DEV)
3313 .set_default(512*1024)
3314 .set_safe()
3315 .set_description(""),
3316
3317 Option("bluestore_max_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_DEV)
3318 .set_default(64*1024)
3319 .set_safe()
3320 .set_description(""),
3321
3322 Option("bluestore_compression_required_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3323 .set_default(.875)
3324 .set_safe()
3325 .set_description("Compression ratio required to store compressed data")
3326 .set_long_description("If we compress data and get less than this we discard the result and store the original uncompressed data."),
3327
3328 Option("bluestore_extent_map_shard_max_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3329 .set_default(1200)
3330 .set_description("Max size (bytes) for a single extent map shard before splitting"),
3331
3332 Option("bluestore_extent_map_shard_target_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3333 .set_default(500)
3334 .set_description("Target size (bytes) for a single extent map shard"),
3335
3336 Option("bluestore_extent_map_shard_min_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3337 .set_default(150)
3338 .set_description("Min size (bytes) for a single extent map shard before merging"),
3339
3340 Option("bluestore_extent_map_shard_target_size_slop", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3341 .set_default(.2)
3342 .set_description("Ratio above/below target for a shard when trying to align to an existing extent or blob boundary"),
3343
3344 Option("bluestore_extent_map_inline_shard_prealloc_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3345 .set_default(256)
3346 .set_description("Preallocated buffer for inline shards"),
3347
3348 Option("bluestore_cache_trim_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3349 .set_default(.2)
3350 .set_description("How frequently we trim the bluestore cache"),
3351
3352 Option("bluestore_cache_trim_max_skip_pinned", Option::TYPE_UINT, Option::LEVEL_DEV)
3353 .set_default(64)
3354 .set_description("Max pinned cache entries we consider before giving up"),
3355
3356 Option("bluestore_cache_type", Option::TYPE_STR, Option::LEVEL_DEV)
3357 .set_default("2q")
3358 .set_enum_allowed({"2q", "lru"})
3359 .set_description("Cache replacement algorithm"),
3360
3361 Option("bluestore_2q_cache_kin_ratio", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3362 .set_default(.5)
3363 .set_description("2Q paper suggests .5"),
3364
3365 Option("bluestore_2q_cache_kout_ratio", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3366 .set_default(.5)
3367 .set_description("2Q paper suggests .5"),
3368
3369 Option("bluestore_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3370 .set_default(0)
3371 .set_description("Cache size (in bytes) for BlueStore")
3372 .set_long_description("This includes data and metadata cached by BlueStore as well as memory devoted to rocksdb's cache(s)."),
3373
3374 Option("bluestore_cache_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3375 .set_default(1ull*1024*1024*1024)
3376 .set_description("Default bluestore_cache_size for rotational media"),
3377
3378 Option("bluestore_cache_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3379 .set_default(3ull*1024*1024*1024)
3380 .set_description("Default bluestore_cache_size for non-rotational (solid state) media"),
3381
3382 Option("bluestore_cache_meta_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3383 .set_default(.01)
3384 .set_description("Ratio of bluestore cache to devote to metadata"),
3385
3386 Option("bluestore_cache_kv_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3387 .set_default(.99)
3388 .set_description("Ratio of bluestore cache to devote to kv database (rocksdb)"),
3389
3390 Option("bluestore_cache_kv_max", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3391 .set_default(512*1024*1024)
3392 .set_description("Max memory (bytes) to devote to kv database (rocksdb)"),
3393
3394 Option("bluestore_kvbackend", Option::TYPE_STR, Option::LEVEL_DEV)
3395 .set_default("rocksdb")
3396 .add_tag("mkfs")
3397 .set_description("Key value database to use for bluestore"),
3398
3399 Option("bluestore_allocator", Option::TYPE_STR, Option::LEVEL_DEV)
3400 .set_default("bitmap")
3401 .add_tag("mkfs")
3402 .set_description(""),
3403
3404 Option("bluestore_freelist_blocks_per_key", Option::TYPE_INT, Option::LEVEL_DEV)
3405 .set_default(128)
3406 .set_description("Block (and bits) per database key"),
3407
3408 Option("bluestore_bitmapallocator_blocks_per_zone", Option::TYPE_INT, Option::LEVEL_DEV)
3409 .set_default(1024)
3410 .set_description(""),
3411
3412 Option("bluestore_bitmapallocator_span_size", Option::TYPE_INT, Option::LEVEL_DEV)
3413 .set_default(1024)
3414 .set_description(""),
3415
3416 Option("bluestore_max_deferred_txc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3417 .set_default(32)
3418 .set_description("Max transactions with deferred writes that can accumulate before we force flush deferred writes"),
3419
3420 Option("bluestore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3421 .set_default("compression=kNoCompression,max_write_buffer_number=4,min_write_buffer_number_to_merge=1,recycle_log_file_num=4,write_buffer_size=268435456,writable_file_max_buffer_size=0,compaction_readahead_size=2097152")
3422 .set_description("Rocksdb options"),
3423
3424 Option("bluestore_fsck_on_mount", Option::TYPE_BOOL, Option::LEVEL_DEV)
3425 .set_default(false)
3426 .set_description("Run fsck at mount"),
3427
3428 Option("bluestore_fsck_on_mount_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3429 .set_default(true)
3430 .set_description("Run deep fsck at mount"),
3431
3432 Option("bluestore_fsck_on_umount", Option::TYPE_BOOL, Option::LEVEL_DEV)
3433 .set_default(false)
3434 .set_description("Run fsck at umount"),
3435
3436 Option("bluestore_fsck_on_umount_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3437 .set_default(true)
3438 .set_description("Run deep fsck at umount"),
3439
3440 Option("bluestore_fsck_on_mkfs", Option::TYPE_BOOL, Option::LEVEL_DEV)
3441 .set_default(true)
3442 .set_description("Run fsck after mkfs"),
3443
3444 Option("bluestore_fsck_on_mkfs_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3445 .set_default(false)
3446 .set_description("Run deep fsck after mkfs"),
3447
3448 Option("bluestore_sync_submit_transaction", Option::TYPE_BOOL, Option::LEVEL_DEV)
3449 .set_default(false)
3450 .set_description("Try to submit metadata transaction to rocksdb in queuing thread context"),
3451
3452 Option("bluestore_throttle_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3453 .set_default(64*1024*1024)
3454 .set_safe()
3455 .set_description("Maximum bytes in flight before we throttle IO submission"),
3456
3457 Option("bluestore_throttle_deferred_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3458 .set_default(128*1024*1024)
3459 .set_safe()
3460 .set_description("Maximum bytes for deferred writes before we throttle IO submission"),
3461
3462 Option("bluestore_throttle_cost_per_io", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3463 .set_default(0)
3464 .set_safe()
3465 .set_description("Overhead added to transaction cost (in bytes) for each IO"),
3466
3467 Option("bluestore_throttle_cost_per_io_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3468 .set_default(670000)
3469 .set_safe()
3470 .set_description("Default bluestore_throttle_cost_per_io for rotational media"),
3471
3472 Option("bluestore_throttle_cost_per_io_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3473 .set_default(4000)
3474 .set_safe()
3475 .set_description("Default bluestore_throttle_cost_per_io for non-rotation (solid state) media"),
3476
3477
3478 Option("bluestore_deferred_batch_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3479 .set_default(0)
3480 .set_safe()
3481 .set_description("Max number of deferred writes before we flush the deferred write queue"),
3482
3483 Option("bluestore_deferred_batch_ops_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3484 .set_default(64)
3485 .set_safe()
3486 .set_description("Default bluestore_deferred_batch_ops for rotational media"),
3487
3488 Option("bluestore_deferred_batch_ops_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3489 .set_default(16)
3490 .set_safe()
3491 .set_description("Default bluestore_deferred_batch_ops for non-rotational (solid state) media"),
3492
3493 Option("bluestore_nid_prealloc", Option::TYPE_INT, Option::LEVEL_DEV)
3494 .set_default(1024)
3495 .set_description("Number of unique object ids to preallocate at a time"),
3496
3497 Option("bluestore_blobid_prealloc", Option::TYPE_UINT, Option::LEVEL_DEV)
3498 .set_default(10240)
3499 .set_description("Number of unique blob ids to preallocate at a time"),
3500
3501 Option("bluestore_clone_cow", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3502 .set_default(true)
3503 .set_safe()
3504 .set_description("Use copy-on-write when cloning objects (versus reading and rewriting them at clone time)"),
3505
3506 Option("bluestore_default_buffered_read", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3507 .set_default(true)
3508 .set_safe()
3509 .set_description("Cache read results by default (unless hinted NOCACHE or WONTNEED)"),
3510
3511 Option("bluestore_default_buffered_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3512 .set_default(false)
3513 .set_safe()
3514 .set_description("Cache writes by default (unless hinted NOCACHE or WONTNEED)"),
3515
3516 Option("bluestore_debug_misc", Option::TYPE_BOOL, Option::LEVEL_DEV)
3517 .set_default(false)
3518 .set_description(""),
3519
3520 Option("bluestore_debug_no_reuse_blocks", Option::TYPE_BOOL, Option::LEVEL_DEV)
3521 .set_default(false)
3522 .set_description(""),
3523
3524 Option("bluestore_debug_small_allocations", Option::TYPE_INT, Option::LEVEL_DEV)
3525 .set_default(0)
3526 .set_description(""),
3527
3528 Option("bluestore_debug_freelist", Option::TYPE_BOOL, Option::LEVEL_DEV)
3529 .set_default(false)
3530 .set_description(""),
3531
3532 Option("bluestore_debug_prefill", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3533 .set_default(0)
3534 .set_description("simulate fragmentation"),
3535
3536 Option("bluestore_debug_prefragment_max", Option::TYPE_INT, Option::LEVEL_DEV)
3537 .set_default(1048576)
3538 .set_description(""),
3539
3540 Option("bluestore_debug_inject_read_err", Option::TYPE_BOOL, Option::LEVEL_DEV)
3541 .set_default(false)
3542 .set_description(""),
3543
3544 Option("bluestore_debug_randomize_serial_transaction", Option::TYPE_INT, Option::LEVEL_DEV)
3545 .set_default(0)
3546 .set_description(""),
3547
3548 Option("bluestore_debug_omit_block_device_write", Option::TYPE_BOOL, Option::LEVEL_DEV)
3549 .set_default(false)
3550 .set_description(""),
3551
3552 Option("bluestore_debug_fsck_abort", Option::TYPE_BOOL, Option::LEVEL_DEV)
3553 .set_default(false)
3554 .set_description(""),
3555
3556 Option("bluestore_debug_omit_kv_commit", Option::TYPE_BOOL, Option::LEVEL_DEV)
3557 .set_default(false)
3558 .set_description(""),
3559
3560 Option("bluestore_debug_permit_any_bdev_label", Option::TYPE_BOOL, Option::LEVEL_DEV)
3561 .set_default(false)
3562 .set_description(""),
3563
3564 Option("bluestore_shard_finishers", Option::TYPE_BOOL, Option::LEVEL_DEV)
3565 .set_default(false)
3566 .set_description(""),
3567
3568 Option("bluestore_debug_random_read_err", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3569 .set_default(0)
3570 .set_description(""),
c07f9fc5 3571
d2e6a577
FG
3572 // -----------------------------------------
3573 // kstore
c07f9fc5 3574
d2e6a577
FG
3575 Option("kstore_max_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3576 .set_default(512)
3577 .set_description(""),
3578
3579 Option("kstore_max_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3580 .set_default(64*1024*1024)
3581 .set_description(""),
c07f9fc5 3582
d2e6a577
FG
3583 Option("kstore_backend", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3584 .set_default("rocksdb")
3585 .set_description(""),
c07f9fc5 3586
d2e6a577
FG
3587 Option("kstore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3588 .set_default("compression=kNoCompression")
3589 .set_description(""),
c07f9fc5 3590
d2e6a577
FG
3591 Option("kstore_fsck_on_mount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3592 .set_default(false)
3593 .set_description(""),
c07f9fc5 3594
d2e6a577
FG
3595 Option("kstore_fsck_on_mount_deep", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3596 .set_default(true)
3597 .set_description(""),
c07f9fc5 3598
d2e6a577
FG
3599 Option("kstore_nid_prealloc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3600 .set_default(1024)
3601 .set_description(""),
c07f9fc5 3602
d2e6a577
FG
3603 Option("kstore_sync_transaction", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3604 .set_default(false)
3605 .set_description(""),
c07f9fc5 3606
d2e6a577
FG
3607 Option("kstore_sync_submit_transaction", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3608 .set_default(false)
3609 .set_description(""),
c07f9fc5 3610
d2e6a577
FG
3611 Option("kstore_onode_map_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3612 .set_default(1024)
3613 .set_description(""),
c07f9fc5 3614
d2e6a577
FG
3615 Option("kstore_default_stripe_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3616 .set_default(65536)
3617 .set_description(""),
c07f9fc5 3618
d2e6a577
FG
3619 // ---------------------
3620 // filestore
c07f9fc5 3621
d2e6a577
FG
3622 Option("filestore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3623 .set_default("")
3624 .set_description(""),
c07f9fc5 3625
d2e6a577
FG
3626 Option("filestore_omap_backend", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3627 .set_default("rocksdb")
3628 .set_description(""),
c07f9fc5 3629
d2e6a577
FG
3630 Option("filestore_omap_backend_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3631 .set_default("")
3632 .set_description(""),
c07f9fc5 3633
d2e6a577
FG
3634 Option("filestore_wbthrottle_enable", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3635 .set_default(true)
3636 .set_description(""),
c07f9fc5 3637
d2e6a577
FG
3638 Option("filestore_wbthrottle_btrfs_bytes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3639 .set_default(41943040)
3640 .set_description(""),
c07f9fc5 3641
d2e6a577
FG
3642 Option("filestore_wbthrottle_btrfs_bytes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3643 .set_default(419430400)
3644 .set_description(""),
c07f9fc5 3645
d2e6a577
FG
3646 Option("filestore_wbthrottle_btrfs_ios_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3647 .set_default(500)
3648 .set_description(""),
c07f9fc5 3649
d2e6a577
FG
3650 Option("filestore_wbthrottle_btrfs_ios_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3651 .set_default(5000)
3652 .set_description(""),
c07f9fc5 3653
d2e6a577
FG
3654 Option("filestore_wbthrottle_btrfs_inodes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3655 .set_default(500)
3656 .set_description(""),
c07f9fc5 3657
d2e6a577
FG
3658 Option("filestore_wbthrottle_xfs_bytes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3659 .set_default(41943040)
3660 .set_description(""),
c07f9fc5 3661
d2e6a577
FG
3662 Option("filestore_wbthrottle_xfs_bytes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3663 .set_default(419430400)
3664 .set_description(""),
c07f9fc5 3665
d2e6a577
FG
3666 Option("filestore_wbthrottle_xfs_ios_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3667 .set_default(500)
3668 .set_description(""),
c07f9fc5 3669
d2e6a577
FG
3670 Option("filestore_wbthrottle_xfs_ios_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3671 .set_default(5000)
3672 .set_description(""),
c07f9fc5 3673
d2e6a577
FG
3674 Option("filestore_wbthrottle_xfs_inodes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3675 .set_default(500)
3676 .set_description(""),
c07f9fc5 3677
d2e6a577
FG
3678 Option("filestore_wbthrottle_btrfs_inodes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3679 .set_default(5000)
3680 .set_description(""),
c07f9fc5 3681
d2e6a577
FG
3682 Option("filestore_wbthrottle_xfs_inodes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3683 .set_default(5000)
3684 .set_description(""),
c07f9fc5 3685
d2e6a577
FG
3686 Option("filestore_odsync_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3687 .set_default(false)
3688 .set_description(""),
c07f9fc5 3689
d2e6a577
FG
3690 Option("filestore_index_retry_probability", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3691 .set_default(0)
3692 .set_description(""),
c07f9fc5 3693
d2e6a577
FG
3694 Option("filestore_debug_inject_read_err", Option::TYPE_BOOL, Option::LEVEL_DEV)
3695 .set_default(false)
3696 .set_description(""),
c07f9fc5 3697
d2e6a577
FG
3698 Option("filestore_debug_random_read_err", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3699 .set_default(0)
3700 .set_description(""),
c07f9fc5 3701
d2e6a577
FG
3702 Option("filestore_debug_omap_check", Option::TYPE_BOOL, Option::LEVEL_DEV)
3703 .set_default(false)
3704 .set_description(""),
c07f9fc5 3705
d2e6a577
FG
3706 Option("filestore_omap_header_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3707 .set_default(1024)
3708 .set_description(""),
c07f9fc5 3709
d2e6a577
FG
3710 Option("filestore_max_inline_xattr_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3711 .set_default(0)
3712 .set_description(""),
c07f9fc5 3713
d2e6a577
FG
3714 Option("filestore_max_inline_xattr_size_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3715 .set_default(65536)
3716 .set_description(""),
c07f9fc5 3717
d2e6a577
FG
3718 Option("filestore_max_inline_xattr_size_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3719 .set_default(2048)
3720 .set_description(""),
c07f9fc5 3721
d2e6a577
FG
3722 Option("filestore_max_inline_xattr_size_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3723 .set_default(512)
3724 .set_description(""),
c07f9fc5 3725
d2e6a577
FG
3726 Option("filestore_max_inline_xattrs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3727 .set_default(0)
3728 .set_description(""),
c07f9fc5 3729
d2e6a577
FG
3730 Option("filestore_max_inline_xattrs_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3731 .set_default(10)
3732 .set_description(""),
c07f9fc5 3733
d2e6a577
FG
3734 Option("filestore_max_inline_xattrs_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3735 .set_default(10)
3736 .set_description(""),
c07f9fc5 3737
d2e6a577
FG
3738 Option("filestore_max_inline_xattrs_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3739 .set_default(2)
3740 .set_description(""),
c07f9fc5 3741
d2e6a577
FG
3742 Option("filestore_max_xattr_value_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3743 .set_default(0)
3744 .set_description(""),
c07f9fc5 3745
d2e6a577
FG
3746 Option("filestore_max_xattr_value_size_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3747 .set_default(64<<10)
3748 .set_description(""),
c07f9fc5 3749
d2e6a577
FG
3750 Option("filestore_max_xattr_value_size_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3751 .set_default(64<<10)
3752 .set_description(""),
c07f9fc5 3753
d2e6a577
FG
3754 Option("filestore_max_xattr_value_size_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3755 .set_default(1<<10)
3756 .set_description(""),
c07f9fc5 3757
d2e6a577
FG
3758 Option("filestore_sloppy_crc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3759 .set_default(false)
3760 .set_description(""),
c07f9fc5 3761
d2e6a577
FG
3762 Option("filestore_sloppy_crc_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3763 .set_default(65536)
3764 .set_description(""),
c07f9fc5 3765
d2e6a577
FG
3766 Option("filestore_max_alloc_hint_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3767 .set_default(1ULL << 20)
3768 .set_description(""),
c07f9fc5 3769
d2e6a577
FG
3770 Option("filestore_max_sync_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3771 .set_default(5)
3772 .set_description(""),
c07f9fc5 3773
d2e6a577
FG
3774 Option("filestore_min_sync_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3775 .set_default(.01)
3776 .set_description(""),
c07f9fc5 3777
d2e6a577
FG
3778 Option("filestore_btrfs_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3779 .set_default(true)
3780 .set_description(""),
c07f9fc5 3781
d2e6a577
FG
3782 Option("filestore_btrfs_clone_range", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3783 .set_default(true)
3784 .set_description(""),
c07f9fc5 3785
d2e6a577
FG
3786 Option("filestore_zfs_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3787 .set_default(false)
3788 .set_description(""),
c07f9fc5 3789
d2e6a577
FG
3790 Option("filestore_fsync_flushes_journal_data", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3791 .set_default(false)
3792 .set_description(""),
c07f9fc5 3793
d2e6a577
FG
3794 Option("filestore_fiemap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3795 .set_default(false)
3796 .set_description(""),
c07f9fc5 3797
d2e6a577
FG
3798 Option("filestore_punch_hole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3799 .set_default(false)
3800 .set_description(""),
c07f9fc5 3801
d2e6a577
FG
3802 Option("filestore_seek_data_hole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3803 .set_default(false)
3804 .set_description(""),
c07f9fc5 3805
d2e6a577
FG
3806 Option("filestore_splice", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3807 .set_default(false)
3808 .set_description(""),
c07f9fc5 3809
d2e6a577
FG
3810 Option("filestore_fadvise", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3811 .set_default(true)
3812 .set_description(""),
c07f9fc5 3813
d2e6a577
FG
3814 Option("filestore_collect_device_partition_information", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3815 .set_default(true)
3816 .set_description(""),
c07f9fc5 3817
d2e6a577
FG
3818 Option("filestore_xfs_extsize", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3819 .set_default(false)
3820 .set_description(""),
c07f9fc5 3821
d2e6a577
FG
3822 Option("filestore_journal_parallel", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3823 .set_default(false)
3824 .set_description(""),
c07f9fc5 3825
d2e6a577
FG
3826 Option("filestore_journal_writeahead", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3827 .set_default(false)
3828 .set_description(""),
c07f9fc5 3829
d2e6a577
FG
3830 Option("filestore_journal_trailing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3831 .set_default(false)
3832 .set_description(""),
c07f9fc5 3833
d2e6a577
FG
3834 Option("filestore_queue_max_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3835 .set_default(50)
3836 .set_description(""),
c07f9fc5 3837
d2e6a577
FG
3838 Option("filestore_queue_max_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3839 .set_default(100 << 20)
3840 .set_description(""),
c07f9fc5 3841
d2e6a577
FG
3842 Option("filestore_caller_concurrency", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3843 .set_default(10)
3844 .set_description(""),
c07f9fc5 3845
d2e6a577
FG
3846 Option("filestore_expected_throughput_bytes", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3847 .set_default(200 << 20)
3848 .set_description(""),
c07f9fc5 3849
d2e6a577
FG
3850 Option("filestore_expected_throughput_ops", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3851 .set_default(200)
3852 .set_description(""),
c07f9fc5 3853
d2e6a577
FG
3854 Option("filestore_queue_max_delay_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3855 .set_default(0)
3856 .set_description(""),
c07f9fc5 3857
d2e6a577
FG
3858 Option("filestore_queue_high_delay_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3859 .set_default(0)
3860 .set_description(""),
c07f9fc5 3861
d2e6a577
FG
3862 Option("filestore_queue_low_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3863 .set_default(0.3)
3864 .set_description(""),
c07f9fc5 3865
d2e6a577
FG
3866 Option("filestore_queue_high_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3867 .set_default(0.9)
3868 .set_description(""),
c07f9fc5 3869
d2e6a577
FG
3870 Option("filestore_op_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3871 .set_default(2)
3872 .set_description(""),
c07f9fc5 3873
d2e6a577
FG
3874 Option("filestore_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3875 .set_default(60)
3876 .set_description(""),
c07f9fc5 3877
d2e6a577
FG
3878 Option("filestore_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3879 .set_default(180)
3880 .set_description(""),
c07f9fc5 3881
d2e6a577
FG
3882 Option("filestore_commit_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3883 .set_default(600)
3884 .set_description(""),
c07f9fc5 3885
d2e6a577
FG
3886 Option("filestore_fiemap_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3887 .set_default(4096)
3888 .set_description(""),
c07f9fc5 3889
d2e6a577
FG
3890 Option("filestore_merge_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3891 .set_default(10)
3892 .set_description(""),
c07f9fc5 3893
d2e6a577
FG
3894 Option("filestore_split_multiple", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3895 .set_default(2)
3896 .set_description(""),
c07f9fc5 3897
d2e6a577
FG
3898 Option("filestore_split_rand_factor", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3899 .set_default(20)
3900 .set_description(""),
c07f9fc5 3901
d2e6a577
FG
3902 Option("filestore_update_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3903 .set_default(1000)
3904 .set_description(""),
c07f9fc5 3905
d2e6a577
FG
3906 Option("filestore_blackhole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3907 .set_default(false)
3908 .set_description(""),
c07f9fc5 3909
d2e6a577
FG
3910 Option("filestore_fd_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3911 .set_default(128)
3912 .set_description(""),
c07f9fc5 3913
d2e6a577
FG
3914 Option("filestore_fd_cache_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3915 .set_default(16)
3916 .set_description(""),
c07f9fc5 3917
d2e6a577
FG
3918 Option("filestore_ondisk_finisher_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3919 .set_default(1)
3920 .set_description(""),
c07f9fc5 3921
d2e6a577
FG
3922 Option("filestore_apply_finisher_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3923 .set_default(1)
3924 .set_description(""),
c07f9fc5 3925
d2e6a577
FG
3926 Option("filestore_dump_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3927 .set_default("")
3928 .set_description(""),
c07f9fc5 3929
d2e6a577
FG
3930 Option("filestore_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
3931 .set_default(0)
3932 .set_description(""),
c07f9fc5 3933
d2e6a577
FG
3934 Option("filestore_inject_stall", Option::TYPE_INT, Option::LEVEL_DEV)
3935 .set_default(0)
3936 .set_description(""),
c07f9fc5 3937
d2e6a577
FG
3938 Option("filestore_fail_eio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3939 .set_default(true)
3940 .set_description(""),
c07f9fc5 3941
d2e6a577
FG
3942 Option("filestore_debug_verify_split", Option::TYPE_BOOL, Option::LEVEL_DEV)
3943 .set_default(false)
3944 .set_description(""),
c07f9fc5 3945
d2e6a577
FG
3946 Option("journal_dio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3947 .set_default(true)
3948 .set_description(""),
c07f9fc5 3949
d2e6a577
FG
3950 Option("journal_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3951 .set_default(true)
3952 .set_description(""),
c07f9fc5 3953
d2e6a577
FG
3954 Option("journal_force_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3955 .set_default(false)
3956 .set_description(""),
c07f9fc5 3957
d2e6a577
FG
3958 Option("journal_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3959 .set_default(4096)
3960 .set_description(""),
c07f9fc5 3961
d2e6a577
FG
3962 Option("journal_max_corrupt_search", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3963 .set_default(10<<20)
3964 .set_description(""),
c07f9fc5 3965
d2e6a577
FG
3966 Option("journal_block_align", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3967 .set_default(true)
3968 .set_description(""),
c07f9fc5 3969
d2e6a577
FG
3970 Option("journal_write_header_frequency", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3971 .set_default(0)
3972 .set_description(""),
c07f9fc5 3973
d2e6a577
FG
3974 Option("journal_max_write_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3975 .set_default(10 << 20)
3976 .set_description(""),
c07f9fc5 3977
d2e6a577
FG
3978 Option("journal_max_write_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3979 .set_default(100)
3980 .set_description(""),
c07f9fc5 3981
d2e6a577
FG
3982 Option("journal_throttle_low_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3983 .set_default(0.6)
3984 .set_description(""),
c07f9fc5 3985
d2e6a577
FG
3986 Option("journal_throttle_high_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3987 .set_default(0.9)
3988 .set_description(""),
c07f9fc5 3989
d2e6a577
FG
3990 Option("journal_throttle_high_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3991 .set_default(0)
3992 .set_description(""),
c07f9fc5 3993
d2e6a577
FG
3994 Option("journal_throttle_max_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3995 .set_default(0)
3996 .set_description(""),
c07f9fc5 3997
d2e6a577
FG
3998 Option("journal_align_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3999 .set_default(64 << 10)
4000 .set_description(""),
c07f9fc5 4001
d2e6a577
FG
4002 Option("journal_replay_from", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4003 .set_default(0)
4004 .set_description(""),
c07f9fc5 4005
d2e6a577
FG
4006 Option("journal_zero_on_create", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4007 .set_default(false)
4008 .set_description(""),
c07f9fc5 4009
d2e6a577
FG
4010 Option("journal_ignore_corruption", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4011 .set_default(false)
4012 .set_description(""),
c07f9fc5 4013
d2e6a577
FG
4014 Option("journal_discard", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4015 .set_default(false)
4016 .set_description(""),
c07f9fc5 4017
d2e6a577
FG
4018 Option("fio_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4019 .set_default("/tmp/fio")
4020 .set_description(""),
c07f9fc5 4021
d2e6a577
FG
4022 Option("rados_mon_op_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4023 .set_default(0)
4024 .set_description(""),
c07f9fc5 4025
d2e6a577
FG
4026 Option("rados_osd_op_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4027 .set_default(0)
4028 .set_description(""),
c07f9fc5 4029
d2e6a577
FG
4030 Option("rados_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4031 .set_default(false)
4032 .set_description(""),
c07f9fc5 4033
d2e6a577
FG
4034 Option("nss_db_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4035 .set_default("")
4036 .set_description(""),
c07f9fc5 4037
d2e6a577
FG
4038 Option("mgr_module_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4039 .set_default(CEPH_PKGLIBDIR "/mgr")
4040 .set_description(""),
c07f9fc5 4041
d2e6a577
FG
4042 Option("mgr_initial_modules", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4043 .set_default("restful status")
4044 .set_description(""),
c07f9fc5 4045
d2e6a577
FG
4046 Option("mgr_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4047 .set_default("/var/lib/ceph/mgr/$cluster-$id")
4048 .set_description(""),
c07f9fc5 4049
d2e6a577
FG
4050 Option("mgr_tick_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4051 .set_default(2)
4052 .set_description(""),
c07f9fc5 4053
d2e6a577
FG
4054 Option("mgr_stats_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4055 .set_default(5)
4056 .set_description(""),
c07f9fc5 4057
d2e6a577
FG
4058 Option("mgr_client_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4059 .set_default(128*1048576)
4060 .set_description(""),
c07f9fc5 4061
d2e6a577
FG
4062 Option("mgr_client_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4063 .set_default(512)
4064 .set_description(""),
c07f9fc5 4065
d2e6a577
FG
4066 Option("mgr_osd_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4067 .set_default(512*1048576)
4068 .set_description(""),
c07f9fc5 4069
d2e6a577
FG
4070 Option("mgr_osd_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4071 .set_default(8192)
4072 .set_description(""),
c07f9fc5 4073
d2e6a577
FG
4074 Option("mgr_mds_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4075 .set_default(128*1048576)
4076 .set_description(""),
c07f9fc5 4077
d2e6a577
FG
4078 Option("mgr_mds_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4079 .set_default(128)
4080 .set_description(""),
c07f9fc5 4081
d2e6a577
FG
4082 Option("mgr_mon_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4083 .set_default(128*1048576)
4084 .set_description(""),
c07f9fc5 4085
d2e6a577
FG
4086 Option("mgr_mon_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4087 .set_default(128)
4088 .set_description(""),
c07f9fc5 4089
d2e6a577
FG
4090 Option("mgr_connect_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4091 .set_default(1.0)
4092 .set_description(""),
c07f9fc5 4093
d2e6a577
FG
4094 Option("mgr_service_beacon_grace", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4095 .set_default(60.0)
4096 .set_description(""),
c07f9fc5 4097
d2e6a577
FG
4098 Option("mon_mgr_digest_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4099 .set_default(5)
4100 .set_description(""),
c07f9fc5 4101
d2e6a577
FG
4102 Option("mon_mgr_beacon_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4103 .set_default(30)
4104 .set_description(""),
c07f9fc5 4105
d2e6a577
FG
4106 Option("mon_mgr_inactive_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4107 .set_default(60)
4108 .set_description(""),
c07f9fc5 4109
d2e6a577
FG
4110 Option("mon_mgr_mkfs_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4111 .set_default(60)
4112 .set_description(""),
c07f9fc5 4113
d2e6a577
FG
4114 Option("mutex_perf_counter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4115 .set_default(false)
4116 .set_description(""),
c07f9fc5 4117
d2e6a577
FG
4118 Option("throttler_perf_counter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4119 .set_default(true)
4120 .set_description(""),
c07f9fc5 4121
d2e6a577
FG
4122 Option("event_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4123 .set_default(false)
4124 .set_description(""),
c07f9fc5 4125
d2e6a577
FG
4126 Option("internal_safe_to_start_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4127 .set_default(false)
4128 .set_description(""),
c07f9fc5 4129
d2e6a577
FG
4130 Option("debug_deliberately_leak_memory", Option::TYPE_BOOL, Option::LEVEL_DEV)
4131 .set_default(false)
4132 .set_description(""),
4133 });
4134}
c07f9fc5 4135
d2e6a577
FG
4136std::vector<Option> get_rgw_options() {
4137 return std::vector<Option>({
4138 Option("rgw_acl_grants_max_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4139 .set_default(100)
4140 .set_description(""),
c07f9fc5 4141
d2e6a577
FG
4142 Option("rgw_max_chunk_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4143 .set_default(4 * 1024 * 1024)
4144 .set_description(""),
c07f9fc5 4145
d2e6a577
FG
4146 Option("rgw_put_obj_min_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4147 .set_default(16 * 1024 * 1024)
4148 .set_description(""),
c07f9fc5 4149
d2e6a577
FG
4150 Option("rgw_put_obj_max_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4151 .set_default(64 * 1024 * 1024)
4152 .set_description(""),
c07f9fc5 4153
d2e6a577
FG
4154 Option("rgw_max_put_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4155 .set_default(5ULL*1024*1024*1024)
4156 .set_description(""),
c07f9fc5 4157
d2e6a577
FG
4158 Option("rgw_max_put_param_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4159 .set_default(1 * 1024 * 1024)
4160 .set_description(""),
c07f9fc5 4161
d2e6a577
FG
4162 Option("rgw_override_bucket_index_max_shards", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4163 .set_default(0)
4164 .set_description(""),
c07f9fc5 4165
d2e6a577
FG
4166 Option("rgw_bucket_index_max_aio", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4167 .set_default(8)
4168 .set_description(""),
c07f9fc5 4169
d2e6a577
FG
4170 Option("rgw_enable_quota_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4171 .set_default(true)
4172 .set_description(""),
c07f9fc5 4173
d2e6a577
FG
4174 Option("rgw_enable_gc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4175 .set_default(true)
4176 .set_description(""),
c07f9fc5 4177
d2e6a577
FG
4178 Option("rgw_enable_lc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4179 .set_default(true)
4180 .set_description(""),
c07f9fc5 4181
d2e6a577
FG
4182 Option("rgw_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4183 .set_default("/var/lib/ceph/radosgw/$cluster-$id")
4184 .set_description(""),
c07f9fc5 4185
d2e6a577
FG
4186 Option("rgw_enable_apis", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4187 .set_default("s3, s3website, swift, swift_auth, admin")
4188 .set_description(""),
c07f9fc5 4189
d2e6a577
FG
4190 Option("rgw_cache_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4191 .set_default(true)
4192 .set_description(""),
c07f9fc5 4193
d2e6a577
FG
4194 Option("rgw_cache_lru_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4195 .set_default(10000)
4196 .set_description(""),
c07f9fc5 4197
d2e6a577
FG
4198 Option("rgw_socket_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4199 .set_default("")
4200 .set_description(""),
c07f9fc5 4201
d2e6a577
FG
4202 Option("rgw_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4203 .set_default("")
4204 .set_description(""),
c07f9fc5 4205
d2e6a577
FG
4206 Option("rgw_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4207 .set_default("")
4208 .set_description(""),
c07f9fc5 4209
d2e6a577
FG
4210 Option("rgw_dns_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4211 .set_default("")
4212 .set_description(""),
c07f9fc5 4213
d2e6a577
FG
4214 Option("rgw_dns_s3website_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4215 .set_default("")
4216 .set_description(""),
c07f9fc5 4217
d2e6a577
FG
4218 Option("rgw_content_length_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4219 .set_default(false)
4220 .set_description(""),
c07f9fc5 4221
d2e6a577
FG
4222 Option("rgw_lifecycle_work_time", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4223 .set_default("00:00-06:00")
4224 .set_description(""),
c07f9fc5 4225
d2e6a577
FG
4226 Option("rgw_lc_lock_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4227 .set_default(60)
4228 .set_description(""),
c07f9fc5 4229
d2e6a577
FG
4230 Option("rgw_lc_max_objs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4231 .set_default(32)
4232 .set_description(""),
c07f9fc5 4233
d2e6a577
FG
4234 Option("rgw_lc_debug_interval", Option::TYPE_INT, Option::LEVEL_DEV)
4235 .set_default(-1)
4236 .set_description(""),
c07f9fc5 4237
d2e6a577
FG
4238 Option("rgw_mp_lock_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4239 .set_default(600)
4240 .set_description(""),
c07f9fc5 4241
d2e6a577
FG
4242 Option("rgw_script_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4243 .set_default("")
4244 .set_description(""),
c07f9fc5 4245
d2e6a577
FG
4246 Option("rgw_request_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4247 .set_default("")
4248 .set_description(""),
c07f9fc5 4249
d2e6a577
FG
4250 Option("rgw_swift_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4251 .set_default("")
4252 .set_description(""),
c07f9fc5 4253
d2e6a577
FG
4254 Option("rgw_swift_url_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4255 .set_default("swift")
4256 .set_description(""),
c07f9fc5 4257
d2e6a577
FG
4258 Option("rgw_swift_auth_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4259 .set_default("")
4260 .set_description(""),
c07f9fc5 4261
d2e6a577
FG
4262 Option("rgw_swift_auth_entry", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4263 .set_default("auth")
4264 .set_description(""),
c07f9fc5 4265
d2e6a577
FG
4266 Option("rgw_swift_tenant_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4267 .set_default("")
4268 .set_description(""),
c07f9fc5 4269
d2e6a577
FG
4270 Option("rgw_swift_account_in_url", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4271 .set_default(false)
4272 .set_description(""),
c07f9fc5 4273
d2e6a577
FG
4274 Option("rgw_swift_enforce_content_length", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4275 .set_default(false)
4276 .set_description(""),
c07f9fc5 4277
d2e6a577
FG
4278 Option("rgw_keystone_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4279 .set_default("")
4280 .set_description(""),
c07f9fc5 4281
d2e6a577
FG
4282 Option("rgw_keystone_admin_token", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4283 .set_default("")
4284 .set_description(""),
c07f9fc5 4285
d2e6a577
FG
4286 Option("rgw_keystone_admin_user", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4287 .set_default("")
4288 .set_description(""),
c07f9fc5 4289
d2e6a577
FG
4290 Option("rgw_keystone_admin_password", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4291 .set_default("")
4292 .set_description(""),
c07f9fc5 4293
d2e6a577
FG
4294 Option("rgw_keystone_admin_tenant", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4295 .set_default("")
4296 .set_description(""),
c07f9fc5 4297
d2e6a577
FG
4298 Option("rgw_keystone_admin_project", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4299 .set_default("")
4300 .set_description(""),
c07f9fc5 4301
d2e6a577
FG
4302 Option("rgw_keystone_admin_domain", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4303 .set_default("")
4304 .set_description(""),
c07f9fc5 4305
d2e6a577
FG
4306 Option("rgw_keystone_barbican_user", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4307 .set_default("")
4308 .set_description(""),
c07f9fc5 4309
d2e6a577
FG
4310 Option("rgw_keystone_barbican_password", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4311 .set_default("")
4312 .set_description(""),
c07f9fc5 4313
d2e6a577
FG
4314 Option("rgw_keystone_barbican_tenant", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4315 .set_default("")
4316 .set_description(""),
c07f9fc5 4317
d2e6a577
FG
4318 Option("rgw_keystone_barbican_project", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4319 .set_default("")
4320 .set_description(""),
c07f9fc5 4321
d2e6a577
FG
4322 Option("rgw_keystone_barbican_domain", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4323 .set_default("")
4324 .set_description(""),
c07f9fc5 4325
d2e6a577
FG
4326 Option("rgw_keystone_api_version", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4327 .set_default(2)
4328 .set_description(""),
c07f9fc5 4329
d2e6a577
FG
4330 Option("rgw_keystone_accepted_roles", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4331 .set_default("Member, admin")
4332 .set_description(""),
c07f9fc5 4333
d2e6a577
FG
4334 Option("rgw_keystone_accepted_admin_roles", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4335 .set_default("")
4336 .set_description(""),
c07f9fc5 4337
d2e6a577
FG
4338 Option("rgw_keystone_token_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4339 .set_default(10000)
4340 .set_description(""),
c07f9fc5 4341
d2e6a577
FG
4342 Option("rgw_keystone_revocation_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4343 .set_default(15 * 60)
4344 .set_description(""),
c07f9fc5 4345
d2e6a577
FG
4346 Option("rgw_keystone_verify_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4347 .set_default(true)
4348 .set_description(""),
c07f9fc5 4349
d2e6a577
FG
4350 Option("rgw_keystone_implicit_tenants", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4351 .set_default(false)
4352 .set_description(""),
c07f9fc5 4353
d2e6a577
FG
4354 Option("rgw_cross_domain_policy", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4355 .set_default("<allow-access-from domain=\"*\" secure=\"false\" />")
4356 .set_description(""),
c07f9fc5 4357
d2e6a577
FG
4358 Option("rgw_healthcheck_disabling_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4359 .set_default("")
4360 .set_description(""),
c07f9fc5 4361
d2e6a577
FG
4362 Option("rgw_s3_auth_use_rados", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4363 .set_default(true)
4364 .set_description(""),
c07f9fc5 4365
d2e6a577
FG
4366 Option("rgw_s3_auth_use_keystone", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4367 .set_default(false)
4368 .set_description(""),
c07f9fc5 4369
d2e6a577
FG
4370 Option("rgw_s3_auth_aws4_force_boto2_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4371 .set_default(true)
4372 .set_description(""),
c07f9fc5 4373
d2e6a577
FG
4374 Option("rgw_barbican_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4375 .set_default("")
4376 .set_description(""),
c07f9fc5 4377
d2e6a577
FG
4378 Option("rgw_ldap_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4379 .set_default("ldaps://<ldap.your.domain>")
4380 .set_description(""),
c07f9fc5 4381
d2e6a577
FG
4382 Option("rgw_ldap_binddn", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4383 .set_default("uid=admin,cn=users,dc=example,dc=com")
4384 .set_description(""),
c07f9fc5 4385
d2e6a577
FG
4386 Option("rgw_ldap_searchdn", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4387 .set_default("cn=users,cn=accounts,dc=example,dc=com")
4388 .set_description(""),
c07f9fc5 4389
d2e6a577
FG
4390 Option("rgw_ldap_dnattr", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4391 .set_default("uid")
4392 .set_description(""),
c07f9fc5 4393
d2e6a577
FG
4394 Option("rgw_ldap_secret", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4395 .set_default("/etc/openldap/secret")
4396 .set_description(""),
c07f9fc5 4397
d2e6a577
FG
4398 Option("rgw_s3_auth_use_ldap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4399 .set_default(false)
4400 .set_description(""),
c07f9fc5 4401
d2e6a577
FG
4402 Option("rgw_ldap_searchfilter", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4403 .set_default("")
4404 .set_description(""),
c07f9fc5 4405
d2e6a577
FG
4406 Option("rgw_admin_entry", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4407 .set_default("admin")
4408 .set_description(""),
c07f9fc5 4409
d2e6a577
FG
4410 Option("rgw_enforce_swift_acls", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4411 .set_default(true)
4412 .set_description(""),
c07f9fc5 4413
d2e6a577
FG
4414 Option("rgw_swift_token_expiration", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4415 .set_default(24 * 3600)
4416 .set_description(""),
c07f9fc5 4417
d2e6a577
FG
4418 Option("rgw_print_continue", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4419 .set_default(true)
4420 .set_description(""),
c07f9fc5 4421
d2e6a577
FG
4422 Option("rgw_print_prohibited_content_length", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4423 .set_default(false)
4424 .set_description(""),
c07f9fc5 4425
d2e6a577
FG
4426 Option("rgw_remote_addr_param", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4427 .set_default("REMOTE_ADDR")
4428 .set_description(""),
c07f9fc5 4429
d2e6a577
FG
4430 Option("rgw_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4431 .set_default(10*60)
4432 .set_description(""),
c07f9fc5 4433
d2e6a577
FG
4434 Option("rgw_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4435 .set_default(0)
4436 .set_description(""),
c07f9fc5 4437
d2e6a577
FG
4438 Option("rgw_thread_pool_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4439 .set_default(100)
4440 .set_description(""),
c07f9fc5 4441
d2e6a577
FG
4442 Option("rgw_num_control_oids", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4443 .set_default(8)
4444 .set_description(""),
c07f9fc5 4445
d2e6a577
FG
4446 Option("rgw_num_rados_handles", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4447 .set_default(1)
4448 .set_description(""),
c07f9fc5 4449
d2e6a577
FG
4450 Option("rgw_verify_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4451 .set_default(true)
4452 .set_description(""),
c07f9fc5 4453
d2e6a577
FG
4454 Option("rgw_nfs_lru_lanes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4455 .set_default(5)
4456 .set_description(""),
c07f9fc5 4457
d2e6a577
FG
4458 Option("rgw_nfs_lru_lane_hiwat", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4459 .set_default(911)
4460 .set_description(""),
c07f9fc5 4461
d2e6a577
FG
4462 Option("rgw_nfs_fhcache_partitions", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4463 .set_default(3)
4464 .set_description(""),
c07f9fc5 4465
d2e6a577
FG
4466 Option("rgw_nfs_fhcache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4467 .set_default(2017)
4468 .set_description(""),
c07f9fc5 4469
d2e6a577
FG
4470 Option("rgw_nfs_namespace_expire_secs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4471 .set_default(300)
4472 .set_min(1)
4473 .set_description(""),
4474
4475 Option("rgw_nfs_max_gc", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4476 .set_default(300)
4477 .set_min(1)
4478 .set_description(""),
4479
4480 Option("rgw_nfs_write_completion_interval_s", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4481 .set_default(10)
4482 .set_description(""),
4483
4484 Option("rgw_zone", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4485 .set_default("")
4486 .set_description(""),
4487
4488 Option("rgw_zone_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4489 .set_default(".rgw.root")
4490 .set_description(""),
4491
4492 Option("rgw_default_zone_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4493 .set_default("default.zone")
4494 .set_description(""),
4495
4496 Option("rgw_region", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4497 .set_default("")
4498 .set_description(""),
4499
4500 Option("rgw_region_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4501 .set_default(".rgw.root")
4502 .set_description(""),
4503
4504 Option("rgw_default_region_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4505 .set_default("default.region")
4506 .set_description(""),
4507
4508 Option("rgw_zonegroup", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4509 .set_default("")
4510 .set_description(""),
4511
4512 Option("rgw_zonegroup_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4513 .set_default(".rgw.root")
4514 .set_description(""),
4515
4516 Option("rgw_default_zonegroup_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4517 .set_default("default.zonegroup")
4518 .set_description(""),
4519
4520 Option("rgw_realm", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4521 .set_default("")
4522 .set_description(""),
4523
4524 Option("rgw_realm_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4525 .set_default(".rgw.root")
4526 .set_description(""),
4527
4528 Option("rgw_default_realm_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4529 .set_default("default.realm")
4530 .set_description(""),
4531
4532 Option("rgw_period_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4533 .set_default(".rgw.root")
4534 .set_description(""),
4535
4536 Option("rgw_period_latest_epoch_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4537 .set_default(".latest_epoch")
4538 .set_description(""),
4539
4540 Option("rgw_log_nonexistent_bucket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4541 .set_default(false)
4542 .set_description(""),
4543
4544 Option("rgw_log_object_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4545 .set_default("%Y-%m-%d-%H-%i-%n")
4546 .set_description(""),
4547
4548 Option("rgw_log_object_name_utc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4549 .set_default(false)
4550 .set_description(""),
4551
4552 Option("rgw_usage_max_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4553 .set_default(32)
4554 .set_description(""),
4555
4556 Option("rgw_usage_max_user_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4557 .set_default(1)
4558 .set_min(1)
4559 .set_description(""),
c07f9fc5 4560
d2e6a577
FG
4561 Option("rgw_enable_ops_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4562 .set_default(false)
4563 .set_description(""),
c07f9fc5 4564
d2e6a577
FG
4565 Option("rgw_enable_usage_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4566 .set_default(false)
4567 .set_description(""),
c07f9fc5 4568
d2e6a577
FG
4569 Option("rgw_ops_log_rados", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4570 .set_default(true)
4571 .set_description(""),
c07f9fc5 4572
d2e6a577
FG
4573 Option("rgw_ops_log_socket_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4574 .set_default("")
4575 .set_description(""),
c07f9fc5 4576
d2e6a577
FG
4577 Option("rgw_ops_log_data_backlog", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4578 .set_default(5 << 20)
4579 .set_description(""),
c07f9fc5 4580
d2e6a577
FG
4581 Option("rgw_fcgi_socket_backlog", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4582 .set_default(1024)
4583 .set_description(""),
c07f9fc5 4584
d2e6a577
FG
4585 Option("rgw_usage_log_flush_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4586 .set_default(1024)
4587 .set_description(""),
c07f9fc5 4588
d2e6a577
FG
4589 Option("rgw_usage_log_tick_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4590 .set_default(30)
4591 .set_description(""),
c07f9fc5 4592
d2e6a577
FG
4593 Option("rgw_intent_log_object_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4594 .set_default("%Y-%m-%d-%i-%n")
4595 .set_description(""),
c07f9fc5 4596
d2e6a577
FG
4597 Option("rgw_intent_log_object_name_utc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4598 .set_default(false)
4599 .set_description(""),
c07f9fc5 4600
d2e6a577
FG
4601 Option("rgw_init_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4602 .set_default(300)
4603 .set_description(""),
c07f9fc5 4604
d2e6a577
FG
4605 Option("rgw_mime_types_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4606 .set_default("/etc/mime.types")
4607 .set_description(""),
c07f9fc5 4608
d2e6a577
FG
4609 Option("rgw_gc_max_objs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4610 .set_default(32)
4611 .set_description(""),
c07f9fc5 4612
d2e6a577
FG
4613 Option("rgw_gc_obj_min_wait", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4614 .set_default(2 * 3600)
4615 .set_description(""),
c07f9fc5 4616
d2e6a577
FG
4617 Option("rgw_gc_processor_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4618 .set_default(3600)
4619 .set_description(""),
c07f9fc5 4620
d2e6a577
FG
4621 Option("rgw_gc_processor_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4622 .set_default(3600)
4623 .set_description(""),
c07f9fc5 4624
d2e6a577
FG
4625 Option("rgw_s3_success_create_obj_status", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4626 .set_default(0)
4627 .set_description(""),
c07f9fc5 4628
d2e6a577
FG
4629 Option("rgw_resolve_cname", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4630 .set_default(false)
4631 .set_description(""),
c07f9fc5 4632
d2e6a577
FG
4633 Option("rgw_obj_stripe_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4634 .set_default(4 << 20)
4635 .set_description(""),
c07f9fc5 4636
d2e6a577
FG
4637 Option("rgw_extended_http_attrs", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4638 .set_default("")
4639 .set_description(""),
c07f9fc5 4640
d2e6a577
FG
4641 Option("rgw_exit_timeout_secs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4642 .set_default(120)
4643 .set_description(""),
c07f9fc5 4644
d2e6a577
FG
4645 Option("rgw_get_obj_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4646 .set_default(16 << 20)
4647 .set_description(""),
c07f9fc5 4648
d2e6a577
FG
4649 Option("rgw_get_obj_max_req_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4650 .set_default(4 << 20)
4651 .set_description(""),
c07f9fc5 4652
d2e6a577
FG
4653 Option("rgw_relaxed_s3_bucket_names", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4654 .set_default(false)
4655 .set_description(""),
c07f9fc5 4656
d2e6a577
FG
4657 Option("rgw_defer_to_bucket_acls", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4658 .set_default("")
4659 .set_description(""),
c07f9fc5 4660
d2e6a577
FG
4661 Option("rgw_list_buckets_max_chunk", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4662 .set_default(1000)
4663 .set_description(""),
c07f9fc5 4664
d2e6a577
FG
4665 Option("rgw_md_log_max_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4666 .set_default(64)
4667 .set_description(""),
c07f9fc5 4668
d2e6a577
FG
4669 Option("rgw_num_zone_opstate_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4670 .set_default(128)
4671 .set_description(""),
c07f9fc5 4672
d2e6a577
FG
4673 Option("rgw_opstate_ratelimit_sec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4674 .set_default(30)
4675 .set_description(""),
c07f9fc5 4676
d2e6a577
FG
4677 Option("rgw_curl_wait_timeout_ms", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4678 .set_default(1000)
4679 .set_description(""),
c07f9fc5 4680
d2e6a577
FG
4681 Option("rgw_copy_obj_progress", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4682 .set_default(true)
4683 .set_description(""),
c07f9fc5 4684
d2e6a577
FG
4685 Option("rgw_copy_obj_progress_every_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4686 .set_default(1024 * 1024)
4687 .set_description(""),
c07f9fc5 4688
d2e6a577
FG
4689 Option("rgw_obj_tombstone_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4690 .set_default(1000)
4691 .set_description(""),
c07f9fc5 4692
d2e6a577
FG
4693 Option("rgw_data_log_window", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4694 .set_default(30)
4695 .set_description(""),
c07f9fc5 4696
d2e6a577
FG
4697 Option("rgw_data_log_changes_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4698 .set_default(1000)
4699 .set_description(""),
c07f9fc5 4700
d2e6a577
FG
4701 Option("rgw_data_log_num_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4702 .set_default(128)
4703 .set_description(""),
c07f9fc5 4704
d2e6a577
FG
4705 Option("rgw_data_log_obj_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4706 .set_default("data_log")
4707 .set_description(""),
c07f9fc5 4708
d2e6a577
FG
4709 Option("rgw_replica_log_obj_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4710 .set_default("replica_log")
4711 .set_description(""),
c07f9fc5 4712
d2e6a577
FG
4713 Option("rgw_bucket_quota_ttl", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4714 .set_default(600)
4715 .set_description(""),
c07f9fc5 4716
d2e6a577
FG
4717 Option("rgw_bucket_quota_soft_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4718 .set_default(0.95)
4719 .set_description(""),
c07f9fc5 4720
d2e6a577
FG
4721 Option("rgw_bucket_quota_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4722 .set_default(10000)
4723 .set_description(""),
c07f9fc5 4724
d2e6a577
FG
4725 Option("rgw_bucket_default_quota_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4726 .set_default(-1)
4727 .set_description(""),
c07f9fc5 4728
d2e6a577
FG
4729 Option("rgw_bucket_default_quota_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4730 .set_default(-1)
4731 .set_description(""),
c07f9fc5 4732
d2e6a577
FG
4733 Option("rgw_expose_bucket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4734 .set_default(false)
4735 .set_description(""),
c07f9fc5 4736
d2e6a577
FG
4737 Option("rgw_frontends", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4738 .set_default("civetweb port=7480")
4739 .set_description(""),
c07f9fc5 4740
d2e6a577
FG
4741 Option("rgw_user_quota_bucket_sync_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4742 .set_default(180)
4743 .set_description(""),
c07f9fc5 4744
d2e6a577
FG
4745 Option("rgw_user_quota_sync_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4746 .set_default(3600 * 24)
4747 .set_description(""),
c07f9fc5 4748
d2e6a577
FG
4749 Option("rgw_user_quota_sync_idle_users", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4750 .set_default(false)
4751 .set_description(""),
c07f9fc5 4752
d2e6a577
FG
4753 Option("rgw_user_quota_sync_wait_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4754 .set_default(3600 * 24)
4755 .set_description(""),
c07f9fc5 4756
d2e6a577
FG
4757 Option("rgw_user_default_quota_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4758 .set_default(-1)
4759 .set_description(""),
c07f9fc5 4760
d2e6a577
FG
4761 Option("rgw_user_default_quota_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4762 .set_default(-1)
4763 .set_description(""),
c07f9fc5 4764
d2e6a577
FG
4765 Option("rgw_multipart_min_part_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4766 .set_default(5 * 1024 * 1024)
4767 .set_description(""),
c07f9fc5 4768
d2e6a577
FG
4769 Option("rgw_multipart_part_upload_limit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4770 .set_default(10000)
4771 .set_description(""),
c07f9fc5 4772
d2e6a577
FG
4773 Option("rgw_max_slo_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4774 .set_default(1000)
4775 .set_description(""),
c07f9fc5 4776
d2e6a577
FG
4777 Option("rgw_olh_pending_timeout_sec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4778 .set_default(3600)
4779 .set_description(""),
c07f9fc5 4780
d2e6a577
FG
4781 Option("rgw_user_max_buckets", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4782 .set_default(1000)
4783 .set_description(""),
c07f9fc5 4784
d2e6a577
FG
4785 Option("rgw_objexp_gc_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4786 .set_default(60 * 10)
4787 .set_description(""),
c07f9fc5 4788
d2e6a577
FG
4789 Option("rgw_objexp_time_step", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4790 .set_default(4096)
4791 .set_description(""),
c07f9fc5 4792
d2e6a577
FG
4793 Option("rgw_objexp_hints_num_shards", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4794 .set_default(127)
4795 .set_description(""),
c07f9fc5 4796
d2e6a577
FG
4797 Option("rgw_objexp_chunk_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4798 .set_default(100)
4799 .set_description(""),
c07f9fc5 4800
d2e6a577
FG
4801 Option("rgw_enable_static_website", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4802 .set_default(false)
4803 .set_description(""),
c07f9fc5 4804
d2e6a577
FG
4805 Option("rgw_log_http_headers", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4806 .set_default("")
4807 .set_description(""),
c07f9fc5 4808
d2e6a577
FG
4809 Option("rgw_num_async_rados_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4810 .set_default(32)
4811 .set_description(""),
c07f9fc5 4812
d2e6a577
FG
4813 Option("rgw_md_notify_interval_msec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4814 .set_default(200)
4815 .set_description(""),
c07f9fc5 4816
d2e6a577
FG
4817 Option("rgw_run_sync_thread", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4818 .set_default(true)
4819 .set_description(""),
c07f9fc5 4820
d2e6a577
FG
4821 Option("rgw_sync_lease_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4822 .set_default(120)
4823 .set_description(""),
c07f9fc5 4824
d2e6a577
FG
4825 Option("rgw_sync_log_trim_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4826 .set_default(1200)
4827 .set_description(""),
c07f9fc5 4828
d2e6a577
FG
4829 Option("rgw_sync_data_inject_err_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
4830 .set_default(0)
4831 .set_description(""),
c07f9fc5 4832
d2e6a577
FG
4833 Option("rgw_sync_meta_inject_err_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
4834 .set_default(0)
4835 .set_description(""),
c07f9fc5 4836
d2e6a577
FG
4837 Option("rgw_period_push_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4838 .set_default(2)
4839 .set_description(""),
c07f9fc5 4840
d2e6a577
FG
4841 Option("rgw_period_push_interval_max", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4842 .set_default(30)
4843 .set_description(""),
c07f9fc5 4844
d2e6a577
FG
4845 Option("rgw_safe_max_objects_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4846 .set_default(100*1024)
4847 .set_description(""),
c07f9fc5 4848
d2e6a577
FG
4849 Option("rgw_shard_warning_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4850 .set_default(90)
4851 .set_description(""),
c07f9fc5 4852
d2e6a577
FG
4853 Option("rgw_swift_versioning_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4854 .set_default(false)
4855 .set_description(""),
c07f9fc5 4856
d2e6a577
FG
4857 Option("rgw_swift_custom_header", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4858 .set_default("")
4859 .set_description(""),
c07f9fc5 4860
d2e6a577
FG
4861 Option("rgw_swift_need_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4862 .set_default(true)
4863 .set_description(""),
c07f9fc5 4864
d2e6a577
FG
4865 Option("rgw_reshard_num_logs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4866 .set_default(16)
4867 .set_description(""),
c07f9fc5 4868
d2e6a577
FG
4869 Option("rgw_reshard_bucket_lock_duration", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4870 .set_default(120)
4871 .set_description(""),
c07f9fc5 4872
d2e6a577
FG
4873 Option("rgw_crypt_require_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4874 .set_default(true)
4875 .set_description(""),
c07f9fc5 4876
d2e6a577
FG
4877 Option("rgw_crypt_default_encryption_key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4878 .set_default("")
4879 .set_description(""),
4880
4881 Option("rgw_crypt_s3_kms_encryption_keys", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4882 .set_default("")
4883 .set_description(""),
4884
4885 Option("rgw_crypt_suppress_logs", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4886 .set_default(true)
4887 .set_description(""),
4888
4889 Option("rgw_list_bucket_min_readahead", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4890 .set_default(1000)
4891 .set_description(""),
c07f9fc5 4892
d2e6a577
FG
4893 Option("rgw_rest_getusage_op_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4894 .set_default(false)
4895 .set_description(""),
c07f9fc5 4896
d2e6a577
FG
4897 Option("rgw_torrent_flag", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4898 .set_default(false)
4899 .set_description(""),
c07f9fc5 4900
d2e6a577
FG
4901 Option("rgw_torrent_tracker", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4902 .set_default("")
4903 .set_description(""),
c07f9fc5 4904
d2e6a577
FG
4905 Option("rgw_torrent_createby", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4906 .set_default("")
4907 .set_description(""),
c07f9fc5 4908
d2e6a577
FG
4909 Option("rgw_torrent_comment", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4910 .set_default("")
4911 .set_description(""),
c07f9fc5 4912
d2e6a577
FG
4913 Option("rgw_torrent_encoding", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4914 .set_default("")
4915 .set_description(""),
c07f9fc5 4916
d2e6a577
FG
4917 Option("rgw_data_notify_interval_msec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4918 .set_default(200)
4919 .set_description("data changes notification interval to followers"),
c07f9fc5 4920
d2e6a577
FG
4921 Option("rgw_torrent_origin", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4922 .set_default("")
4923 .set_description(""),
c07f9fc5 4924
d2e6a577
FG
4925 Option("rgw_torrent_sha_unit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4926 .set_default(512*1024)
4927 .set_description(""),
c07f9fc5 4928
d2e6a577
FG
4929 Option("rgw_dynamic_resharding", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4930 .set_default(false)
4931 .set_description(""),
c07f9fc5 4932
d2e6a577
FG
4933 Option("rgw_max_objs_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4934 .set_default(100000)
4935 .set_description(""),
c07f9fc5 4936
d2e6a577
FG
4937 Option("rgw_reshard_thread_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4938 .set_default(60 * 10)
4939 .set_description(""),
4940 });
4941}
c07f9fc5 4942
d2e6a577
FG
4943static std::vector<Option> get_rbd_options() {
4944 return std::vector<Option>({
4945 Option("rbd_default_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4946 .set_default("rbd")
4947 .set_description("")
4948 .set_validator([](std::string *value, std::string *error_message){
4949 boost::regex pattern("^[^@/]+$");
4950 if (!boost::regex_match (*value, pattern)) {
4951 *value = "rbd";
4952 *error_message = "invalid RBD default pool, resetting to 'rbd'";
4953 }
4954 return 0;
4955 }),
4956
4957 Option("rbd_default_data_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4958 .set_default("")
4959 .set_description("")
4960 .set_validator([](std::string *value, std::string *error_message){
4961 boost::regex pattern("^[^@/]*$");
4962 if (!boost::regex_match (*value, pattern)) {
4963 *value = "";
4964 *error_message = "ignoring invalid RBD data pool";
4965 }
4966 return 0;
4967 }),
4968
4969 Option("rbd_default_features", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4970 .set_default("layering,exclusive-lock,object-map,fast-diff,deep-flatten")
4971 .set_description("")
4972 .set_safe()
4973 .set_validator([](std::string *value, std::string *error_message){
4974 static const std::map<std::string, uint64_t> FEATURE_MAP = {
4975 {RBD_FEATURE_NAME_LAYERING, RBD_FEATURE_LAYERING},
4976 {RBD_FEATURE_NAME_STRIPINGV2, RBD_FEATURE_STRIPINGV2},
4977 {RBD_FEATURE_NAME_EXCLUSIVE_LOCK, RBD_FEATURE_EXCLUSIVE_LOCK},
4978 {RBD_FEATURE_NAME_OBJECT_MAP, RBD_FEATURE_OBJECT_MAP},
4979 {RBD_FEATURE_NAME_FAST_DIFF, RBD_FEATURE_FAST_DIFF},
4980 {RBD_FEATURE_NAME_DEEP_FLATTEN, RBD_FEATURE_DEEP_FLATTEN},
4981 {RBD_FEATURE_NAME_JOURNALING, RBD_FEATURE_JOURNALING},
4982 {RBD_FEATURE_NAME_DATA_POOL, RBD_FEATURE_DATA_POOL},
4983 };
4984 static_assert((RBD_FEATURE_DATA_POOL << 1) > RBD_FEATURES_ALL,
4985 "new RBD feature added");
4986
4987 // convert user-friendly comma delimited feature name list to a bitmask
4988 // that is used by the librbd API
4989 uint64_t features = 0;
4990 error_message->clear();
4991
4992 try {
4993 features = boost::lexical_cast<decltype(features)>(*value);
4994
4995 uint64_t unsupported_features = (features & ~RBD_FEATURES_ALL);
4996 if (unsupported_features != 0ull) {
4997 features &= RBD_FEATURES_ALL;
4998
4999 std::stringstream ss;
5000 ss << "ignoring unknown feature mask 0x"
5001 << std::hex << unsupported_features;
5002 *error_message = ss.str();
5003 }
5004 } catch (const boost::bad_lexical_cast& ) {
5005 int r = 0;
5006 std::vector<std::string> feature_names;
5007 boost::split(feature_names, *value, boost::is_any_of(","));
5008 for (auto feature_name: feature_names) {
5009 boost::trim(feature_name);
5010 auto feature_it = FEATURE_MAP.find(feature_name);
5011 if (feature_it != FEATURE_MAP.end()) {
5012 features += feature_it->second;
5013 } else {
5014 if (!error_message->empty()) {
5015 *error_message += ", ";
5016 }
5017 *error_message += "ignoring unknown feature " + feature_name;
5018 r = -EINVAL;
5019 }
5020 }
c07f9fc5 5021
d2e6a577
FG
5022 if (features == 0 && r == -EINVAL) {
5023 features = RBD_FEATURES_DEFAULT;
5024 }
5025 }
5026 *value = stringify(features);
5027 return 0;
5028 }),
5029
5030 Option("rbd_op_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5031 .set_default(1)
5032 .set_description(""),
5033
5034 Option("rbd_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5035 .set_default(60)
5036 .set_description(""),
5037
5038 Option("rbd_non_blocking_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5039 .set_default(true)
5040 .set_description(""),
5041
5042 Option("rbd_cache", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5043 .set_default(true)
5044 .set_description(""),
5045
5046 Option("rbd_cache_writethrough_until_flush", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5047 .set_default(true)
5048 .set_description(""),
5049
5050 Option("rbd_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5051 .set_default(32<<20)
5052 .set_description(""),
5053
5054 Option("rbd_cache_max_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5055 .set_default(24<<20)
5056 .set_description(""),
5057
5058 Option("rbd_cache_target_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5059 .set_default(16<<20)
5060 .set_description(""),
5061
5062 Option("rbd_cache_max_dirty_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5063 .set_default(1.0)
5064 .set_description(""),
5065
5066 Option("rbd_cache_max_dirty_object", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5067 .set_default(0)
5068 .set_description(""),
5069
5070 Option("rbd_cache_block_writes_upfront", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5071 .set_default(false)
5072 .set_description(""),
5073
5074 Option("rbd_concurrent_management_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5075 .set_default(10)
5076 .set_min(1)
5077 .set_description(""),
c07f9fc5 5078
d2e6a577
FG
5079 Option("rbd_balance_snap_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5080 .set_default(false)
5081 .set_description(""),
c07f9fc5 5082
d2e6a577
FG
5083 Option("rbd_localize_snap_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5084 .set_default(false)
5085 .set_description(""),
c07f9fc5 5086
d2e6a577
FG
5087 Option("rbd_balance_parent_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5088 .set_default(false)
5089 .set_description(""),
c07f9fc5 5090
d2e6a577
FG
5091 Option("rbd_localize_parent_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5092 .set_default(false)
5093 .set_description(""),
c07f9fc5 5094
d2e6a577
FG
5095 Option("rbd_readahead_trigger_requests", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5096 .set_default(10)
5097 .set_description(""),
c07f9fc5 5098
d2e6a577
FG
5099 Option("rbd_readahead_max_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5100 .set_default(512 * 1024)
5101 .set_description(""),
c07f9fc5 5102
d2e6a577
FG
5103 Option("rbd_readahead_disable_after_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5104 .set_default(50 * 1024 * 1024)
5105 .set_description(""),
c07f9fc5 5106
d2e6a577
FG
5107 Option("rbd_clone_copy_on_read", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5108 .set_default(false)
5109 .set_description(""),
c07f9fc5 5110
d2e6a577
FG
5111 Option("rbd_blacklist_on_break_lock", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5112 .set_default(true)
5113 .set_description(""),
c07f9fc5 5114
d2e6a577
FG
5115 Option("rbd_blacklist_expire_seconds", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5116 .set_default(0)
5117 .set_description(""),
c07f9fc5 5118
d2e6a577
FG
5119 Option("rbd_request_timed_out_seconds", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5120 .set_default(30)
5121 .set_description(""),
c07f9fc5 5122
d2e6a577
FG
5123 Option("rbd_skip_partial_discard", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5124 .set_default(false)
5125 .set_description(""),
c07f9fc5 5126
d2e6a577
FG
5127 Option("rbd_enable_alloc_hint", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5128 .set_default(true)
5129 .set_description(""),
c07f9fc5 5130
d2e6a577
FG
5131 Option("rbd_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5132 .set_default(false)
5133 .set_description(""),
c07f9fc5 5134
d2e6a577
FG
5135 Option("rbd_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5136 .set_default(false)
5137 .set_description(""),
c07f9fc5 5138
d2e6a577
FG
5139 Option("rbd_validate_pool", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5140 .set_default(true)
5141 .set_description(""),
c07f9fc5 5142
d2e6a577
FG
5143 Option("rbd_validate_names", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5144 .set_default(true)
5145 .set_description(""),
5146
5147 Option("rbd_auto_exclusive_lock_until_manual_request", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5148 .set_default(true)
5149 .set_description(""),
5150
5151 Option("rbd_mirroring_resync_after_disconnect", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5152 .set_default(false)
5153 .set_description(""),
5154
5155 Option("rbd_mirroring_replay_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5156 .set_default(0)
5157 .set_description(""),
5158
5159 Option("rbd_default_format", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5160 .set_default(2)
5161 .set_description(""),
5162
5163 Option("rbd_default_order", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5164 .set_default(22)
5165 .set_description(""),
5166
5167 Option("rbd_default_stripe_count", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5168 .set_default(0)
5169 .set_description(""),
5170
5171 Option("rbd_default_stripe_unit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5172 .set_default(0)
5173 .set_description(""),
5174
5175 Option("rbd_default_map_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5176 .set_default("")
5177 .set_description(""),
c07f9fc5 5178
d2e6a577
FG
5179 Option("rbd_journal_order", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5180 .set_default(24)
5181 .set_description(""),
c07f9fc5 5182
d2e6a577
FG
5183 Option("rbd_journal_splay_width", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5184 .set_default(4)
5185 .set_description(""),
c07f9fc5 5186
d2e6a577
FG
5187 Option("rbd_journal_commit_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5188 .set_default(5)
5189 .set_description(""),
c07f9fc5 5190
d2e6a577
FG
5191 Option("rbd_journal_object_flush_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5192 .set_default(0)
5193 .set_description(""),
c07f9fc5 5194
d2e6a577
FG
5195 Option("rbd_journal_object_flush_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5196 .set_default(0)
5197 .set_description(""),
c07f9fc5 5198
d2e6a577
FG
5199 Option("rbd_journal_object_flush_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5200 .set_default(0)
5201 .set_description(""),
c07f9fc5 5202
d2e6a577
FG
5203 Option("rbd_journal_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5204 .set_default("")
5205 .set_description(""),
c07f9fc5 5206
d2e6a577
FG
5207 Option("rbd_journal_max_payload_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5208 .set_default(16384)
5209 .set_description(""),
c07f9fc5 5210
d2e6a577
FG
5211 Option("rbd_journal_max_concurrent_object_sets", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5212 .set_default(0)
5213 .set_description(""),
c07f9fc5 5214
d2e6a577
FG
5215 Option("rbd_mirror_journal_commit_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5216 .set_default(5)
5217 .set_description(""),
c07f9fc5 5218
d2e6a577
FG
5219 Option("rbd_mirror_journal_poll_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5220 .set_default(5)
5221 .set_description(""),
c07f9fc5 5222
d2e6a577
FG
5223 Option("rbd_mirror_journal_max_fetch_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5224 .set_default(32768)
5225 .set_description(""),
c07f9fc5 5226
d2e6a577
FG
5227 Option("rbd_mirror_sync_point_update_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5228 .set_default(30)
5229 .set_description(""),
c07f9fc5 5230
d2e6a577
FG
5231 Option("rbd_mirror_concurrent_image_syncs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5232 .set_default(5)
5233 .set_description(""),
c07f9fc5 5234
d2e6a577
FG
5235 Option("rbd_mirror_pool_replayers_refresh_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5236 .set_default(30)
5237 .set_description(""),
c07f9fc5 5238
d2e6a577
FG
5239 Option("rbd_mirror_delete_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5240 .set_default(30)
5241 .set_description(""),
c07f9fc5 5242
d2e6a577
FG
5243 Option("rbd_mirror_image_state_check_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5244 .set_default(30)
5245 .set_min(1)
5246 .set_description(""),
5247
5248 Option("rbd_mirror_leader_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5249 .set_default(5)
5250 .set_min(1)
5251 .set_description(""),
5252
5253 Option("rbd_mirror_leader_max_missed_heartbeats", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5254 .set_default(2)
5255 .set_description(""),
5256
5257 Option("rbd_mirror_leader_max_acquire_attempts_before_break", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5258 .set_default(3)
5259 .set_description(""),
5260 });
5261}
5262
5263std::vector<Option> get_mds_options() {
5264 return std::vector<Option>({
5265 Option("mds_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5266 .set_default("/var/lib/ceph/mds/$cluster-$id")
5267 .set_description(""),
c07f9fc5 5268
d2e6a577
FG
5269 Option("mds_max_file_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5270 .set_default(1ULL << 40)
5271 .set_description(""),
c07f9fc5 5272
d2e6a577
FG
5273 Option("mds_max_xattr_pairs_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5274 .set_default(64 << 10)
5275 .set_description(""),
c07f9fc5 5276
d2e6a577
FG
5277 Option("mds_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5278 .set_default(100000)
5279 .set_description(""),
c07f9fc5 5280
d2e6a577
FG
5281 Option("mds_cache_mid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5282 .set_default(.7)
5283 .set_description(""),
c07f9fc5 5284
d2e6a577
FG
5285 Option("mds_max_file_recover", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5286 .set_default(32)
5287 .set_description(""),
c07f9fc5 5288
d2e6a577
FG
5289 Option("mds_dir_max_commit_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5290 .set_default(10)
5291 .set_description(""),
c07f9fc5 5292
d2e6a577
FG
5293 Option("mds_dir_keys_per_op", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5294 .set_default(16384)
5295 .set_description(""),
c07f9fc5 5296
d2e6a577
FG
5297 Option("mds_decay_halflife", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5298 .set_default(5)
5299 .set_description(""),
c07f9fc5 5300
d2e6a577
FG
5301 Option("mds_beacon_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5302 .set_default(4)
5303 .set_description(""),
c07f9fc5 5304
d2e6a577
FG
5305 Option("mds_beacon_grace", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5306 .set_default(15)
5307 .set_description(""),
c07f9fc5 5308
d2e6a577
FG
5309 Option("mds_enforce_unique_name", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5310 .set_default(true)
5311 .set_description(""),
c07f9fc5 5312
d2e6a577
FG
5313 Option("mds_blacklist_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5314 .set_default(24.0*60.0)
5315 .set_description(""),
c07f9fc5 5316
d2e6a577
FG
5317 Option("mds_session_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5318 .set_default(60)
5319 .set_description(""),
c07f9fc5 5320
d2e6a577
FG
5321 Option("mds_session_blacklist_on_timeout", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5322 .set_default(true)
5323 .set_description(""),
c07f9fc5 5324
d2e6a577
FG
5325 Option("mds_session_blacklist_on_evict", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5326 .set_default(true)
5327 .set_description(""),
c07f9fc5 5328
d2e6a577
FG
5329 Option("mds_sessionmap_keys_per_op", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5330 .set_default(1024)
5331 .set_description(""),
c07f9fc5 5332
d2e6a577
FG
5333 Option("mds_revoke_cap_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5334 .set_default(60)
5335 .set_description(""),
c07f9fc5 5336
d2e6a577
FG
5337 Option("mds_recall_state_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5338 .set_default(60)
5339 .set_description(""),
c07f9fc5 5340
d2e6a577
FG
5341 Option("mds_freeze_tree_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5342 .set_default(30)
5343 .set_description(""),
c07f9fc5 5344
d2e6a577
FG
5345 Option("mds_session_autoclose", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5346 .set_default(300)
5347 .set_description(""),
c07f9fc5 5348
d2e6a577
FG
5349 Option("mds_health_summarize_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5350 .set_default(10)
5351 .set_description(""),
c07f9fc5 5352
d2e6a577
FG
5353 Option("mds_health_cache_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5354 .set_default(1.5)
5355 .set_description(""),
c07f9fc5 5356
d2e6a577
FG
5357 Option("mds_reconnect_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5358 .set_default(45)
5359 .set_description(""),
c07f9fc5 5360
d2e6a577
FG
5361 Option("mds_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5362 .set_default(5)
5363 .set_description(""),
c07f9fc5 5364
d2e6a577
FG
5365 Option("mds_dirstat_min_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5366 .set_default(1)
5367 .set_description(""),
c07f9fc5 5368
d2e6a577
FG
5369 Option("mds_scatter_nudge_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5370 .set_default(5)
5371 .set_description(""),
c07f9fc5 5372
d2e6a577
FG
5373 Option("mds_client_prealloc_inos", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5374 .set_default(1000)
5375 .set_description(""),
c07f9fc5 5376
d2e6a577
FG
5377 Option("mds_early_reply", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5378 .set_default(true)
5379 .set_description(""),
c07f9fc5 5380
d2e6a577
FG
5381 Option("mds_default_dir_hash", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5382 .set_default(CEPH_STR_HASH_RJENKINS)
5383 .set_description(""),
c07f9fc5 5384
d2e6a577
FG
5385 Option("mds_log_pause", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5386 .set_default(false)
5387 .set_description(""),
c07f9fc5 5388
d2e6a577
FG
5389 Option("mds_log_skip_corrupt_events", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5390 .set_default(false)
5391 .set_description(""),
c07f9fc5 5392
d2e6a577
FG
5393 Option("mds_log_max_events", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5394 .set_default(-1)
5395 .set_description(""),
c07f9fc5 5396
d2e6a577
FG
5397 Option("mds_log_events_per_segment", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5398 .set_default(1024)
5399 .set_description(""),
c07f9fc5 5400
d2e6a577
FG
5401 Option("mds_log_segment_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5402 .set_default(0)
5403 .set_description(""),
c07f9fc5 5404
d2e6a577
FG
5405 Option("mds_log_max_segments", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5406 .set_default(30)
5407 .set_description(""),
c07f9fc5 5408
d2e6a577
FG
5409 Option("mds_log_max_expiring", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5410 .set_default(20)
5411 .set_description(""),
c07f9fc5 5412
d2e6a577
FG
5413 Option("mds_bal_export_pin", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5414 .set_default(true)
5415 .set_description(""),
c07f9fc5 5416
d2e6a577
FG
5417 Option("mds_bal_sample_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5418 .set_default(3.0)
5419 .set_description(""),
c07f9fc5 5420
d2e6a577
FG
5421 Option("mds_bal_replicate_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5422 .set_default(8000)
5423 .set_description(""),
c07f9fc5 5424
d2e6a577
FG
5425 Option("mds_bal_unreplicate_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5426 .set_default(0)
5427 .set_description(""),
c07f9fc5 5428
d2e6a577
FG
5429 Option("mds_bal_frag", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5430 .set_default(true)
5431 .set_description(""),
c07f9fc5 5432
d2e6a577
FG
5433 Option("mds_bal_split_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5434 .set_default(10000)
5435 .set_description(""),
c07f9fc5 5436
d2e6a577
FG
5437 Option("mds_bal_split_rd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5438 .set_default(25000)
5439 .set_description(""),
c07f9fc5 5440
d2e6a577
FG
5441 Option("mds_bal_split_wr", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5442 .set_default(10000)
5443 .set_description(""),
c07f9fc5 5444
d2e6a577
FG
5445 Option("mds_bal_split_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5446 .set_default(3)
5447 .set_description(""),
c07f9fc5 5448
d2e6a577
FG
5449 Option("mds_bal_merge_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5450 .set_default(50)
5451 .set_description(""),
c07f9fc5 5452
d2e6a577
FG
5453 Option("mds_bal_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5454 .set_default(10)
5455 .set_description(""),
c07f9fc5 5456
d2e6a577
FG
5457 Option("mds_bal_fragment_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5458 .set_default(5)
5459 .set_description(""),
c07f9fc5 5460
d2e6a577
FG
5461 Option("mds_bal_fragment_size_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5462 .set_default(10000*10)
5463 .set_description(""),
c07f9fc5 5464
d2e6a577
FG
5465 Option("mds_bal_fragment_fast_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5466 .set_default(1.5)
5467 .set_description(""),
c07f9fc5 5468
d2e6a577
FG
5469 Option("mds_bal_idle_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5470 .set_default(0)
5471 .set_description(""),
c07f9fc5 5472
d2e6a577
FG
5473 Option("mds_bal_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5474 .set_default(-1)
5475 .set_description(""),
c07f9fc5 5476
d2e6a577
FG
5477 Option("mds_bal_max_until", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5478 .set_default(-1)
5479 .set_description(""),
c07f9fc5 5480
d2e6a577
FG
5481 Option("mds_bal_mode", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5482 .set_default(0)
5483 .set_description(""),
c07f9fc5 5484
d2e6a577
FG
5485 Option("mds_bal_min_rebalance", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5486 .set_default(.1)
5487 .set_description(""),
c07f9fc5 5488
d2e6a577
FG
5489 Option("mds_bal_min_start", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5490 .set_default(.2)
5491 .set_description(""),
c07f9fc5 5492
d2e6a577
FG
5493 Option("mds_bal_need_min", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5494 .set_default(.8)
5495 .set_description(""),
c07f9fc5 5496
d2e6a577
FG
5497 Option("mds_bal_need_max", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5498 .set_default(1.2)
5499 .set_description(""),
c07f9fc5 5500
d2e6a577
FG
5501 Option("mds_bal_midchunk", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5502 .set_default(.3)
5503 .set_description(""),
c07f9fc5 5504
d2e6a577
FG
5505 Option("mds_bal_minchunk", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5506 .set_default(.001)
5507 .set_description(""),
c07f9fc5 5508
d2e6a577
FG
5509 Option("mds_bal_target_decay", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5510 .set_default(10.0)
5511 .set_description(""),
c07f9fc5 5512
d2e6a577
FG
5513 Option("mds_replay_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5514 .set_default(1.0)
5515 .set_description(""),
c07f9fc5 5516
d2e6a577
FG
5517 Option("mds_shutdown_check", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5518 .set_default(0)
5519 .set_description(""),
c07f9fc5 5520
d2e6a577
FG
5521 Option("mds_thrash_exports", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5522 .set_default(0)
5523 .set_description(""),
c07f9fc5 5524
d2e6a577
FG
5525 Option("mds_thrash_fragments", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5526 .set_default(0)
5527 .set_description(""),
c07f9fc5 5528
d2e6a577
FG
5529 Option("mds_dump_cache_on_map", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5530 .set_default(false)
5531 .set_description(""),
c07f9fc5 5532
d2e6a577
FG
5533 Option("mds_dump_cache_after_rejoin", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5534 .set_default(false)
5535 .set_description(""),
c07f9fc5 5536
d2e6a577
FG
5537 Option("mds_verify_scatter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5538 .set_default(false)
5539 .set_description(""),
c07f9fc5 5540
d2e6a577
FG
5541 Option("mds_debug_scatterstat", Option::TYPE_BOOL, Option::LEVEL_DEV)
5542 .set_default(false)
5543 .set_description(""),
c07f9fc5 5544
d2e6a577
FG
5545 Option("mds_debug_frag", Option::TYPE_BOOL, Option::LEVEL_DEV)
5546 .set_default(false)
5547 .set_description(""),
c07f9fc5 5548
d2e6a577
FG
5549 Option("mds_debug_auth_pins", Option::TYPE_BOOL, Option::LEVEL_DEV)
5550 .set_default(false)
5551 .set_description(""),
c07f9fc5 5552
d2e6a577
FG
5553 Option("mds_debug_subtrees", Option::TYPE_BOOL, Option::LEVEL_DEV)
5554 .set_default(false)
5555 .set_description(""),
c07f9fc5 5556
d2e6a577
FG
5557 Option("mds_kill_mdstable_at", Option::TYPE_INT, Option::LEVEL_DEV)
5558 .set_default(0)
5559 .set_description(""),
c07f9fc5 5560
d2e6a577
FG
5561 Option("mds_kill_export_at", Option::TYPE_INT, Option::LEVEL_DEV)
5562 .set_default(0)
5563 .set_description(""),
c07f9fc5 5564
d2e6a577
FG
5565 Option("mds_kill_import_at", Option::TYPE_INT, Option::LEVEL_DEV)
5566 .set_default(0)
5567 .set_description(""),
c07f9fc5 5568
d2e6a577
FG
5569 Option("mds_kill_link_at", Option::TYPE_INT, Option::LEVEL_DEV)
5570 .set_default(0)
5571 .set_description(""),
c07f9fc5 5572
d2e6a577
FG
5573 Option("mds_kill_rename_at", Option::TYPE_INT, Option::LEVEL_DEV)
5574 .set_default(0)
5575 .set_description(""),
c07f9fc5 5576
d2e6a577
FG
5577 Option("mds_kill_openc_at", Option::TYPE_INT, Option::LEVEL_DEV)
5578 .set_default(0)
5579 .set_description(""),
c07f9fc5 5580
d2e6a577
FG
5581 Option("mds_kill_journal_at", Option::TYPE_INT, Option::LEVEL_DEV)
5582 .set_default(0)
5583 .set_description(""),
c07f9fc5 5584
d2e6a577
FG
5585 Option("mds_kill_journal_expire_at", Option::TYPE_INT, Option::LEVEL_DEV)
5586 .set_default(0)
5587 .set_description(""),
c07f9fc5 5588
d2e6a577
FG
5589 Option("mds_kill_journal_replay_at", Option::TYPE_INT, Option::LEVEL_DEV)
5590 .set_default(0)
5591 .set_description(""),
c07f9fc5 5592
d2e6a577
FG
5593 Option("mds_journal_format", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5594 .set_default(1)
5595 .set_description(""),
c07f9fc5 5596
d2e6a577
FG
5597 Option("mds_kill_create_at", Option::TYPE_INT, Option::LEVEL_DEV)
5598 .set_default(0)
5599 .set_description(""),
c07f9fc5 5600
d2e6a577
FG
5601 Option("mds_inject_traceless_reply_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
5602 .set_default(0)
5603 .set_description(""),
c07f9fc5 5604
d2e6a577
FG
5605 Option("mds_wipe_sessions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5606 .set_default(0)
5607 .set_description(""),
c07f9fc5 5608
d2e6a577
FG
5609 Option("mds_wipe_ino_prealloc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5610 .set_default(0)
5611 .set_description(""),
c07f9fc5 5612
d2e6a577
FG
5613 Option("mds_skip_ino", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5614 .set_default(0)
5615 .set_description(""),
c07f9fc5 5616
d2e6a577
FG
5617 Option("mds_standby_for_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5618 .set_default("")
5619 .set_description(""),
c07f9fc5 5620
d2e6a577
FG
5621 Option("mds_standby_for_rank", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5622 .set_default(-1)
5623 .set_description(""),
c07f9fc5 5624
d2e6a577
FG
5625 Option("mds_standby_for_fscid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5626 .set_default(-1)
5627 .set_description(""),
c07f9fc5 5628
d2e6a577
FG
5629 Option("mds_standby_replay", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5630 .set_default(false)
5631 .set_description(""),
c07f9fc5 5632
d2e6a577
FG
5633 Option("mds_enable_op_tracker", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5634 .set_default(true)
5635 .set_description(""),
c07f9fc5 5636
d2e6a577
FG
5637 Option("mds_op_history_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5638 .set_default(20)
5639 .set_description(""),
c07f9fc5 5640
d2e6a577
FG
5641 Option("mds_op_history_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5642 .set_default(600)
5643 .set_description(""),
c07f9fc5 5644
d2e6a577
FG
5645 Option("mds_op_complaint_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5646 .set_default(30)
5647 .set_description(""),
c07f9fc5 5648
d2e6a577
FG
5649 Option("mds_op_log_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5650 .set_default(5)
5651 .set_description(""),
c07f9fc5 5652
d2e6a577
FG
5653 Option("mds_snap_min_uid", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5654 .set_default(0)
5655 .set_description(""),
c07f9fc5 5656
d2e6a577
FG
5657 Option("mds_snap_max_uid", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5658 .set_default(4294967294)
5659 .set_description(""),
c07f9fc5 5660
d2e6a577
FG
5661 Option("mds_snap_rstat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5662 .set_default(false)
5663 .set_description(""),
c07f9fc5 5664
d2e6a577
FG
5665 Option("mds_verify_backtrace", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5666 .set_default(1)
5667 .set_description(""),
c07f9fc5 5668
d2e6a577
FG
5669 Option("mds_max_completed_flushes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5670 .set_default(100000)
5671 .set_description(""),
c07f9fc5 5672
d2e6a577
FG
5673 Option("mds_max_completed_requests", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5674 .set_default(100000)
5675 .set_description(""),
c07f9fc5 5676
d2e6a577
FG
5677 Option("mds_action_on_write_error", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5678 .set_default(1)
5679 .set_description(""),
c07f9fc5 5680
d2e6a577
FG
5681 Option("mds_mon_shutdown_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5682 .set_default(5)
5683 .set_description(""),
c07f9fc5 5684
d2e6a577
FG
5685 Option("mds_max_purge_files", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5686 .set_default(64)
5687 .set_description(""),
c07f9fc5 5688
d2e6a577
FG
5689 Option("mds_max_purge_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5690 .set_default(8192)
5691 .set_description(""),
c07f9fc5 5692
d2e6a577
FG
5693 Option("mds_max_purge_ops_per_pg", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5694 .set_default(0.5)
5695 .set_description(""),
c07f9fc5 5696
d2e6a577
FG
5697 Option("mds_purge_queue_busy_flush_period", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5698 .set_default(1.0)
5699 .set_description(""),
c07f9fc5 5700
d2e6a577
FG
5701 Option("mds_root_ino_uid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5702 .set_default(0)
5703 .set_description(""),
c07f9fc5 5704
d2e6a577
FG
5705 Option("mds_root_ino_gid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5706 .set_default(0)
5707 .set_description(""),
c07f9fc5 5708
d2e6a577
FG
5709 Option("mds_max_scrub_ops_in_progress", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5710 .set_default(5)
5711 .set_description(""),
c07f9fc5 5712
d2e6a577
FG
5713 Option("mds_damage_table_max_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5714 .set_default(10000)
5715 .set_description(""),
5716
5717 Option("mds_client_writeable_range_max_inc_objs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5718 .set_default(1024)
5719 .set_description(""),
5720 });
5721}
c07f9fc5 5722
d2e6a577
FG
5723std::vector<Option> get_mds_client_options() {
5724 return std::vector<Option>({
5725 Option("client_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5726 .set_default(16384)
5727 .set_description(""),
c07f9fc5 5728
d2e6a577
FG
5729 Option("client_cache_mid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5730 .set_default(.75)
5731 .set_description(""),
c07f9fc5 5732
d2e6a577
FG
5733 Option("client_use_random_mds", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5734 .set_default(false)
5735 .set_description(""),
c07f9fc5 5736
d2e6a577
FG
5737 Option("client_mount_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5738 .set_default(300.0)
5739 .set_description(""),
c07f9fc5 5740
d2e6a577
FG
5741 Option("client_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5742 .set_default(1.0)
5743 .set_description(""),
c07f9fc5 5744
d2e6a577
FG
5745 Option("client_trace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5746 .set_default("")
5747 .set_description(""),
c07f9fc5 5748
d2e6a577
FG
5749 Option("client_readahead_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5750 .set_default(128*1024)
5751 .set_description(""),
c07f9fc5 5752
d2e6a577
FG
5753 Option("client_readahead_max_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5754 .set_default(0)
5755 .set_description(""),
c07f9fc5 5756
d2e6a577
FG
5757 Option("client_readahead_max_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5758 .set_default(4)
5759 .set_description(""),
c07f9fc5 5760
d2e6a577
FG
5761 Option("client_reconnect_stale", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5762 .set_default(false)
5763 .set_description(""),
c07f9fc5 5764
d2e6a577
FG
5765 Option("client_snapdir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5766 .set_default(".snap")
5767 .set_description(""),
c07f9fc5 5768
d2e6a577
FG
5769 Option("client_mountpoint", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5770 .set_default("/")
5771 .set_description(""),
c07f9fc5 5772
d2e6a577
FG
5773 Option("client_mount_uid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5774 .set_default(-1)
5775 .set_description(""),
c07f9fc5 5776
d2e6a577
FG
5777 Option("client_mount_gid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5778 .set_default(-1)
5779 .set_description(""),
c07f9fc5 5780
d2e6a577
FG
5781 Option("client_notify_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5782 .set_default(10)
5783 .set_description(""),
c07f9fc5 5784
d2e6a577
FG
5785 Option("osd_client_watch_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5786 .set_default(30)
5787 .set_description(""),
c07f9fc5 5788
d2e6a577
FG
5789 Option("client_caps_release_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5790 .set_default(5)
5791 .set_description(""),
c07f9fc5 5792
d2e6a577
FG
5793 Option("client_quota_df", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5794 .set_default(true)
5795 .set_description(""),
c07f9fc5 5796
d2e6a577
FG
5797 Option("client_oc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5798 .set_default(true)
5799 .set_description(""),
c07f9fc5 5800
d2e6a577
FG
5801 Option("client_oc_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5802 .set_default(1024*1024* 200)
5803 .set_description(""),
c07f9fc5 5804
d2e6a577
FG
5805 Option("client_oc_max_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5806 .set_default(1024*1024* 100)
5807 .set_description(""),
c07f9fc5 5808
d2e6a577
FG
5809 Option("client_oc_target_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5810 .set_default(1024*1024* 8)
5811 .set_description(""),
c07f9fc5 5812
d2e6a577
FG
5813 Option("client_oc_max_dirty_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5814 .set_default(5.0)
5815 .set_description(""),
c07f9fc5 5816
d2e6a577
FG
5817 Option("client_oc_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5818 .set_default(1000)
5819 .set_description(""),
c07f9fc5 5820
d2e6a577
FG
5821 Option("client_debug_getattr_caps", Option::TYPE_BOOL, Option::LEVEL_DEV)
5822 .set_default(false)
5823 .set_description(""),
5824
5825 Option("client_debug_force_sync_read", Option::TYPE_BOOL, Option::LEVEL_DEV)
5826 .set_default(false)
5827 .set_description(""),
c07f9fc5 5828
d2e6a577
FG
5829 Option("client_debug_inject_tick_delay", Option::TYPE_INT, Option::LEVEL_DEV)
5830 .set_default(0)
5831 .set_description(""),
c07f9fc5 5832
d2e6a577
FG
5833 Option("client_max_inline_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5834 .set_default(4096)
5835 .set_description(""),
c07f9fc5 5836
d2e6a577
FG
5837 Option("client_inject_release_failure", Option::TYPE_BOOL, Option::LEVEL_DEV)
5838 .set_default(false)
5839 .set_description(""),
c07f9fc5 5840
d2e6a577
FG
5841 Option("client_inject_fixed_oldest_tid", Option::TYPE_BOOL, Option::LEVEL_DEV)
5842 .set_default(false)
5843 .set_description(""),
c07f9fc5 5844
d2e6a577
FG
5845 Option("client_metadata", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5846 .set_default("")
5847 .set_description(""),
c07f9fc5 5848
d2e6a577
FG
5849 Option("client_acl_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5850 .set_default("")
5851 .set_description(""),
c07f9fc5 5852
d2e6a577
FG
5853 Option("client_permissions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5854 .set_default(true)
5855 .set_description(""),
c07f9fc5 5856
d2e6a577
FG
5857 Option("client_dirsize_rbytes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5858 .set_default(true)
5859 .set_description(""),
c07f9fc5 5860
d2e6a577
FG
5861 Option("fuse_use_invalidate_cb", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5862 .set_default(true)
5863 .set_description(""),
c07f9fc5 5864
d2e6a577
FG
5865 Option("fuse_disable_pagecache", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5866 .set_default(false)
5867 .set_description(""),
c07f9fc5 5868
d2e6a577
FG
5869 Option("fuse_allow_other", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5870 .set_default(true)
5871 .set_description(""),
c07f9fc5 5872
d2e6a577
FG
5873 Option("fuse_default_permissions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5874 .set_default(false)
5875 .set_description(""),
c07f9fc5 5876
d2e6a577
FG
5877 Option("fuse_big_writes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5878 .set_default(true)
5879 .set_description(""),
c07f9fc5 5880
d2e6a577
FG
5881 Option("fuse_atomic_o_trunc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5882 .set_default(true)
5883 .set_description(""),
c07f9fc5 5884
d2e6a577
FG
5885 Option("fuse_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5886 .set_default(false)
5887 .set_description(""),
c07f9fc5 5888
d2e6a577
FG
5889 Option("fuse_multithreaded", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5890 .set_default(true)
5891 .set_description(""),
c07f9fc5 5892
d2e6a577
FG
5893 Option("fuse_require_active_mds", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5894 .set_default(true)
5895 .set_description(""),
c07f9fc5 5896
d2e6a577
FG
5897 Option("fuse_syncfs_on_mksnap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5898 .set_default(true)
5899 .set_description(""),
c07f9fc5 5900
d2e6a577
FG
5901 Option("fuse_set_user_groups", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5902 .set_default(false)
5903 .set_description(""),
c07f9fc5 5904
d2e6a577
FG
5905 Option("client_try_dentry_invalidate", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5906 .set_default(true)
5907 .set_description(""),
c07f9fc5 5908
d2e6a577
FG
5909 Option("client_die_on_failed_remount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5910 .set_default(true)
5911 .set_description(""),
c07f9fc5 5912
d2e6a577
FG
5913 Option("client_check_pool_perm", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5914 .set_default(true)
5915 .set_description(""),
5916
5917 Option("client_use_faked_inos", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5918 .set_default(false)
5919 .set_description(""),
5920
5921 Option("client_mds_namespace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5922 .set_default("")
5923 .set_description(""),
5924 });
5925}
c07f9fc5
FG
5926
5927
5928static std::vector<Option> build_options()
5929{
d2e6a577 5930 std::vector<Option> result = get_global_options();
c07f9fc5 5931
d2e6a577 5932 auto ingest = [&result](std::vector<Option>&& options, const char* svc) {
c07f9fc5
FG
5933 for (const auto &o_in : options) {
5934 Option o(o_in);
5935 o.add_service(svc);
5936 result.push_back(o);
5937 }
5938 };
5939
d2e6a577
FG
5940 ingest(get_rgw_options(), "rgw");
5941 ingest(get_rbd_options(), "rbd");
5942 ingest(get_mds_options(), "mds");
5943 ingest(get_mds_client_options(), "mds_client");
c07f9fc5
FG
5944
5945 return result;
5946}
5947
5948const std::vector<Option> ceph_options = build_options();