]> git.proxmox.com Git - ceph.git/blame - ceph/src/common/options.cc
update sources to v12.2.1
[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
181888fb
FG
1190 Option("mon_health_log_update_period", Option::TYPE_INT, Option::LEVEL_DEV)
1191 .set_default(5)
1192 .set_description("Minimum time in seconds between log messages about "
1193 "each health check")
1194 .set_min(0),
1195
d2e6a577
FG
1196 Option("mon_data_avail_crit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1197 .set_default(5)
1198 .set_description(""),
c07f9fc5 1199
d2e6a577
FG
1200 Option("mon_data_avail_warn", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1201 .set_default(30)
1202 .set_description(""),
c07f9fc5 1203
d2e6a577
FG
1204 Option("mon_data_size_warn", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1205 .set_default(15ull*1024*1024*1024)
1206 .set_description(""),
c07f9fc5 1207
d2e6a577
FG
1208 Option("mon_warn_not_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1209 .set_default(0)
1210 .set_description(""),
c07f9fc5 1211
d2e6a577
FG
1212 Option("mon_warn_not_deep_scrubbed", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1213 .set_default(0)
1214 .set_description(""),
c07f9fc5 1215
d2e6a577
FG
1216 Option("mon_scrub_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1217 .set_default(3600*24)
1218 .set_description(""),
c07f9fc5 1219
d2e6a577
FG
1220 Option("mon_scrub_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1221 .set_default(60*5)
1222 .set_description(""),
c07f9fc5 1223
d2e6a577
FG
1224 Option("mon_scrub_max_keys", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1225 .set_default(100)
1226 .set_description(""),
c07f9fc5 1227
d2e6a577
FG
1228 Option("mon_scrub_inject_crc_mismatch", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1229 .set_default(0.0)
1230 .set_description(""),
c07f9fc5 1231
d2e6a577
FG
1232 Option("mon_scrub_inject_missing_keys", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1233 .set_default(0.0)
1234 .set_description(""),
c07f9fc5 1235
d2e6a577
FG
1236 Option("mon_config_key_max_entry_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1237 .set_default(4096)
1238 .set_description(""),
c07f9fc5 1239
d2e6a577
FG
1240 Option("mon_sync_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1241 .set_default(60.0)
1242 .set_description(""),
c07f9fc5 1243
d2e6a577
FG
1244 Option("mon_sync_max_payload_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1245 .set_default(1048576)
1246 .set_description(""),
c07f9fc5 1247
d2e6a577
FG
1248 Option("mon_sync_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1249 .set_default(false)
1250 .set_description(""),
c07f9fc5 1251
d2e6a577
FG
1252 Option("mon_inject_sync_get_chunk_delay", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1253 .set_default(0)
1254 .set_description(""),
c07f9fc5 1255
d2e6a577
FG
1256 Option("mon_osd_min_down_reporters", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1257 .set_default(2)
1258 .set_description(""),
c07f9fc5 1259
d2e6a577
FG
1260 Option("mon_osd_reporter_subtree_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1261 .set_default("host")
1262 .set_description(""),
c07f9fc5 1263
d2e6a577
FG
1264 Option("mon_osd_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1265 .set_default(0)
1266 .set_description(""),
c07f9fc5 1267
d2e6a577
FG
1268 Option("mon_mds_force_trim_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1269 .set_default(0)
1270 .set_description(""),
c07f9fc5 1271
d2e6a577
FG
1272 Option("mon_mds_skip_sanity", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1273 .set_default(false)
1274 .set_description(""),
c07f9fc5 1275
d2e6a577
FG
1276 Option("mon_debug_deprecated_as_obsolete", Option::TYPE_BOOL, Option::LEVEL_DEV)
1277 .set_default(false)
1278 .set_description(""),
c07f9fc5 1279
d2e6a577
FG
1280 Option("mon_debug_dump_transactions", Option::TYPE_BOOL, Option::LEVEL_DEV)
1281 .set_default(false)
1282 .set_description(""),
c07f9fc5 1283
d2e6a577
FG
1284 Option("mon_debug_dump_json", Option::TYPE_BOOL, Option::LEVEL_DEV)
1285 .set_default(false)
1286 .set_description(""),
c07f9fc5 1287
d2e6a577
FG
1288 Option("mon_debug_dump_location", Option::TYPE_STR, Option::LEVEL_DEV)
1289 .set_default("/var/log/ceph/$cluster-$name.tdump")
1290 .set_description(""),
c07f9fc5 1291
d2e6a577
FG
1292 Option("mon_debug_no_require_luminous", Option::TYPE_BOOL, Option::LEVEL_DEV)
1293 .set_default(false)
1294 .set_description(""),
c07f9fc5 1295
d2e6a577
FG
1296 Option("mon_debug_no_require_bluestore_for_ec_overwrites", Option::TYPE_BOOL, Option::LEVEL_DEV)
1297 .set_default(false)
1298 .set_description(""),
c07f9fc5 1299
d2e6a577
FG
1300 Option("mon_debug_no_initial_persistent_features", Option::TYPE_BOOL, Option::LEVEL_DEV)
1301 .set_default(false)
1302 .set_description(""),
c07f9fc5 1303
d2e6a577
FG
1304 Option("mon_inject_transaction_delay_max", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1305 .set_default(10.0)
1306 .set_description(""),
c07f9fc5 1307
d2e6a577
FG
1308 Option("mon_inject_transaction_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1309 .set_default(0)
1310 .set_description(""),
c07f9fc5 1311
d2e6a577
FG
1312 Option("mon_sync_provider_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1313 .set_default(0)
1314 .set_description(""),
c07f9fc5 1315
d2e6a577
FG
1316 Option("mon_sync_requester_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1317 .set_default(0)
1318 .set_description(""),
c07f9fc5 1319
d2e6a577
FG
1320 Option("mon_force_quorum_join", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1321 .set_default(false)
1322 .set_description(""),
c07f9fc5 1323
d2e6a577
FG
1324 Option("mon_keyvaluedb", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1325 .set_default("rocksdb")
1326 .set_description(""),
c07f9fc5 1327
d2e6a577
FG
1328 Option("mon_debug_unsafe_allow_tier_with_nonempty_snaps", Option::TYPE_BOOL, Option::LEVEL_DEV)
1329 .set_default(false)
1330 .set_description(""),
c07f9fc5 1331
d2e6a577
FG
1332 Option("mon_osd_blacklist_default_expire", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1333 .set_default(60*60)
1334 .set_description(""),
c07f9fc5 1335
d2e6a577
FG
1336 Option("mon_osd_crush_smoke_test", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1337 .set_default(true)
1338 .set_description(""),
c07f9fc5 1339
d2e6a577
FG
1340 Option("paxos_stash_full_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1341 .set_default(25)
1342 .set_description(""),
c07f9fc5 1343
d2e6a577
FG
1344 Option("paxos_max_join_drift", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1345 .set_default(10)
1346 .set_description(""),
c07f9fc5 1347
d2e6a577
FG
1348 Option("paxos_propose_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1349 .set_default(1.0)
1350 .set_description(""),
c07f9fc5 1351
d2e6a577
FG
1352 Option("paxos_min_wait", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1353 .set_default(0.05)
1354 .set_description(""),
c07f9fc5 1355
d2e6a577
FG
1356 Option("paxos_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1357 .set_default(500)
1358 .set_description(""),
c07f9fc5 1359
d2e6a577
FG
1360 Option("paxos_trim_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1361 .set_default(250)
1362 .set_description(""),
c07f9fc5 1363
d2e6a577
FG
1364 Option("paxos_trim_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1365 .set_default(500)
1366 .set_description(""),
c07f9fc5 1367
d2e6a577
FG
1368 Option("paxos_service_trim_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1369 .set_default(250)
1370 .set_description(""),
c07f9fc5 1371
d2e6a577
FG
1372 Option("paxos_service_trim_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1373 .set_default(500)
1374 .set_description(""),
c07f9fc5 1375
d2e6a577
FG
1376 Option("paxos_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
1377 .set_default(0)
1378 .set_description(""),
c07f9fc5 1379
d2e6a577
FG
1380 Option("auth_cluster_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1381 .set_default("cephx")
1382 .set_description(""),
c07f9fc5 1383
d2e6a577
FG
1384 Option("auth_service_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1385 .set_default("cephx")
1386 .set_description(""),
c07f9fc5 1387
d2e6a577
FG
1388 Option("auth_client_required", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1389 .set_default("cephx, none")
1390 .set_description(""),
c07f9fc5 1391
d2e6a577
FG
1392 Option("auth_supported", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1393 .set_default("")
1394 .set_description(""),
c07f9fc5 1395
d2e6a577
FG
1396 Option("max_rotating_auth_attempts", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1397 .set_default(10)
1398 .set_description(""),
c07f9fc5 1399
d2e6a577
FG
1400 Option("cephx_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1401 .set_default(false)
1402 .set_description(""),
c07f9fc5 1403
d2e6a577
FG
1404 Option("cephx_cluster_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1405 .set_default(false)
1406 .set_description(""),
c07f9fc5 1407
d2e6a577
FG
1408 Option("cephx_service_require_signatures", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1409 .set_default(false)
1410 .set_description(""),
c07f9fc5 1411
d2e6a577
FG
1412 Option("cephx_sign_messages", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1413 .set_default(true)
1414 .set_description(""),
c07f9fc5 1415
d2e6a577
FG
1416 Option("auth_mon_ticket_ttl", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1417 .set_default(60*60*12)
1418 .set_description(""),
c07f9fc5 1419
d2e6a577
FG
1420 Option("auth_service_ticket_ttl", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1421 .set_default(60*60)
1422 .set_description(""),
c07f9fc5 1423
d2e6a577
FG
1424 Option("auth_debug", Option::TYPE_BOOL, Option::LEVEL_DEV)
1425 .set_default(false)
1426 .set_description(""),
c07f9fc5 1427
d2e6a577
FG
1428 Option("mon_client_hunt_parallel", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1429 .set_default(2)
1430 .set_description(""),
c07f9fc5 1431
d2e6a577
FG
1432 Option("mon_client_hunt_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1433 .set_default(3.0)
1434 .set_description(""),
c07f9fc5 1435
d2e6a577
FG
1436 Option("mon_client_ping_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1437 .set_default(10.0)
1438 .set_description(""),
c07f9fc5 1439
d2e6a577
FG
1440 Option("mon_client_ping_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1441 .set_default(30.0)
1442 .set_description(""),
c07f9fc5 1443
d2e6a577
FG
1444 Option("mon_client_hunt_interval_backoff", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1445 .set_default(2.0)
1446 .set_description(""),
c07f9fc5 1447
d2e6a577
FG
1448 Option("mon_client_hunt_interval_min_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1449 .set_default(1.0)
1450 .set_description(""),
c07f9fc5 1451
d2e6a577
FG
1452 Option("mon_client_hunt_interval_max_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1453 .set_default(10.0)
1454 .set_description(""),
c07f9fc5 1455
d2e6a577
FG
1456 Option("mon_client_max_log_entries_per_message", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1457 .set_default(1000)
1458 .set_description(""),
c07f9fc5 1459
d2e6a577
FG
1460 Option("mon_max_pool_pg_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1461 .set_default(65536)
1462 .set_description(""),
c07f9fc5 1463
d2e6a577
FG
1464 Option("mon_pool_quota_warn_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1465 .set_default(0)
1466 .set_description(""),
c07f9fc5 1467
d2e6a577
FG
1468 Option("mon_pool_quota_crit_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1469 .set_default(0)
1470 .set_description(""),
c07f9fc5 1471
d2e6a577
FG
1472 Option("crush_location", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1473 .set_default("")
1474 .set_description(""),
c07f9fc5 1475
d2e6a577
FG
1476 Option("crush_location_hook", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1477 .set_default("")
1478 .set_description(""),
c07f9fc5 1479
d2e6a577
FG
1480 Option("crush_location_hook_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1481 .set_default(10)
1482 .set_description(""),
c07f9fc5 1483
d2e6a577
FG
1484 Option("objecter_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1485 .set_default(5.0)
1486 .set_description(""),
c07f9fc5 1487
d2e6a577
FG
1488 Option("objecter_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1489 .set_default(10.0)
1490 .set_description(""),
c07f9fc5 1491
d2e6a577
FG
1492 Option("objecter_inflight_op_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1493 .set_default(1024*1024*100)
1494 .set_description(""),
c07f9fc5 1495
d2e6a577
FG
1496 Option("objecter_inflight_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1497 .set_default(1024)
1498 .set_description(""),
c07f9fc5 1499
d2e6a577
FG
1500 Option("objecter_completion_locks_per_session", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1501 .set_default(32)
1502 .set_description(""),
c07f9fc5 1503
d2e6a577
FG
1504 Option("objecter_inject_no_watch_ping", Option::TYPE_BOOL, Option::LEVEL_DEV)
1505 .set_default(false)
1506 .set_description(""),
c07f9fc5 1507
d2e6a577
FG
1508 Option("objecter_retry_writes_after_first_reply", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1509 .set_default(false)
1510 .set_description(""),
c07f9fc5 1511
d2e6a577
FG
1512 Option("objecter_debug_inject_relock_delay", Option::TYPE_BOOL, Option::LEVEL_DEV)
1513 .set_default(false)
1514 .set_description(""),
c07f9fc5 1515
d2e6a577
FG
1516 Option("filer_max_purge_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1517 .set_default(10)
1518 .set_description(""),
c07f9fc5 1519
d2e6a577
FG
1520 Option("filer_max_truncate_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1521 .set_default(128)
1522 .set_description(""),
c07f9fc5 1523
d2e6a577
FG
1524 Option("journaler_write_head_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1525 .set_default(15)
1526 .set_description(""),
c07f9fc5 1527
d2e6a577
FG
1528 Option("journaler_prefetch_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1529 .set_default(10)
1530 .set_description(""),
c07f9fc5 1531
d2e6a577
FG
1532 Option("journaler_prezero_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1533 .set_default(5)
1534 .set_description(""),
c07f9fc5 1535
d2e6a577
FG
1536 Option("osd_check_max_object_name_len_on_startup", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1537 .set_default(true)
1538 .set_description(""),
c07f9fc5 1539
d2e6a577
FG
1540 Option("osd_max_backfills", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1541 .set_default(1)
1542 .set_description(""),
c07f9fc5 1543
d2e6a577
FG
1544 Option("osd_min_recovery_priority", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1545 .set_default(0)
1546 .set_description(""),
c07f9fc5 1547
d2e6a577
FG
1548 Option("osd_backfill_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1549 .set_default(30.0)
1550 .set_description(""),
c07f9fc5 1551
d2e6a577
FG
1552 Option("osd_recovery_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1553 .set_default(30.0)
1554 .set_description(""),
c07f9fc5 1555
d2e6a577
FG
1556 Option("osd_agent_max_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1557 .set_default(4)
1558 .set_description(""),
c07f9fc5 1559
d2e6a577
FG
1560 Option("osd_agent_max_low_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1561 .set_default(2)
1562 .set_description(""),
c07f9fc5 1563
d2e6a577
FG
1564 Option("osd_agent_min_evict_effort", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1565 .set_default(.1)
1566 .set_description(""),
c07f9fc5 1567
d2e6a577
FG
1568 Option("osd_agent_quantize_effort", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1569 .set_default(.1)
1570 .set_description(""),
c07f9fc5 1571
d2e6a577
FG
1572 Option("osd_agent_delay_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1573 .set_default(5.0)
1574 .set_description(""),
c07f9fc5 1575
d2e6a577
FG
1576 Option("osd_find_best_info_ignore_history_les", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1577 .set_default(false)
1578 .set_description(""),
c07f9fc5 1579
d2e6a577
FG
1580 Option("osd_agent_hist_halflife", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1581 .set_default(1000)
1582 .set_description(""),
c07f9fc5 1583
d2e6a577
FG
1584 Option("osd_agent_slop", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1585 .set_default(.02)
1586 .set_description(""),
c07f9fc5 1587
d2e6a577
FG
1588 Option("osd_uuid", Option::TYPE_UUID, Option::LEVEL_ADVANCED)
1589 .set_default(uuid_d())
1590 .set_description(""),
c07f9fc5 1591
d2e6a577
FG
1592 Option("osd_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1593 .set_default("/var/lib/ceph/osd/$cluster-$id")
1594 .set_description(""),
c07f9fc5 1595
d2e6a577
FG
1596 Option("osd_journal", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1597 .set_default("/var/lib/ceph/osd/$cluster-$id/journal")
1598 .set_description(""),
c07f9fc5 1599
d2e6a577
FG
1600 Option("osd_journal_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1601 .set_default(5120)
1602 .set_description(""),
c07f9fc5 1603
d2e6a577
FG
1604 Option("osd_journal_flush_on_shutdown", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1605 .set_default(true)
1606 .set_description(""),
c07f9fc5 1607
d2e6a577
FG
1608 Option("osd_os_flags", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1609 .set_default(0)
1610 .set_description(""),
c07f9fc5 1611
d2e6a577
FG
1612 Option("osd_max_write_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1613 .set_default(90)
1614 .set_description(""),
c07f9fc5 1615
d2e6a577
FG
1616 Option("osd_max_pgls", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1617 .set_default(1024)
1618 .set_description(""),
c07f9fc5 1619
d2e6a577
FG
1620 Option("osd_client_message_size_cap", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1621 .set_default(500*1024L*1024L)
1622 .set_description(""),
c07f9fc5 1623
d2e6a577
FG
1624 Option("osd_client_message_cap", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1625 .set_default(100)
1626 .set_description(""),
c07f9fc5 1627
d2e6a577
FG
1628 Option("osd_pg_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1629 .set_default(6)
1630 .set_description(""),
c07f9fc5 1631
d2e6a577
FG
1632 Option("osd_pgp_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1633 .set_default(6)
1634 .set_description(""),
c07f9fc5 1635
d2e6a577
FG
1636 Option("osd_crush_update_weight_set", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1637 .set_default(true)
1638 .set_description(""),
c07f9fc5 1639
d2e6a577
FG
1640 Option("osd_crush_chooseleaf_type", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1641 .set_default(1)
1642 .set_description(""),
c07f9fc5 1643
d2e6a577
FG
1644 Option("osd_pool_use_gmt_hitset", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1645 .set_default(true)
1646 .set_description(""),
c07f9fc5 1647
d2e6a577
FG
1648 Option("osd_crush_update_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1649 .set_default(true)
1650 .set_description(""),
c07f9fc5 1651
d2e6a577
FG
1652 Option("osd_class_update_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1653 .set_default(true)
1654 .set_description(""),
c07f9fc5 1655
d2e6a577
FG
1656 Option("osd_crush_initial_weight", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1657 .set_default(-1)
1658 .set_description(""),
c07f9fc5 1659
d2e6a577
FG
1660 Option("osd_pool_default_crush_rule", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1661 .set_default(-1)
1662 .set_description(""),
c07f9fc5 1663
d2e6a577
FG
1664 Option("osd_pool_erasure_code_stripe_unit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1665 .set_default(4096)
1666 .set_description(""),
c07f9fc5 1667
d2e6a577
FG
1668 Option("osd_pool_default_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1669 .set_default(3)
1670 .set_description(""),
c07f9fc5 1671
d2e6a577
FG
1672 Option("osd_pool_default_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1673 .set_default(0)
1674 .set_description(""),
c07f9fc5 1675
d2e6a577
FG
1676 Option("osd_pool_default_pg_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1677 .set_default(8)
1678 .set_description(""),
c07f9fc5 1679
d2e6a577
FG
1680 Option("osd_pool_default_pgp_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1681 .set_default(8)
1682 .set_description(""),
c07f9fc5 1683
d2e6a577
FG
1684 Option("osd_pool_default_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1685 .set_default("replicated")
1686 .set_description(""),
c07f9fc5 1687
d2e6a577
FG
1688 Option("osd_pool_default_erasure_code_profile", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1689 .set_default("plugin=jerasure technique=reed_sol_van k=2 m=1")
1690 .set_description(""),
c07f9fc5 1691
d2e6a577
FG
1692 Option("osd_erasure_code_plugins", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1693 .set_default("jerasure lrc"
1694 #ifdef HAVE_BETTER_YASM_ELF64
1695 " isa"
1696 #endif
1697 )
1698 .set_description(""),
c07f9fc5 1699
d2e6a577
FG
1700 Option("osd_allow_recovery_below_min_size", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1701 .set_default(true)
1702 .set_description(""),
c07f9fc5 1703
d2e6a577
FG
1704 Option("osd_pool_default_flags", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1705 .set_default(0)
1706 .set_description(""),
c07f9fc5 1707
d2e6a577
FG
1708 Option("osd_pool_default_flag_hashpspool", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1709 .set_default(true)
1710 .set_description(""),
c07f9fc5 1711
d2e6a577
FG
1712 Option("osd_pool_default_flag_nodelete", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1713 .set_default(false)
1714 .set_description(""),
c07f9fc5 1715
d2e6a577
FG
1716 Option("osd_pool_default_flag_nopgchange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1717 .set_default(false)
1718 .set_description(""),
c07f9fc5 1719
d2e6a577
FG
1720 Option("osd_pool_default_flag_nosizechange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1721 .set_default(false)
1722 .set_description(""),
c07f9fc5 1723
d2e6a577
FG
1724 Option("osd_pool_default_hit_set_bloom_fpp", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1725 .set_default(.05)
1726 .set_description(""),
c07f9fc5 1727
d2e6a577
FG
1728 Option("osd_pool_default_cache_target_dirty_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1729 .set_default(.4)
1730 .set_description(""),
c07f9fc5 1731
d2e6a577
FG
1732 Option("osd_pool_default_cache_target_dirty_high_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1733 .set_default(.6)
1734 .set_description(""),
c07f9fc5 1735
d2e6a577
FG
1736 Option("osd_pool_default_cache_target_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1737 .set_default(.8)
1738 .set_description(""),
c07f9fc5 1739
d2e6a577
FG
1740 Option("osd_pool_default_cache_min_flush_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1741 .set_default(0)
1742 .set_description(""),
c07f9fc5 1743
d2e6a577
FG
1744 Option("osd_pool_default_cache_min_evict_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1745 .set_default(0)
1746 .set_description(""),
c07f9fc5 1747
d2e6a577
FG
1748 Option("osd_pool_default_cache_max_evict_check_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1749 .set_default(10)
1750 .set_description(""),
c07f9fc5 1751
d2e6a577
FG
1752 Option("osd_hit_set_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1753 .set_default(1000)
1754 .set_description(""),
c07f9fc5 1755
d2e6a577
FG
1756 Option("osd_hit_set_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1757 .set_default(100000)
1758 .set_description(""),
c07f9fc5 1759
d2e6a577
FG
1760 Option("osd_hit_set_namespace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1761 .set_default(".ceph-internal")
1762 .set_description(""),
c07f9fc5 1763
d2e6a577
FG
1764 Option("osd_tier_promote_max_objects_sec", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1765 .set_default(25)
1766 .set_description(""),
c07f9fc5 1767
d2e6a577
FG
1768 Option("osd_tier_promote_max_bytes_sec", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1769 .set_default(5 * 1024*1024)
1770 .set_description(""),
c07f9fc5 1771
d2e6a577
FG
1772 Option("osd_tier_default_cache_mode", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1773 .set_default("writeback")
1774 .set_description(""),
c07f9fc5 1775
d2e6a577
FG
1776 Option("osd_tier_default_cache_hit_set_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1777 .set_default(4)
1778 .set_description(""),
c07f9fc5 1779
d2e6a577
FG
1780 Option("osd_tier_default_cache_hit_set_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1781 .set_default(1200)
1782 .set_description(""),
c07f9fc5 1783
d2e6a577
FG
1784 Option("osd_tier_default_cache_hit_set_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1785 .set_default("bloom")
1786 .set_description(""),
c07f9fc5 1787
d2e6a577
FG
1788 Option("osd_tier_default_cache_min_read_recency_for_promote", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1789 .set_default(1)
1790 .set_description(""),
c07f9fc5 1791
d2e6a577
FG
1792 Option("osd_tier_default_cache_min_write_recency_for_promote", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1793 .set_default(1)
1794 .set_description(""),
c07f9fc5 1795
d2e6a577
FG
1796 Option("osd_tier_default_cache_hit_set_grade_decay_rate", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1797 .set_default(20)
1798 .set_description(""),
c07f9fc5 1799
d2e6a577
FG
1800 Option("osd_tier_default_cache_hit_set_search_last_n", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1801 .set_default(1)
1802 .set_description(""),
c07f9fc5 1803
d2e6a577
FG
1804 Option("osd_map_dedup", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1805 .set_default(true)
1806 .set_description(""),
1807
1808 Option("osd_map_max_advance", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1809 .set_default(40)
1810 .set_description(""),
1811
1812 Option("osd_map_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1813 .set_default(50)
1814 .set_description(""),
1815
1816 Option("osd_map_message_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1817 .set_default(40)
1818 .set_description(""),
1819
1820 Option("osd_map_share_max_epochs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1821 .set_default(40)
1822 .set_description(""),
1823
1824 Option("osd_inject_bad_map_crc_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
1825 .set_default(0)
1826 .set_description(""),
1827
1828 Option("osd_inject_failure_on_pg_removal", Option::TYPE_BOOL, Option::LEVEL_DEV)
1829 .set_default(false)
1830 .set_description(""),
1831
1832 Option("osd_max_markdown_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1833 .set_default(600)
1834 .set_description(""),
1835
1836 Option("osd_max_markdown_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1837 .set_default(5)
1838 .set_description(""),
1839
1840 Option("osd_peering_wq_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1841 .set_default(2)
1842 .set_description(""),
1843
1844 Option("osd_peering_wq_batch_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1845 .set_default(20)
1846 .set_description(""),
1847
1848 Option("osd_op_pq_max_tokens_per_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1849 .set_default(4194304)
1850 .set_description(""),
1851
1852 Option("osd_op_pq_min_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
1853 .set_default(65536)
1854 .set_description(""),
1855
1856 Option("osd_disk_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1857 .set_default(1)
1858 .set_description(""),
1859
1860 Option("osd_disk_thread_ioprio_class", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1861 .set_default("")
1862 .set_description(""),
1863
1864 Option("osd_disk_thread_ioprio_priority", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1865 .set_default(-1)
1866 .set_description(""),
1867
1868 Option("osd_recover_clone_overlap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
1869 .set_default(true)
1870 .set_description(""),
1871
1872 Option("osd_op_num_threads_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1873 .set_default(0)
1874 .set_description(""),
1875
1876 Option("osd_op_num_threads_per_shard_hdd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1877 .set_default(1)
1878 .set_description(""),
1879
1880 Option("osd_op_num_threads_per_shard_ssd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1881 .set_default(2)
1882 .set_description(""),
1883
1884 Option("osd_op_num_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1885 .set_default(0)
1886 .set_description(""),
1887
1888 Option("osd_op_num_shards_hdd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1889 .set_default(5)
1890 .set_description(""),
1891
1892 Option("osd_op_num_shards_ssd", Option::TYPE_INT, Option::LEVEL_ADVANCED)
1893 .set_default(8)
1894 .set_description(""),
1895
1896 Option("osd_op_queue", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1897 .set_default("wpq")
1898 .set_enum_allowed( { "wpq", "prioritized", "mclock_opclass", "mclock_client", "debug_random" } )
1899 .set_description("which operation queue algorithm to use")
1900 .set_long_description("which operation queue algorithm to use; mclock_opclass and mclock_client are currently experimental")
1901 .add_see_also("osd_op_queue_cut_off"),
1902
1903 Option("osd_op_queue_cut_off", Option::TYPE_STR, Option::LEVEL_ADVANCED)
1904 .set_default("low")
1905 .set_enum_allowed( { "low", "high", "debug_random" } )
1906 .set_description("the threshold between high priority ops and low priority ops")
1907 .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")
1908 .add_see_also("osd_op_queue"),
1909
1910 Option("osd_op_queue_mclock_client_op_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1911 .set_default(1000.0)
1912 .set_description("mclock reservation of client operator requests")
1913 .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")
1914 .add_see_also("osd_op_queue")
1915 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1916 .add_see_also("osd_op_queue_mclock_client_op_lim")
1917 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1918 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1919 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1920 .add_see_also("osd_op_queue_mclock_snap_res")
1921 .add_see_also("osd_op_queue_mclock_snap_wgt")
1922 .add_see_also("osd_op_queue_mclock_snap_lim")
1923 .add_see_also("osd_op_queue_mclock_recov_res")
1924 .add_see_also("osd_op_queue_mclock_recov_wgt")
1925 .add_see_also("osd_op_queue_mclock_recov_lim")
1926 .add_see_also("osd_op_queue_mclock_scrub_res")
1927 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1928 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1929
1930 Option("osd_op_queue_mclock_client_op_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1931 .set_default(500.0)
1932 .set_description("mclock weight of client operator requests")
1933 .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")
1934 .add_see_also("osd_op_queue")
1935 .add_see_also("osd_op_queue_mclock_client_op_res")
1936 .add_see_also("osd_op_queue_mclock_client_op_lim")
1937 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1938 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1939 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1940 .add_see_also("osd_op_queue_mclock_snap_res")
1941 .add_see_also("osd_op_queue_mclock_snap_wgt")
1942 .add_see_also("osd_op_queue_mclock_snap_lim")
1943 .add_see_also("osd_op_queue_mclock_recov_res")
1944 .add_see_also("osd_op_queue_mclock_recov_wgt")
1945 .add_see_also("osd_op_queue_mclock_recov_lim")
1946 .add_see_also("osd_op_queue_mclock_scrub_res")
1947 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1948 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1949
1950 Option("osd_op_queue_mclock_client_op_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1951 .set_default(0.0)
1952 .set_description("mclock limit of client operator requests")
1953 .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")
1954 .add_see_also("osd_op_queue")
1955 .add_see_also("osd_op_queue_mclock_client_op_res")
1956 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1957 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1958 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1959 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1960 .add_see_also("osd_op_queue_mclock_snap_res")
1961 .add_see_also("osd_op_queue_mclock_snap_wgt")
1962 .add_see_also("osd_op_queue_mclock_snap_lim")
1963 .add_see_also("osd_op_queue_mclock_recov_res")
1964 .add_see_also("osd_op_queue_mclock_recov_wgt")
1965 .add_see_also("osd_op_queue_mclock_recov_lim")
1966 .add_see_also("osd_op_queue_mclock_scrub_res")
1967 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1968 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1969
1970 Option("osd_op_queue_mclock_osd_subop_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1971 .set_default(1000.0)
1972 .set_description("mclock reservation of osd sub-operation requests")
1973 .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")
1974 .add_see_also("osd_op_queue")
1975 .add_see_also("osd_op_queue_mclock_client_op_res")
1976 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1977 .add_see_also("osd_op_queue_mclock_client_op_lim")
1978 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
1979 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
1980 .add_see_also("osd_op_queue_mclock_snap_res")
1981 .add_see_also("osd_op_queue_mclock_snap_wgt")
1982 .add_see_also("osd_op_queue_mclock_snap_lim")
1983 .add_see_also("osd_op_queue_mclock_recov_res")
1984 .add_see_also("osd_op_queue_mclock_recov_wgt")
1985 .add_see_also("osd_op_queue_mclock_recov_lim")
1986 .add_see_also("osd_op_queue_mclock_scrub_res")
1987 .add_see_also("osd_op_queue_mclock_scrub_wgt")
1988 .add_see_also("osd_op_queue_mclock_scrub_lim"),
1989
1990 Option("osd_op_queue_mclock_osd_subop_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
1991 .set_default(500.0)
1992 .set_description("mclock weight of osd sub-operation requests")
1993 .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")
1994 .add_see_also("osd_op_queue")
1995 .add_see_also("osd_op_queue_mclock_client_op_res")
1996 .add_see_also("osd_op_queue_mclock_client_op_wgt")
1997 .add_see_also("osd_op_queue_mclock_client_op_lim")
1998 .add_see_also("osd_op_queue_mclock_osd_subop_res")
1999 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2000 .add_see_also("osd_op_queue_mclock_snap_res")
2001 .add_see_also("osd_op_queue_mclock_snap_wgt")
2002 .add_see_also("osd_op_queue_mclock_snap_lim")
2003 .add_see_also("osd_op_queue_mclock_recov_res")
2004 .add_see_also("osd_op_queue_mclock_recov_wgt")
2005 .add_see_also("osd_op_queue_mclock_recov_lim")
2006 .add_see_also("osd_op_queue_mclock_scrub_res")
2007 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2008 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2009
2010 Option("osd_op_queue_mclock_osd_subop_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2011 .set_default(0.0)
2012 .set_description("mclock limit of osd sub-operation requests")
2013 .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")
2014 .add_see_also("osd_op_queue")
2015 .add_see_also("osd_op_queue_mclock_client_op_res")
2016 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2017 .add_see_also("osd_op_queue_mclock_client_op_lim")
2018 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2019 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2020 .add_see_also("osd_op_queue_mclock_snap_res")
2021 .add_see_also("osd_op_queue_mclock_snap_wgt")
2022 .add_see_also("osd_op_queue_mclock_snap_lim")
2023 .add_see_also("osd_op_queue_mclock_recov_res")
2024 .add_see_also("osd_op_queue_mclock_recov_wgt")
2025 .add_see_also("osd_op_queue_mclock_recov_lim")
2026 .add_see_also("osd_op_queue_mclock_scrub_res")
2027 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2028 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2029
2030 Option("osd_op_queue_mclock_snap_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2031 .set_default(0.0)
2032 .set_description("mclock reservation of snaptrim requests")
2033 .set_long_description("mclock reservation of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2034 .add_see_also("osd_op_queue")
2035 .add_see_also("osd_op_queue_mclock_client_op_res")
2036 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2037 .add_see_also("osd_op_queue_mclock_client_op_lim")
2038 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2039 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2040 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2041 .add_see_also("osd_op_queue_mclock_snap_wgt")
2042 .add_see_also("osd_op_queue_mclock_snap_lim")
2043 .add_see_also("osd_op_queue_mclock_recov_res")
2044 .add_see_also("osd_op_queue_mclock_recov_wgt")
2045 .add_see_also("osd_op_queue_mclock_recov_lim")
2046 .add_see_also("osd_op_queue_mclock_scrub_res")
2047 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2048 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2049
2050 Option("osd_op_queue_mclock_snap_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2051 .set_default(1.0)
2052 .set_description("mclock weight of snaptrim requests")
2053 .set_long_description("mclock weight of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2054 .add_see_also("osd_op_queue")
2055 .add_see_also("osd_op_queue_mclock_client_op_res")
2056 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2057 .add_see_also("osd_op_queue_mclock_client_op_lim")
2058 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2059 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2060 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2061 .add_see_also("osd_op_queue_mclock_snap_res")
2062 .add_see_also("osd_op_queue_mclock_snap_lim")
2063 .add_see_also("osd_op_queue_mclock_recov_res")
2064 .add_see_also("osd_op_queue_mclock_recov_wgt")
2065 .add_see_also("osd_op_queue_mclock_recov_lim")
2066 .add_see_also("osd_op_queue_mclock_scrub_res")
2067 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2068 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2069
2070 Option("osd_op_queue_mclock_snap_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2071 .set_default(0.001)
2072 .set_description("")
2073 .set_description("mclock limit of snaptrim requests")
2074 .set_long_description("mclock limit of snaptrim requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2075 .add_see_also("osd_op_queue_mclock_client_op_res")
2076 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2077 .add_see_also("osd_op_queue_mclock_client_op_lim")
2078 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2079 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2080 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2081 .add_see_also("osd_op_queue_mclock_snap_res")
2082 .add_see_also("osd_op_queue_mclock_snap_wgt")
2083 .add_see_also("osd_op_queue_mclock_recov_res")
2084 .add_see_also("osd_op_queue_mclock_recov_wgt")
2085 .add_see_also("osd_op_queue_mclock_recov_lim")
2086 .add_see_also("osd_op_queue_mclock_scrub_res")
2087 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2088 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2089
2090 Option("osd_op_queue_mclock_recov_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2091 .set_default(0.0)
2092 .set_description("mclock reservation of recovery requests")
2093 .set_long_description("mclock reservation of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2094 .add_see_also("osd_op_queue")
2095 .add_see_also("osd_op_queue_mclock_client_op_res")
2096 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2097 .add_see_also("osd_op_queue_mclock_client_op_lim")
2098 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2099 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2100 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2101 .add_see_also("osd_op_queue_mclock_snap_res")
2102 .add_see_also("osd_op_queue_mclock_snap_wgt")
2103 .add_see_also("osd_op_queue_mclock_snap_lim")
2104 .add_see_also("osd_op_queue_mclock_recov_wgt")
2105 .add_see_also("osd_op_queue_mclock_recov_lim")
2106 .add_see_also("osd_op_queue_mclock_scrub_res")
2107 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2108 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2109
2110 Option("osd_op_queue_mclock_recov_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2111 .set_default(1.0)
2112 .set_description("mclock weight of recovery requests")
2113 .set_long_description("mclock weight of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2114 .add_see_also("osd_op_queue")
2115 .add_see_also("osd_op_queue_mclock_client_op_res")
2116 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2117 .add_see_also("osd_op_queue_mclock_client_op_lim")
2118 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2119 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2120 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2121 .add_see_also("osd_op_queue_mclock_snap_res")
2122 .add_see_also("osd_op_queue_mclock_snap_wgt")
2123 .add_see_also("osd_op_queue_mclock_snap_lim")
2124 .add_see_also("osd_op_queue_mclock_recov_res")
2125 .add_see_also("osd_op_queue_mclock_recov_lim")
2126 .add_see_also("osd_op_queue_mclock_scrub_res")
2127 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2128 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2129
2130 Option("osd_op_queue_mclock_recov_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2131 .set_default(0.001)
2132 .set_description("mclock limit of recovery requests")
2133 .set_long_description("mclock limit of recovery requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2134 .add_see_also("osd_op_queue")
2135 .add_see_also("osd_op_queue_mclock_client_op_res")
2136 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2137 .add_see_also("osd_op_queue_mclock_client_op_lim")
2138 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2139 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2140 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2141 .add_see_also("osd_op_queue_mclock_snap_res")
2142 .add_see_also("osd_op_queue_mclock_snap_wgt")
2143 .add_see_also("osd_op_queue_mclock_snap_lim")
2144 .add_see_also("osd_op_queue_mclock_recov_res")
2145 .add_see_also("osd_op_queue_mclock_recov_wgt")
2146 .add_see_also("osd_op_queue_mclock_scrub_res")
2147 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2148 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2149
2150 Option("osd_op_queue_mclock_scrub_res", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2151 .set_default(0.0)
2152 .set_description("mclock reservation of scrub requests")
2153 .set_long_description("mclock reservation of scrub requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the reservation")
2154 .add_see_also("osd_op_queue")
2155 .add_see_also("osd_op_queue_mclock_client_op_res")
2156 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2157 .add_see_also("osd_op_queue_mclock_client_op_lim")
2158 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2159 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2160 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2161 .add_see_also("osd_op_queue_mclock_snap_res")
2162 .add_see_also("osd_op_queue_mclock_snap_wgt")
2163 .add_see_also("osd_op_queue_mclock_snap_lim")
2164 .add_see_also("osd_op_queue_mclock_recov_res")
2165 .add_see_also("osd_op_queue_mclock_recov_wgt")
2166 .add_see_also("osd_op_queue_mclock_recov_lim")
2167 .add_see_also("osd_op_queue_mclock_scrub_wgt")
2168 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2169
2170 Option("osd_op_queue_mclock_scrub_wgt", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2171 .set_default(1.0)
2172 .set_description("mclock weight of scrub requests")
2173 .set_long_description("mclock weight of scrub requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the weight")
2174 .add_see_also("osd_op_queue")
2175 .add_see_also("osd_op_queue_mclock_client_op_res")
2176 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2177 .add_see_also("osd_op_queue_mclock_client_op_lim")
2178 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2179 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2180 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2181 .add_see_also("osd_op_queue_mclock_snap_res")
2182 .add_see_also("osd_op_queue_mclock_snap_wgt")
2183 .add_see_also("osd_op_queue_mclock_snap_lim")
2184 .add_see_also("osd_op_queue_mclock_recov_res")
2185 .add_see_also("osd_op_queue_mclock_recov_wgt")
2186 .add_see_also("osd_op_queue_mclock_recov_lim")
2187 .add_see_also("osd_op_queue_mclock_scrub_res")
2188 .add_see_also("osd_op_queue_mclock_scrub_lim"),
2189
2190 Option("osd_op_queue_mclock_scrub_lim", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2191 .set_default(0.001)
2192 .set_description("mclock weight of limit requests")
2193 .set_long_description("mclock weight of limit requests when osd_op_queue is either 'mclock_opclass' or 'mclock_client'; higher values increase the limit")
2194 .add_see_also("osd_op_queue")
2195 .add_see_also("osd_op_queue_mclock_client_op_res")
2196 .add_see_also("osd_op_queue_mclock_client_op_wgt")
2197 .add_see_also("osd_op_queue_mclock_client_op_lim")
2198 .add_see_also("osd_op_queue_mclock_osd_subop_res")
2199 .add_see_also("osd_op_queue_mclock_osd_subop_wgt")
2200 .add_see_also("osd_op_queue_mclock_osd_subop_lim")
2201 .add_see_also("osd_op_queue_mclock_snap_res")
2202 .add_see_also("osd_op_queue_mclock_snap_wgt")
2203 .add_see_also("osd_op_queue_mclock_snap_lim")
2204 .add_see_also("osd_op_queue_mclock_recov_res")
2205 .add_see_also("osd_op_queue_mclock_recov_wgt")
2206 .add_see_also("osd_op_queue_mclock_recov_lim")
2207 .add_see_also("osd_op_queue_mclock_scrub_res")
2208 .add_see_also("osd_op_queue_mclock_scrub_wgt"),
2209
2210 Option("osd_ignore_stale_divergent_priors", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2211 .set_default(false)
2212 .set_description(""),
2213
2214 Option("osd_read_ec_check_for_errors", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2215 .set_default(false)
2216 .set_description(""),
2217
2218 Option("osd_recover_clone_overlap_limit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2219 .set_default(10)
2220 .set_description(""),
2221
2222 Option("osd_backfill_scan_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2223 .set_default(64)
2224 .set_description(""),
2225
2226 Option("osd_backfill_scan_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2227 .set_default(512)
2228 .set_description(""),
2229
2230 Option("osd_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2231 .set_default(15)
2232 .set_description(""),
2233
2234 Option("osd_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2235 .set_default(150)
2236 .set_description(""),
2237
2238 Option("osd_recovery_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2239 .set_default(30)
2240 .set_description(""),
2241
2242 Option("osd_recovery_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2243 .set_default(300)
2244 .set_description(""),
2245
2246 Option("osd_recovery_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2247 .set_default(0)
2248 .set_description("Time in seconds to sleep before next recovery or backfill op"),
2249
2250 Option("osd_recovery_sleep_hdd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2251 .set_default(0.1)
2252 .set_description("Time in seconds to sleep before next recovery or backfill op for HDDs"),
2253
2254 Option("osd_recovery_sleep_ssd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2255 .set_default(0)
2256 .set_description("Time in seconds to sleep before next recovery or backfill op for SSDs"),
2257
2258 Option("osd_recovery_sleep_hybrid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2259 .set_default(0.025)
2260 .set_description("Time in seconds to sleep before next recovery or backfill op when data is on HDD and journal is on SSD"),
2261
2262 Option("osd_snap_trim_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2263 .set_default(0)
2264 .set_description(""),
2265
2266 Option("osd_scrub_invalid_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2267 .set_default(true)
2268 .set_description(""),
2269
2270 Option("osd_remove_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2271 .set_default(60*60)
2272 .set_description(""),
2273
2274 Option("osd_remove_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2275 .set_default(10*60*60)
2276 .set_description(""),
2277
2278 Option("osd_command_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2279 .set_default(10*60)
2280 .set_description(""),
2281
2282 Option("osd_command_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2283 .set_default(15*60)
2284 .set_description(""),
2285
2286 Option("osd_heartbeat_addr", Option::TYPE_ADDR, Option::LEVEL_ADVANCED)
2287 .set_default(entity_addr_t())
2288 .set_description(""),
2289
2290 Option("osd_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2291 .set_default(6)
2292 .set_description(""),
2293
2294 Option("osd_heartbeat_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2295 .set_default(20)
2296 .set_description(""),
2297
2298 Option("osd_heartbeat_min_peers", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2299 .set_default(10)
2300 .set_description(""),
2301
2302 Option("osd_heartbeat_use_min_delay_socket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2303 .set_default(false)
2304 .set_description(""),
c07f9fc5 2305
d2e6a577
FG
2306 Option("osd_heartbeat_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2307 .set_default(2000)
2308 .set_description(""),
c07f9fc5 2309
d2e6a577
FG
2310 Option("osd_pg_max_concurrent_snap_trims", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2311 .set_default(2)
2312 .set_description(""),
c07f9fc5 2313
d2e6a577
FG
2314 Option("osd_max_trimming_pgs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2315 .set_default(2)
2316 .set_description(""),
c07f9fc5 2317
d2e6a577
FG
2318 Option("osd_heartbeat_min_healthy_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2319 .set_default(.33)
2320 .set_description(""),
c07f9fc5 2321
d2e6a577
FG
2322 Option("osd_mon_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2323 .set_default(30)
2324 .set_description(""),
c07f9fc5 2325
d2e6a577
FG
2326 Option("osd_mon_report_interval_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2327 .set_default(600)
2328 .set_description(""),
c07f9fc5 2329
d2e6a577
FG
2330 Option("osd_mon_report_interval_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2331 .set_default(5)
2332 .set_description(""),
c07f9fc5 2333
d2e6a577
FG
2334 Option("osd_mon_report_max_in_flight", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2335 .set_default(2)
2336 .set_description(""),
c07f9fc5 2337
d2e6a577
FG
2338 Option("osd_beacon_report_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2339 .set_default(300)
2340 .set_description(""),
c07f9fc5 2341
d2e6a577
FG
2342 Option("osd_pg_stat_report_interval_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2343 .set_default(500)
2344 .set_description(""),
c07f9fc5 2345
d2e6a577
FG
2346 Option("osd_mon_ack_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2347 .set_default(30.0)
2348 .set_description(""),
c07f9fc5 2349
d2e6a577
FG
2350 Option("osd_stats_ack_timeout_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2351 .set_default(2.0)
2352 .set_description(""),
c07f9fc5 2353
d2e6a577
FG
2354 Option("osd_stats_ack_timeout_decay", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2355 .set_default(.9)
2356 .set_description(""),
c07f9fc5 2357
d2e6a577
FG
2358 Option("osd_default_data_pool_replay_window", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2359 .set_default(45)
2360 .set_description(""),
c07f9fc5 2361
d2e6a577
FG
2362 Option("osd_auto_mark_unfound_lost", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2363 .set_default(false)
2364 .set_description(""),
c07f9fc5 2365
d2e6a577
FG
2366 Option("osd_recovery_delay_start", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2367 .set_default(0)
2368 .set_description(""),
c07f9fc5 2369
d2e6a577
FG
2370 Option("osd_recovery_max_active", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2371 .set_default(3)
2372 .set_description(""),
c07f9fc5 2373
d2e6a577
FG
2374 Option("osd_recovery_max_single_start", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2375 .set_default(1)
2376 .set_description(""),
c07f9fc5 2377
d2e6a577
FG
2378 Option("osd_recovery_max_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2379 .set_default(8<<20)
2380 .set_description(""),
c07f9fc5 2381
d2e6a577
FG
2382 Option("osd_recovery_max_omap_entries_per_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2383 .set_default(64000)
2384 .set_description(""),
c07f9fc5 2385
d2e6a577
FG
2386 Option("osd_copyfrom_max_chunk", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2387 .set_default(8<<20)
2388 .set_description(""),
c07f9fc5 2389
d2e6a577
FG
2390 Option("osd_push_per_object_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2391 .set_default(1000)
2392 .set_description(""),
c07f9fc5 2393
d2e6a577
FG
2394 Option("osd_max_push_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2395 .set_default(8<<20)
2396 .set_description(""),
c07f9fc5 2397
d2e6a577
FG
2398 Option("osd_max_push_objects", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2399 .set_default(10)
2400 .set_description(""),
c07f9fc5 2401
d2e6a577
FG
2402 Option("osd_recovery_forget_lost_objects", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2403 .set_default(false)
2404 .set_description(""),
c07f9fc5 2405
d2e6a577
FG
2406 Option("osd_max_scrubs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2407 .set_default(1)
2408 .set_description(""),
c07f9fc5 2409
d2e6a577
FG
2410 Option("osd_scrub_during_recovery", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2411 .set_default(false)
2412 .set_description(""),
c07f9fc5 2413
d2e6a577
FG
2414 Option("osd_scrub_begin_hour", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2415 .set_default(0)
2416 .set_description(""),
c07f9fc5 2417
d2e6a577
FG
2418 Option("osd_scrub_end_hour", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2419 .set_default(24)
2420 .set_description(""),
c07f9fc5 2421
d2e6a577
FG
2422 Option("osd_scrub_load_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2423 .set_default(0.5)
2424 .set_description(""),
c07f9fc5 2425
d2e6a577
FG
2426 Option("osd_scrub_min_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2427 .set_default(60*60*24)
2428 .set_description(""),
2429
2430 Option("osd_scrub_max_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2431 .set_default(7*60*60*24)
2432 .set_description(""),
2433
2434 Option("osd_scrub_interval_randomize_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2435 .set_default(0.5)
2436 .set_description(""),
2437
2438 Option("osd_scrub_backoff_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2439 .set_default(.66)
2440 .set_description(""),
2441
2442 Option("osd_scrub_chunk_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2443 .set_default(5)
2444 .set_description(""),
2445
2446 Option("osd_scrub_chunk_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2447 .set_default(25)
2448 .set_description(""),
2449
2450 Option("osd_scrub_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2451 .set_default(0)
2452 .set_description(""),
2453
2454 Option("osd_scrub_auto_repair", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2455 .set_default(false)
2456 .set_description(""),
2457
2458 Option("osd_scrub_auto_repair_num_errors", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2459 .set_default(5)
2460 .set_description(""),
2461
2462 Option("osd_deep_scrub_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2463 .set_default(60*60*24*7)
2464 .set_description(""),
2465
2466 Option("osd_deep_scrub_randomize_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2467 .set_default(0.15)
2468 .set_description(""),
2469
2470 Option("osd_deep_scrub_stride", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2471 .set_default(524288)
2472 .set_description(""),
2473
2474 Option("osd_deep_scrub_update_digest_min_age", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2475 .set_default(2*60*60)
2476 .set_description(""),
2477
2478 Option("osd_class_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2479 .set_default(CEPH_LIBDIR "/rados-classes")
2480 .set_description(""),
2481
2482 Option("osd_open_classes_on_start", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2483 .set_default(true)
2484 .set_description(""),
2485
2486 Option("osd_class_load_list", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2487 .set_default("cephfs hello journal lock log numops " "rbd refcount replica_log rgw statelog timeindex user version")
2488 .set_description(""),
2489
2490 Option("osd_class_default_list", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2491 .set_default("cephfs hello journal lock log numops " "rbd refcount replica_log rgw statelog timeindex user version")
2492 .set_description(""),
2493
2494 Option("osd_check_for_log_corruption", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2495 .set_default(false)
2496 .set_description(""),
2497
2498 Option("osd_use_stale_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2499 .set_default(false)
2500 .set_description(""),
2501
2502 Option("osd_rollback_to_cluster_snap", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2503 .set_default("")
2504 .set_description(""),
2505
2506 Option("osd_default_notify_timeout", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2507 .set_default(30)
2508 .set_description(""),
2509
2510 Option("osd_kill_backfill_at", Option::TYPE_INT, Option::LEVEL_DEV)
2511 .set_default(0)
2512 .set_description(""),
2513
2514 Option("osd_pg_epoch_persisted_max_stale", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2515 .set_default(40)
2516 .set_description(""),
2517
2518 Option("osd_min_pg_log_entries", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
181888fb 2519 .set_default(1500)
d2e6a577
FG
2520 .set_description("minimum number of entries to maintain in the PG log")
2521 .add_service("osd")
2522 .add_see_also("osd_max_pg_log_entries")
2523 .add_see_also("osd_pg_log_dups_tracked"),
2524
2525 Option("osd_max_pg_log_entries", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2526 .set_default(10000)
2527 .set_description("maximum number of entries to maintain in the PG log when degraded before we trim")
2528 .add_service("osd")
2529 .add_see_also("osd_min_pg_log_entries")
2530 .add_see_also("osd_pg_log_dups_tracked"),
2531
2532 Option("osd_pg_log_dups_tracked", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2533 .set_default(3000)
2534 .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")
2535 .add_service("osd")
2536 .add_see_also("osd_min_pg_log_entries")
2537 .add_see_also("osd_max_pg_log_entries"),
2538
2539 Option("osd_force_recovery_pg_log_entries_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2540 .set_default(1.3)
2541 .set_description(""),
2542
2543 Option("osd_pg_log_trim_min", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2544 .set_default(100)
2545 .set_description(""),
2546
2547 Option("osd_op_complaint_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2548 .set_default(30)
2549 .set_description(""),
2550
2551 Option("osd_command_max_records", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2552 .set_default(256)
2553 .set_description(""),
2554
2555 Option("osd_max_pg_blocked_by", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2556 .set_default(16)
2557 .set_description(""),
2558
2559 Option("osd_op_log_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2560 .set_default(5)
2561 .set_description(""),
2562
2563 Option("osd_verify_sparse_read_holes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2564 .set_default(false)
2565 .set_description(""),
2566
2567 Option("osd_backoff_on_unfound", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2568 .set_default(true)
2569 .set_description(""),
2570
2571 Option("osd_backoff_on_degraded", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2572 .set_default(false)
2573 .set_description(""),
2574
2575 Option("osd_backoff_on_down", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2576 .set_default(true)
2577 .set_description(""),
2578
2579 Option("osd_backoff_on_peering", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2580 .set_default(false)
2581 .set_description(""),
2582
2583 Option("osd_debug_crash_on_ignored_backoff", Option::TYPE_BOOL, Option::LEVEL_DEV)
2584 .set_default(false)
2585 .set_description(""),
2586
2587 Option("osd_debug_inject_dispatch_delay_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2588 .set_default(0)
2589 .set_description(""),
2590
2591 Option("osd_debug_inject_dispatch_delay_duration", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2592 .set_default(.1)
2593 .set_description(""),
2594
2595 Option("osd_debug_drop_ping_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2596 .set_default(0)
2597 .set_description(""),
2598
2599 Option("osd_debug_drop_ping_duration", Option::TYPE_INT, Option::LEVEL_DEV)
2600 .set_default(0)
2601 .set_description(""),
2602
2603 Option("osd_debug_op_order", Option::TYPE_BOOL, Option::LEVEL_DEV)
2604 .set_default(false)
2605 .set_description(""),
2606
2607 Option("osd_debug_verify_missing_on_start", Option::TYPE_BOOL, Option::LEVEL_DEV)
2608 .set_default(false)
2609 .set_description(""),
2610
2611 Option("osd_debug_scrub_chance_rewrite_digest", Option::TYPE_UINT, Option::LEVEL_DEV)
2612 .set_default(0)
2613 .set_description(""),
2614
2615 Option("osd_debug_verify_snaps_on_info", Option::TYPE_BOOL, Option::LEVEL_DEV)
2616 .set_default(false)
2617 .set_description(""),
2618
2619 Option("osd_debug_verify_stray_on_activate", Option::TYPE_BOOL, Option::LEVEL_DEV)
2620 .set_default(false)
2621 .set_description(""),
2622
2623 Option("osd_debug_skip_full_check_in_backfill_reservation", Option::TYPE_BOOL, Option::LEVEL_DEV)
2624 .set_default(false)
2625 .set_description(""),
2626
2627 Option("osd_debug_reject_backfill_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2628 .set_default(0)
2629 .set_description(""),
c07f9fc5 2630
d2e6a577
FG
2631 Option("osd_debug_inject_copyfrom_error", Option::TYPE_BOOL, Option::LEVEL_DEV)
2632 .set_default(false)
2633 .set_description(""),
c07f9fc5 2634
d2e6a577
FG
2635 Option("osd_debug_misdirected_ops", Option::TYPE_BOOL, Option::LEVEL_DEV)
2636 .set_default(false)
2637 .set_description(""),
c07f9fc5 2638
d2e6a577
FG
2639 Option("osd_debug_skip_full_check_in_recovery", Option::TYPE_BOOL, Option::LEVEL_DEV)
2640 .set_default(false)
2641 .set_description(""),
c07f9fc5 2642
d2e6a577
FG
2643 Option("osd_debug_random_push_read_error", Option::TYPE_FLOAT, Option::LEVEL_DEV)
2644 .set_default(0)
2645 .set_description(""),
c07f9fc5 2646
d2e6a577
FG
2647 Option("osd_debug_verify_cached_snaps", Option::TYPE_BOOL, Option::LEVEL_DEV)
2648 .set_default(false)
2649 .set_description(""),
c07f9fc5 2650
d2e6a577
FG
2651 Option("osd_enable_op_tracker", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2652 .set_default(true)
2653 .set_description(""),
c07f9fc5 2654
d2e6a577
FG
2655 Option("osd_num_op_tracker_shard", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2656 .set_default(32)
2657 .set_description(""),
c07f9fc5 2658
d2e6a577
FG
2659 Option("osd_op_history_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2660 .set_default(20)
2661 .set_description(""),
c07f9fc5 2662
d2e6a577
FG
2663 Option("osd_op_history_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2664 .set_default(600)
2665 .set_description(""),
c07f9fc5 2666
d2e6a577
FG
2667 Option("osd_op_history_slow_op_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2668 .set_default(20)
2669 .set_description(""),
c07f9fc5 2670
d2e6a577
FG
2671 Option("osd_op_history_slow_op_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2672 .set_default(10.0)
2673 .set_description(""),
c07f9fc5 2674
d2e6a577
FG
2675 Option("osd_target_transaction_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2676 .set_default(30)
2677 .set_description(""),
c07f9fc5 2678
d2e6a577
FG
2679 Option("osd_failsafe_full_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2680 .set_default(.97)
2681 .set_description(""),
c07f9fc5 2682
d2e6a577
FG
2683 Option("osd_fast_fail_on_connection_refused", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2684 .set_default(true)
2685 .set_description(""),
c07f9fc5 2686
d2e6a577
FG
2687 Option("osd_pg_object_context_cache_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2688 .set_default(64)
2689 .set_description(""),
c07f9fc5 2690
d2e6a577
FG
2691 Option("osd_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2692 .set_default(false)
2693 .set_description(""),
c07f9fc5 2694
d2e6a577
FG
2695 Option("osd_function_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2696 .set_default(false)
2697 .set_description(""),
c07f9fc5 2698
d2e6a577
FG
2699 Option("osd_fast_info", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2700 .set_default(true)
2701 .set_description(""),
c07f9fc5 2702
d2e6a577
FG
2703 Option("osd_debug_pg_log_writeout", Option::TYPE_BOOL, Option::LEVEL_DEV)
2704 .set_default(false)
2705 .set_description(""),
c07f9fc5 2706
d2e6a577
FG
2707 Option("osd_loop_before_reset_tphandle", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2708 .set_default(64)
2709 .set_description(""),
c07f9fc5 2710
d2e6a577
FG
2711 Option("threadpool_default_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2712 .set_default(60)
2713 .set_description(""),
c07f9fc5 2714
d2e6a577
FG
2715 Option("threadpool_empty_queue_max_wait", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2716 .set_default(2)
2717 .set_description(""),
c07f9fc5 2718
d2e6a577
FG
2719 Option("leveldb_log_to_ceph_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2720 .set_default(true)
2721 .set_description(""),
c07f9fc5 2722
d2e6a577
FG
2723 Option("leveldb_write_buffer_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2724 .set_default(8 *1024*1024)
2725 .set_description(""),
c07f9fc5 2726
d2e6a577
FG
2727 Option("leveldb_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2728 .set_default(128 *1024*1024)
2729 .set_description(""),
c07f9fc5 2730
d2e6a577
FG
2731 Option("leveldb_block_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2732 .set_default(0)
2733 .set_description(""),
c07f9fc5 2734
d2e6a577
FG
2735 Option("leveldb_bloom_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2736 .set_default(0)
2737 .set_description(""),
c07f9fc5 2738
d2e6a577
FG
2739 Option("leveldb_max_open_files", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2740 .set_default(0)
2741 .set_description(""),
c07f9fc5 2742
d2e6a577
FG
2743 Option("leveldb_compression", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2744 .set_default(true)
2745 .set_description(""),
c07f9fc5 2746
d2e6a577
FG
2747 Option("leveldb_paranoid", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2748 .set_default(false)
2749 .set_description(""),
2750
2751 Option("leveldb_log", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2752 .set_default("/dev/null")
2753 .set_description(""),
2754
2755 Option("leveldb_compact_on_mount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2756 .set_default(false)
2757 .set_description(""),
2758
2759 Option("kinetic_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2760 .set_default("")
2761 .set_description(""),
2762
2763 Option("kinetic_port", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2764 .set_default(8123)
2765 .set_description(""),
2766
2767 Option("kinetic_user_id", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2768 .set_default(1)
2769 .set_description(""),
2770
2771 Option("kinetic_hmac_key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2772 .set_default("asdfasdf")
2773 .set_description(""),
2774
2775 Option("kinetic_use_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2776 .set_default(false)
2777 .set_description(""),
2778
2779 Option("rocksdb_separate_wal_dir", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2780 .set_default(false)
2781 .set_description(""),
2782
2783 Option("rocksdb_db_paths", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2784 .set_default("")
2785 .set_description("")
2786 .set_safe(),
2787
2788 Option("rocksdb_log_to_ceph_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2789 .set_default(true)
2790 .set_description(""),
2791
2792 Option("rocksdb_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2793 .set_default(128*1024*1024)
2794 .set_description(""),
2795
2796 Option("rocksdb_cache_row_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2797 .set_default(0)
2798 .set_description(""),
2799
2800 Option("rocksdb_cache_shard_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2801 .set_default(4)
2802 .set_description(""),
2803
2804 Option("rocksdb_cache_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2805 .set_default("lru")
2806 .set_description(""),
2807
2808 Option("rocksdb_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
2809 .set_default(4*1024)
2810 .set_description(""),
2811
2812 Option("rocksdb_perf", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2813 .set_default(false)
2814 .set_description(""),
2815
2816 Option("rocksdb_collect_compaction_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2817 .set_default(false)
2818 .set_description(""),
2819
2820 Option("rocksdb_collect_extended_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2821 .set_default(false)
2822 .set_description(""),
2823
2824 Option("rocksdb_collect_memory_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2825 .set_default(false)
2826 .set_description(""),
2827
2828 Option("rocksdb_enable_rmrange", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2829 .set_default(false)
2830 .set_description(""),
2831
2832 Option("rocksdb_bloom_bits_per_key", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2833 .set_default(20)
2834 .set_description("Number of bits per key to use for RocksDB's bloom filters.")
2835 .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."),
2836
2837 Option("rocksdb_cache_index_and_filter_blocks", Option::TYPE_BOOL, Option::LEVEL_DEV)
2838 .set_default(true)
2839 .set_description("Whether to cache indices and filters in block cache")
2840 .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."),
2841
2842 Option("rocksdb_cache_index_and_filter_blocks_with_high_priority", Option::TYPE_BOOL, Option::LEVEL_DEV)
2843 .set_default(true)
2844 .set_description("Whether to cache indices and filters in the block cache with high priority")
2845 .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."),
2846
2847 Option("rocksdb_pin_l0_filter_and_index_blocks_in_cache", Option::TYPE_BOOL, Option::LEVEL_DEV)
2848 .set_default(true)
2849 .set_description("Whether to pin Level 0 indices and bloom filters in the block cache")
2850 .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."),
2851
2852 Option("rocksdb_index_type", Option::TYPE_STR, Option::LEVEL_DEV)
2853 .set_default("binary_search")
2854 .set_description("Type of index for SST files: binary_search, hash_search, two_level")
2855 .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"),
2856
2857 Option("rocksdb_partition_filters", Option::TYPE_BOOL, Option::LEVEL_DEV)
2858 .set_default(false)
2859 .set_description("(experimental) partition SST index/filters into smaller blocks")
2860 .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"),
2861
2862 Option("rocksdb_metadata_block_size", Option::TYPE_UINT, Option::LEVEL_DEV)
2863 .set_default(4096)
2864 .set_description("The block size for index partitions. (0 = rocksdb default)"),
2865
2866 Option("mon_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2867 .set_default("write_buffer_size=33554432,compression=kNoCompression")
2868 .set_description(""),
2869
2870 Option("osd_client_op_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2871 .set_default(63)
2872 .set_description(""),
2873
2874 Option("osd_recovery_op_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2875 .set_default(3)
2876 .set_description(""),
2877
2878 Option("osd_snap_trim_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2879 .set_default(5)
2880 .set_description(""),
2881
2882 Option("osd_snap_trim_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2883 .set_default(1<<20)
2884 .set_description(""),
2885
2886 Option("osd_scrub_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2887 .set_default(5)
2888 .set_description(""),
2889
2890 Option("osd_scrub_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2891 .set_default(50<<20)
2892 .set_description(""),
2893
2894 Option("osd_requested_scrub_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2895 .set_default(120)
2896 .set_description(""),
2897
2898 Option("osd_recovery_priority", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2899 .set_default(5)
2900 .set_description(""),
2901
2902 Option("osd_recovery_cost", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2903 .set_default(20<<20)
2904 .set_description(""),
2905
2906 Option("osd_recovery_op_warn_multiple", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2907 .set_default(16)
2908 .set_description(""),
2909
2910 Option("osd_mon_shutdown_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
2911 .set_default(5)
2912 .set_description(""),
2913
2914 Option("osd_shutdown_pgref_assert", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2915 .set_default(false)
2916 .set_description(""),
2917
2918 Option("osd_max_object_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2919 .set_default(128*1024L*1024L)
2920 .set_description(""),
2921
2922 Option("osd_max_object_name_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2923 .set_default(2048)
2924 .set_description(""),
2925
2926 Option("osd_max_object_namespace_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2927 .set_default(256)
2928 .set_description(""),
2929
2930 Option("osd_max_attr_name_len", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2931 .set_default(100)
2932 .set_description(""),
2933
2934 Option("osd_max_attr_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2935 .set_default(0)
2936 .set_description(""),
2937
2938 Option("osd_max_omap_entries_per_request", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2939 .set_default(131072)
2940 .set_description(""),
c07f9fc5 2941
d2e6a577
FG
2942 Option("osd_max_omap_bytes_per_request", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2943 .set_default(1<<30)
2944 .set_description(""),
c07f9fc5 2945
d2e6a577
FG
2946 Option("osd_objectstore", Option::TYPE_STR, Option::LEVEL_ADVANCED)
2947 .set_default("filestore")
2948 .set_description(""),
c07f9fc5 2949
d2e6a577
FG
2950 Option("osd_objectstore_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2951 .set_default(false)
2952 .set_description(""),
c07f9fc5 2953
d2e6a577
FG
2954 Option("osd_objectstore_fuse", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2955 .set_default(false)
2956 .set_description(""),
c07f9fc5 2957
d2e6a577
FG
2958 Option("osd_bench_small_size_max_iops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2959 .set_default(100)
2960 .set_description(""),
c07f9fc5 2961
d2e6a577
FG
2962 Option("osd_bench_large_size_max_throughput", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2963 .set_default(100 << 20)
2964 .set_description(""),
c07f9fc5 2965
d2e6a577
FG
2966 Option("osd_bench_max_block_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2967 .set_default(64 << 20)
2968 .set_description(""),
c07f9fc5 2969
d2e6a577
FG
2970 Option("osd_bench_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2971 .set_default(30)
2972 .set_description(""),
c07f9fc5 2973
d2e6a577
FG
2974 Option("osd_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2975 .set_default(false)
2976 .set_description(""),
c07f9fc5 2977
d2e6a577
FG
2978 Option("osdc_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2979 .set_default(false)
2980 .set_description(""),
c07f9fc5 2981
d2e6a577
FG
2982 Option("osd_discard_disconnected_ops", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2983 .set_default(true)
2984 .set_description(""),
c07f9fc5 2985
d2e6a577
FG
2986 Option("memstore_device_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2987 .set_default(1024*1024*1024)
2988 .set_description(""),
c07f9fc5 2989
d2e6a577 2990 Option("memstore_page_set", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
35e4c445 2991 .set_default(false)
d2e6a577 2992 .set_description(""),
c07f9fc5 2993
d2e6a577
FG
2994 Option("memstore_page_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
2995 .set_default(64 << 10)
2996 .set_description(""),
c07f9fc5 2997
d2e6a577
FG
2998 Option("objectstore_blackhole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
2999 .set_default(false)
3000 .set_description(""),
c07f9fc5 3001
d2e6a577
FG
3002 // --------------------------
3003 // bluestore
c07f9fc5 3004
d2e6a577
FG
3005 Option("bdev_debug_inflight_ios", Option::TYPE_BOOL, Option::LEVEL_DEV)
3006 .set_default(false)
3007 .set_description(""),
c07f9fc5 3008
d2e6a577
FG
3009 Option("bdev_inject_crash", Option::TYPE_INT, Option::LEVEL_DEV)
3010 .set_default(0)
3011 .set_description(""),
c07f9fc5 3012
d2e6a577
FG
3013 Option("bdev_inject_crash_flush_delay", Option::TYPE_INT, Option::LEVEL_DEV)
3014 .set_default(2)
3015 .set_description(""),
c07f9fc5 3016
d2e6a577
FG
3017 Option("bdev_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3018 .set_default(true)
3019 .set_description(""),
c07f9fc5 3020
d2e6a577
FG
3021 Option("bdev_aio_poll_ms", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3022 .set_default(250)
3023 .set_description(""),
c07f9fc5 3024
d2e6a577
FG
3025 Option("bdev_aio_max_queue_depth", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3026 .set_default(1024)
3027 .set_description(""),
c07f9fc5 3028
d2e6a577
FG
3029 Option("bdev_aio_reap_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3030 .set_default(16)
3031 .set_description(""),
c07f9fc5 3032
d2e6a577
FG
3033 Option("bdev_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3034 .set_default(4096)
3035 .set_description(""),
c07f9fc5 3036
d2e6a577
FG
3037 Option("bdev_debug_aio", Option::TYPE_BOOL, Option::LEVEL_DEV)
3038 .set_default(false)
3039 .set_description(""),
c07f9fc5 3040
d2e6a577
FG
3041 Option("bdev_debug_aio_suicide_timeout", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3042 .set_default(60.0)
3043 .set_description(""),
c07f9fc5 3044
d2e6a577
FG
3045 Option("bdev_nvme_unbind_from_kernel", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3046 .set_default(false)
3047 .set_description(""),
c07f9fc5 3048
d2e6a577
FG
3049 Option("bdev_nvme_retry_count", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3050 .set_default(-1)
3051 .set_description(""),
c07f9fc5 3052
d2e6a577
FG
3053 Option("bluefs_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3054 .set_default(1048576)
3055 .set_description(""),
3056
3057 Option("bluefs_max_prefetch", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3058 .set_default(1048576)
3059 .set_description(""),
3060
3061 Option("bluefs_min_log_runway", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3062 .set_default(1048576)
3063 .set_description(""),
3064
3065 Option("bluefs_max_log_runway", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3066 .set_default(4194304)
3067 .set_description(""),
3068
3069 Option("bluefs_log_compact_min_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3070 .set_default(5.0)
3071 .set_description(""),
3072
3073 Option("bluefs_log_compact_min_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3074 .set_default(16*1048576)
3075 .set_description(""),
3076
3077 Option("bluefs_min_flush_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3078 .set_default(524288)
3079 .set_description(""),
3080
3081 Option("bluefs_compact_log_sync", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3082 .set_default(false)
3083 .set_description(""),
3084
3085 Option("bluefs_buffered_io", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3086 .set_default(false)
3087 .set_description(""),
3088
3089 Option("bluefs_sync_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3090 .set_default(false)
3091 .set_description(""),
3092
3093 Option("bluefs_allocator", Option::TYPE_STR, Option::LEVEL_DEV)
181888fb 3094 .set_default("stupid")
d2e6a577
FG
3095 .set_description(""),
3096
3097 Option("bluefs_preextend_wal_files", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3098 .set_default(false)
3099 .set_description(""),
3100
3101 Option("bluestore_bluefs", Option::TYPE_BOOL, Option::LEVEL_DEV)
3102 .set_default(true)
3103 .add_tag("mkfs")
3104 .set_description("Use BlueFS to back rocksdb")
3105 .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."),
3106
3107 Option("bluestore_bluefs_env_mirror", Option::TYPE_BOOL, Option::LEVEL_DEV)
3108 .set_default(false)
3109 .add_tag("mkfs")
3110 .set_description("Mirror bluefs data to file system for testing/validation"),
3111
3112 Option("bluestore_bluefs_min", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3113 .set_default(1*1024*1024*1024)
3114 .set_description("minimum disk space allocated to BlueFS (e.g., at mkfs)"),
3115
3116 Option("bluestore_bluefs_min_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3117 .set_default(.02)
3118 .set_description("Minimum fraction of free space devoted to BlueFS"),
3119
3120 Option("bluestore_bluefs_max_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3121 .set_default(.90)
3122 .set_description("Maximum fraction of free storage devoted to BlueFS"),
3123
3124 Option("bluestore_bluefs_gift_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3125 .set_default(.02)
3126 .set_description("Maximum fraction of free space to give to BlueFS at once"),
3127
3128 Option("bluestore_bluefs_reclaim_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3129 .set_default(.20)
3130 .set_description("Maximum fraction of free space to reclaim from BlueFS at once"),
3131
3132 Option("bluestore_bluefs_balance_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3133 .set_default(1)
3134 .set_description("How frequently (in seconds) to balance free space between BlueFS and BlueStore"),
3135
3136 Option("bluestore_spdk_mem", Option::TYPE_UINT, Option::LEVEL_DEV)
3137 .set_default(512)
3138 .set_description(""),
3139
3140 Option("bluestore_spdk_coremask", Option::TYPE_STR, Option::LEVEL_DEV)
3141 .set_default("0x3")
3142 .set_description(""),
3143
3144 Option("bluestore_spdk_max_io_completion", Option::TYPE_UINT, Option::LEVEL_DEV)
3145 .set_default(0)
3146 .set_description(""),
3147
3148 Option("bluestore_block_path", Option::TYPE_STR, Option::LEVEL_DEV)
3149 .set_default("")
3150 .add_tag("mkfs")
3151 .set_description("Path to block device/file"),
3152
3153 Option("bluestore_block_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3154 .set_default(10ull * 1024*1024*1024)
3155 .add_tag("mkfs")
3156 .set_description("Size of file to create for backing bluestore"),
3157
3158 Option("bluestore_block_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3159 .set_default(true)
3160 .add_tag("mkfs")
3161 .set_description("Create bluestore_block_path if it doesn't exist")
3162 .add_see_also("bluestore_block_path").add_see_also("bluestore_block_size"),
3163
3164 Option("bluestore_block_db_path", Option::TYPE_STR, Option::LEVEL_DEV)
3165 .set_default("")
3166 .add_tag("mkfs")
3167 .set_description("Path for db block device"),
3168
3169 Option("bluestore_block_db_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3170 .set_default(0)
3171 .add_tag("mkfs")
3172 .set_description("Size of file to create for bluestore_block_db_path"),
3173
3174 Option("bluestore_block_db_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3175 .set_default(false)
3176 .add_tag("mkfs")
3177 .set_description("Create bluestore_block_db_path if it doesn't exist")
3178 .add_see_also("bluestore_block_db_path")
3179 .add_see_also("bluestore_block_db_size"),
3180
3181 Option("bluestore_block_wal_path", Option::TYPE_STR, Option::LEVEL_DEV)
3182 .set_default("")
3183 .add_tag("mkfs")
3184 .set_description("Path to block device/file backing bluefs wal"),
3185
3186 Option("bluestore_block_wal_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3187 .set_default(96 * 1024*1024)
3188 .add_tag("mkfs")
3189 .set_description("Size of file to create for bluestore_block_wal_path"),
3190
3191 Option("bluestore_block_wal_create", Option::TYPE_BOOL, Option::LEVEL_DEV)
3192 .set_default(false)
3193 .add_tag("mkfs")
3194 .set_description("Create bluestore_block_wal_path if it doesn't exist")
3195 .add_see_also("bluestore_block_wal_path")
3196 .add_see_also("bluestore_block_wal_size"),
3197
3198 Option("bluestore_block_preallocate_file", Option::TYPE_BOOL, Option::LEVEL_DEV)
3199 .set_default(false)
3200 .add_tag("mkfs")
3201 .set_description("Preallocate file created via bluestore_block*_create"),
3202
3203 Option("bluestore_csum_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3204 .set_default("crc32c")
3205 .set_enum_allowed({"none", "crc32c", "crc32c_16", "crc32c_8", "xxhash32", "xxhash64"})
3206 .set_safe()
3207 .set_description("Default checksum algorithm to use")
3208 .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."),
3209
3210 Option("bluestore_csum_min_block", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3211 .set_default(4096)
3212 .set_safe()
3213 .set_description("Minimum block size to checksum")
3214 .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).")
3215 .add_see_also("bluestore_csum_max_block"),
3216
3217 Option("bluestore_csum_max_block", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3218 .set_default(64*1024)
3219 .set_safe()
3220 .set_description("Maximum block size to checksum")
3221 .add_see_also("bluestore_csum_min_block"),
3222
3223 Option("bluestore_min_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3224 .set_default(0)
3225 .add_tag("mkfs")
3226 .set_description("Minimum allocation size to allocate for an object")
3227 .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."),
3228
3229 Option("bluestore_min_alloc_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3230 .set_default(64*1024)
3231 .add_tag("mkfs")
3232 .set_description("Default min_alloc_size value for rotational media"),
3233
3234 Option("bluestore_min_alloc_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3235 .set_default(16*1024)
3236 .add_tag("mkfs")
3237 .set_description("Default min_alloc_size value for non-rotational (solid state) media"),
3238
3239 Option("bluestore_max_alloc_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3240 .set_default(0)
3241 .add_tag("mkfs")
3242 .set_description("Maximum size of a single allocation (0 for no max)"),
3243
3244 Option("bluestore_prefer_deferred_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3245 .set_default(0)
3246 .set_safe()
3247 .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."),
3248
3249 Option("bluestore_prefer_deferred_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3250 .set_default(32768)
3251 .set_safe()
3252 .set_description("Default bluestore_prefer_deferred_size for rotational media"),
3253
3254 Option("bluestore_prefer_deferred_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3255 .set_default(0)
3256 .set_safe()
3257 .set_description("Default bluestore_prefer_deferred_size for non-rotational (solid state) media"),
3258
3259 Option("bluestore_compression_mode", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3260 .set_default("none")
3261 .set_enum_allowed({"none", "passive", "aggressive", "force"})
3262 .set_safe()
3263 .set_description("Default policy for using compression when pool does not specify")
3264 .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."),
3265
3266 Option("bluestore_compression_algorithm", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3267 .set_default("snappy")
3268 .set_enum_allowed({"", "snappy", "zlib", "zstd", "lz4"})
3269 .set_safe()
3270 .set_description("Default compression algorithm to use when writing object data")
3271 .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."),
3272
3273 Option("bluestore_compression_min_blob_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3274 .set_default(0)
3275 .set_safe()
3276 .set_description("Chunks smaller than this are never compressed"),
3277
3278 Option("bluestore_compression_min_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3279 .set_default(128*1024)
3280 .set_safe()
3281 .set_description("Default value of bluestore_compression_min_blob_size for rotational media"),
3282
3283 Option("bluestore_compression_min_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3284 .set_default(8*1024)
3285 .set_safe()
3286 .set_description("Default value of bluestore_compression_min_blob_size for non-rotational (solid state) media"),
3287
3288 Option("bluestore_compression_max_blob_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3289 .set_default(0)
3290 .set_safe()
3291 .set_description("Chunks larger than this are broken into smaller chunks before being compressed"),
3292
3293 Option("bluestore_compression_max_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3294 .set_default(512*1024)
3295 .set_safe()
3296 .set_description("Default value of bluestore_compression_max_blob_size for rotational media"),
3297
3298 Option("bluestore_compression_max_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3299 .set_default(64*1024)
3300 .set_safe()
3301 .set_description("Default value of bluestore_compression_max_blob_size for non-rotational (solid state) media"),
3302
3303 Option("bluestore_gc_enable_blob_threshold", Option::TYPE_INT, Option::LEVEL_DEV)
3304 .set_default(0)
3305 .set_safe()
3306 .set_description(""),
3307
3308 Option("bluestore_gc_enable_total_threshold", Option::TYPE_INT, Option::LEVEL_DEV)
3309 .set_default(0)
3310 .set_safe()
3311 .set_description(""),
3312
3313 Option("bluestore_max_blob_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3314 .set_default(0)
3315 .set_safe()
3316 .set_description(""),
3317
3318 Option("bluestore_max_blob_size_hdd", Option::TYPE_UINT, Option::LEVEL_DEV)
3319 .set_default(512*1024)
3320 .set_safe()
3321 .set_description(""),
3322
3323 Option("bluestore_max_blob_size_ssd", Option::TYPE_UINT, Option::LEVEL_DEV)
3324 .set_default(64*1024)
3325 .set_safe()
3326 .set_description(""),
3327
3328 Option("bluestore_compression_required_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3329 .set_default(.875)
3330 .set_safe()
3331 .set_description("Compression ratio required to store compressed data")
3332 .set_long_description("If we compress data and get less than this we discard the result and store the original uncompressed data."),
3333
3334 Option("bluestore_extent_map_shard_max_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3335 .set_default(1200)
3336 .set_description("Max size (bytes) for a single extent map shard before splitting"),
3337
3338 Option("bluestore_extent_map_shard_target_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3339 .set_default(500)
3340 .set_description("Target size (bytes) for a single extent map shard"),
3341
3342 Option("bluestore_extent_map_shard_min_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3343 .set_default(150)
3344 .set_description("Min size (bytes) for a single extent map shard before merging"),
3345
3346 Option("bluestore_extent_map_shard_target_size_slop", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3347 .set_default(.2)
3348 .set_description("Ratio above/below target for a shard when trying to align to an existing extent or blob boundary"),
3349
3350 Option("bluestore_extent_map_inline_shard_prealloc_size", Option::TYPE_UINT, Option::LEVEL_DEV)
3351 .set_default(256)
3352 .set_description("Preallocated buffer for inline shards"),
3353
3354 Option("bluestore_cache_trim_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3355 .set_default(.2)
3356 .set_description("How frequently we trim the bluestore cache"),
3357
3358 Option("bluestore_cache_trim_max_skip_pinned", Option::TYPE_UINT, Option::LEVEL_DEV)
3359 .set_default(64)
3360 .set_description("Max pinned cache entries we consider before giving up"),
3361
3362 Option("bluestore_cache_type", Option::TYPE_STR, Option::LEVEL_DEV)
3363 .set_default("2q")
3364 .set_enum_allowed({"2q", "lru"})
3365 .set_description("Cache replacement algorithm"),
3366
3367 Option("bluestore_2q_cache_kin_ratio", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3368 .set_default(.5)
3369 .set_description("2Q paper suggests .5"),
3370
3371 Option("bluestore_2q_cache_kout_ratio", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3372 .set_default(.5)
3373 .set_description("2Q paper suggests .5"),
3374
3375 Option("bluestore_cache_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3376 .set_default(0)
3377 .set_description("Cache size (in bytes) for BlueStore")
3378 .set_long_description("This includes data and metadata cached by BlueStore as well as memory devoted to rocksdb's cache(s)."),
3379
3380 Option("bluestore_cache_size_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3381 .set_default(1ull*1024*1024*1024)
3382 .set_description("Default bluestore_cache_size for rotational media"),
3383
3384 Option("bluestore_cache_size_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3385 .set_default(3ull*1024*1024*1024)
3386 .set_description("Default bluestore_cache_size for non-rotational (solid state) media"),
3387
3388 Option("bluestore_cache_meta_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3389 .set_default(.01)
3390 .set_description("Ratio of bluestore cache to devote to metadata"),
3391
3392 Option("bluestore_cache_kv_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3393 .set_default(.99)
3394 .set_description("Ratio of bluestore cache to devote to kv database (rocksdb)"),
3395
3396 Option("bluestore_cache_kv_max", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3397 .set_default(512*1024*1024)
3398 .set_description("Max memory (bytes) to devote to kv database (rocksdb)"),
3399
3400 Option("bluestore_kvbackend", Option::TYPE_STR, Option::LEVEL_DEV)
3401 .set_default("rocksdb")
3402 .add_tag("mkfs")
3403 .set_description("Key value database to use for bluestore"),
3404
3405 Option("bluestore_allocator", Option::TYPE_STR, Option::LEVEL_DEV)
181888fb
FG
3406 .set_default("stupid")
3407 .set_enum_allowed({"bitmap", "stupid"})
3408 .set_description("Allocator policy"),
d2e6a577
FG
3409
3410 Option("bluestore_freelist_blocks_per_key", Option::TYPE_INT, Option::LEVEL_DEV)
3411 .set_default(128)
3412 .set_description("Block (and bits) per database key"),
3413
3414 Option("bluestore_bitmapallocator_blocks_per_zone", Option::TYPE_INT, Option::LEVEL_DEV)
3415 .set_default(1024)
3416 .set_description(""),
3417
3418 Option("bluestore_bitmapallocator_span_size", Option::TYPE_INT, Option::LEVEL_DEV)
3419 .set_default(1024)
3420 .set_description(""),
3421
3422 Option("bluestore_max_deferred_txc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3423 .set_default(32)
3424 .set_description("Max transactions with deferred writes that can accumulate before we force flush deferred writes"),
3425
3426 Option("bluestore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3427 .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")
3428 .set_description("Rocksdb options"),
3429
3430 Option("bluestore_fsck_on_mount", Option::TYPE_BOOL, Option::LEVEL_DEV)
3431 .set_default(false)
3432 .set_description("Run fsck at mount"),
3433
3434 Option("bluestore_fsck_on_mount_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3435 .set_default(true)
3436 .set_description("Run deep fsck at mount"),
3437
3438 Option("bluestore_fsck_on_umount", Option::TYPE_BOOL, Option::LEVEL_DEV)
3439 .set_default(false)
3440 .set_description("Run fsck at umount"),
3441
3442 Option("bluestore_fsck_on_umount_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3443 .set_default(true)
3444 .set_description("Run deep fsck at umount"),
3445
3446 Option("bluestore_fsck_on_mkfs", Option::TYPE_BOOL, Option::LEVEL_DEV)
3447 .set_default(true)
3448 .set_description("Run fsck after mkfs"),
3449
3450 Option("bluestore_fsck_on_mkfs_deep", Option::TYPE_BOOL, Option::LEVEL_DEV)
3451 .set_default(false)
3452 .set_description("Run deep fsck after mkfs"),
3453
3454 Option("bluestore_sync_submit_transaction", Option::TYPE_BOOL, Option::LEVEL_DEV)
3455 .set_default(false)
3456 .set_description("Try to submit metadata transaction to rocksdb in queuing thread context"),
3457
3458 Option("bluestore_throttle_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3459 .set_default(64*1024*1024)
3460 .set_safe()
3461 .set_description("Maximum bytes in flight before we throttle IO submission"),
3462
3463 Option("bluestore_throttle_deferred_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3464 .set_default(128*1024*1024)
3465 .set_safe()
3466 .set_description("Maximum bytes for deferred writes before we throttle IO submission"),
3467
3468 Option("bluestore_throttle_cost_per_io", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3469 .set_default(0)
3470 .set_safe()
3471 .set_description("Overhead added to transaction cost (in bytes) for each IO"),
3472
3473 Option("bluestore_throttle_cost_per_io_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3474 .set_default(670000)
3475 .set_safe()
3476 .set_description("Default bluestore_throttle_cost_per_io for rotational media"),
3477
3478 Option("bluestore_throttle_cost_per_io_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3479 .set_default(4000)
3480 .set_safe()
3481 .set_description("Default bluestore_throttle_cost_per_io for non-rotation (solid state) media"),
3482
3483
3484 Option("bluestore_deferred_batch_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3485 .set_default(0)
3486 .set_safe()
3487 .set_description("Max number of deferred writes before we flush the deferred write queue"),
3488
3489 Option("bluestore_deferred_batch_ops_hdd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3490 .set_default(64)
3491 .set_safe()
3492 .set_description("Default bluestore_deferred_batch_ops for rotational media"),
3493
3494 Option("bluestore_deferred_batch_ops_ssd", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3495 .set_default(16)
3496 .set_safe()
3497 .set_description("Default bluestore_deferred_batch_ops for non-rotational (solid state) media"),
3498
3499 Option("bluestore_nid_prealloc", Option::TYPE_INT, Option::LEVEL_DEV)
3500 .set_default(1024)
3501 .set_description("Number of unique object ids to preallocate at a time"),
3502
3503 Option("bluestore_blobid_prealloc", Option::TYPE_UINT, Option::LEVEL_DEV)
3504 .set_default(10240)
3505 .set_description("Number of unique blob ids to preallocate at a time"),
3506
3507 Option("bluestore_clone_cow", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3508 .set_default(true)
3509 .set_safe()
3510 .set_description("Use copy-on-write when cloning objects (versus reading and rewriting them at clone time)"),
3511
3512 Option("bluestore_default_buffered_read", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3513 .set_default(true)
3514 .set_safe()
3515 .set_description("Cache read results by default (unless hinted NOCACHE or WONTNEED)"),
3516
3517 Option("bluestore_default_buffered_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3518 .set_default(false)
3519 .set_safe()
3520 .set_description("Cache writes by default (unless hinted NOCACHE or WONTNEED)"),
3521
3522 Option("bluestore_debug_misc", Option::TYPE_BOOL, Option::LEVEL_DEV)
3523 .set_default(false)
3524 .set_description(""),
3525
3526 Option("bluestore_debug_no_reuse_blocks", Option::TYPE_BOOL, Option::LEVEL_DEV)
3527 .set_default(false)
3528 .set_description(""),
3529
3530 Option("bluestore_debug_small_allocations", Option::TYPE_INT, Option::LEVEL_DEV)
3531 .set_default(0)
3532 .set_description(""),
3533
3534 Option("bluestore_debug_freelist", Option::TYPE_BOOL, Option::LEVEL_DEV)
3535 .set_default(false)
3536 .set_description(""),
3537
3538 Option("bluestore_debug_prefill", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3539 .set_default(0)
3540 .set_description("simulate fragmentation"),
3541
3542 Option("bluestore_debug_prefragment_max", Option::TYPE_INT, Option::LEVEL_DEV)
3543 .set_default(1048576)
3544 .set_description(""),
3545
3546 Option("bluestore_debug_inject_read_err", Option::TYPE_BOOL, Option::LEVEL_DEV)
3547 .set_default(false)
3548 .set_description(""),
3549
3550 Option("bluestore_debug_randomize_serial_transaction", Option::TYPE_INT, Option::LEVEL_DEV)
3551 .set_default(0)
3552 .set_description(""),
3553
3554 Option("bluestore_debug_omit_block_device_write", Option::TYPE_BOOL, Option::LEVEL_DEV)
3555 .set_default(false)
3556 .set_description(""),
3557
3558 Option("bluestore_debug_fsck_abort", Option::TYPE_BOOL, Option::LEVEL_DEV)
3559 .set_default(false)
3560 .set_description(""),
3561
3562 Option("bluestore_debug_omit_kv_commit", Option::TYPE_BOOL, Option::LEVEL_DEV)
3563 .set_default(false)
3564 .set_description(""),
3565
3566 Option("bluestore_debug_permit_any_bdev_label", Option::TYPE_BOOL, Option::LEVEL_DEV)
3567 .set_default(false)
3568 .set_description(""),
3569
3570 Option("bluestore_shard_finishers", Option::TYPE_BOOL, Option::LEVEL_DEV)
3571 .set_default(false)
3572 .set_description(""),
3573
3574 Option("bluestore_debug_random_read_err", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3575 .set_default(0)
3576 .set_description(""),
c07f9fc5 3577
d2e6a577
FG
3578 // -----------------------------------------
3579 // kstore
c07f9fc5 3580
d2e6a577
FG
3581 Option("kstore_max_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3582 .set_default(512)
3583 .set_description(""),
3584
3585 Option("kstore_max_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3586 .set_default(64*1024*1024)
3587 .set_description(""),
c07f9fc5 3588
d2e6a577
FG
3589 Option("kstore_backend", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3590 .set_default("rocksdb")
3591 .set_description(""),
c07f9fc5 3592
d2e6a577
FG
3593 Option("kstore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3594 .set_default("compression=kNoCompression")
3595 .set_description(""),
c07f9fc5 3596
d2e6a577
FG
3597 Option("kstore_fsck_on_mount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3598 .set_default(false)
3599 .set_description(""),
c07f9fc5 3600
d2e6a577
FG
3601 Option("kstore_fsck_on_mount_deep", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3602 .set_default(true)
3603 .set_description(""),
c07f9fc5 3604
d2e6a577
FG
3605 Option("kstore_nid_prealloc", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3606 .set_default(1024)
3607 .set_description(""),
c07f9fc5 3608
d2e6a577
FG
3609 Option("kstore_sync_transaction", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3610 .set_default(false)
3611 .set_description(""),
c07f9fc5 3612
d2e6a577
FG
3613 Option("kstore_sync_submit_transaction", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3614 .set_default(false)
3615 .set_description(""),
c07f9fc5 3616
d2e6a577
FG
3617 Option("kstore_onode_map_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3618 .set_default(1024)
3619 .set_description(""),
c07f9fc5 3620
d2e6a577
FG
3621 Option("kstore_default_stripe_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3622 .set_default(65536)
3623 .set_description(""),
c07f9fc5 3624
d2e6a577
FG
3625 // ---------------------
3626 // filestore
c07f9fc5 3627
d2e6a577
FG
3628 Option("filestore_rocksdb_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3629 .set_default("")
3630 .set_description(""),
c07f9fc5 3631
d2e6a577
FG
3632 Option("filestore_omap_backend", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3633 .set_default("rocksdb")
3634 .set_description(""),
c07f9fc5 3635
d2e6a577
FG
3636 Option("filestore_omap_backend_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3637 .set_default("")
3638 .set_description(""),
c07f9fc5 3639
d2e6a577
FG
3640 Option("filestore_wbthrottle_enable", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3641 .set_default(true)
3642 .set_description(""),
c07f9fc5 3643
d2e6a577
FG
3644 Option("filestore_wbthrottle_btrfs_bytes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3645 .set_default(41943040)
3646 .set_description(""),
c07f9fc5 3647
d2e6a577
FG
3648 Option("filestore_wbthrottle_btrfs_bytes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3649 .set_default(419430400)
3650 .set_description(""),
c07f9fc5 3651
d2e6a577
FG
3652 Option("filestore_wbthrottle_btrfs_ios_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3653 .set_default(500)
3654 .set_description(""),
c07f9fc5 3655
d2e6a577
FG
3656 Option("filestore_wbthrottle_btrfs_ios_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3657 .set_default(5000)
3658 .set_description(""),
c07f9fc5 3659
d2e6a577
FG
3660 Option("filestore_wbthrottle_btrfs_inodes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3661 .set_default(500)
3662 .set_description(""),
c07f9fc5 3663
d2e6a577
FG
3664 Option("filestore_wbthrottle_xfs_bytes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3665 .set_default(41943040)
3666 .set_description(""),
c07f9fc5 3667
d2e6a577
FG
3668 Option("filestore_wbthrottle_xfs_bytes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3669 .set_default(419430400)
3670 .set_description(""),
c07f9fc5 3671
d2e6a577
FG
3672 Option("filestore_wbthrottle_xfs_ios_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3673 .set_default(500)
3674 .set_description(""),
c07f9fc5 3675
d2e6a577
FG
3676 Option("filestore_wbthrottle_xfs_ios_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3677 .set_default(5000)
3678 .set_description(""),
c07f9fc5 3679
d2e6a577
FG
3680 Option("filestore_wbthrottle_xfs_inodes_start_flusher", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3681 .set_default(500)
3682 .set_description(""),
c07f9fc5 3683
d2e6a577
FG
3684 Option("filestore_wbthrottle_btrfs_inodes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3685 .set_default(5000)
3686 .set_description(""),
c07f9fc5 3687
d2e6a577
FG
3688 Option("filestore_wbthrottle_xfs_inodes_hard_limit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3689 .set_default(5000)
3690 .set_description(""),
c07f9fc5 3691
d2e6a577
FG
3692 Option("filestore_odsync_write", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3693 .set_default(false)
3694 .set_description(""),
c07f9fc5 3695
d2e6a577
FG
3696 Option("filestore_index_retry_probability", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3697 .set_default(0)
3698 .set_description(""),
c07f9fc5 3699
d2e6a577
FG
3700 Option("filestore_debug_inject_read_err", Option::TYPE_BOOL, Option::LEVEL_DEV)
3701 .set_default(false)
3702 .set_description(""),
c07f9fc5 3703
d2e6a577
FG
3704 Option("filestore_debug_random_read_err", Option::TYPE_FLOAT, Option::LEVEL_DEV)
3705 .set_default(0)
3706 .set_description(""),
c07f9fc5 3707
d2e6a577
FG
3708 Option("filestore_debug_omap_check", Option::TYPE_BOOL, Option::LEVEL_DEV)
3709 .set_default(false)
3710 .set_description(""),
c07f9fc5 3711
d2e6a577
FG
3712 Option("filestore_omap_header_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3713 .set_default(1024)
3714 .set_description(""),
c07f9fc5 3715
d2e6a577
FG
3716 Option("filestore_max_inline_xattr_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3717 .set_default(0)
3718 .set_description(""),
c07f9fc5 3719
d2e6a577
FG
3720 Option("filestore_max_inline_xattr_size_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3721 .set_default(65536)
3722 .set_description(""),
c07f9fc5 3723
d2e6a577
FG
3724 Option("filestore_max_inline_xattr_size_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3725 .set_default(2048)
3726 .set_description(""),
c07f9fc5 3727
d2e6a577
FG
3728 Option("filestore_max_inline_xattr_size_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3729 .set_default(512)
3730 .set_description(""),
c07f9fc5 3731
d2e6a577
FG
3732 Option("filestore_max_inline_xattrs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3733 .set_default(0)
3734 .set_description(""),
c07f9fc5 3735
d2e6a577
FG
3736 Option("filestore_max_inline_xattrs_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3737 .set_default(10)
3738 .set_description(""),
c07f9fc5 3739
d2e6a577
FG
3740 Option("filestore_max_inline_xattrs_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3741 .set_default(10)
3742 .set_description(""),
c07f9fc5 3743
d2e6a577
FG
3744 Option("filestore_max_inline_xattrs_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3745 .set_default(2)
3746 .set_description(""),
c07f9fc5 3747
d2e6a577
FG
3748 Option("filestore_max_xattr_value_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3749 .set_default(0)
3750 .set_description(""),
c07f9fc5 3751
d2e6a577
FG
3752 Option("filestore_max_xattr_value_size_xfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3753 .set_default(64<<10)
3754 .set_description(""),
c07f9fc5 3755
d2e6a577
FG
3756 Option("filestore_max_xattr_value_size_btrfs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3757 .set_default(64<<10)
3758 .set_description(""),
c07f9fc5 3759
d2e6a577
FG
3760 Option("filestore_max_xattr_value_size_other", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3761 .set_default(1<<10)
3762 .set_description(""),
c07f9fc5 3763
d2e6a577
FG
3764 Option("filestore_sloppy_crc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3765 .set_default(false)
3766 .set_description(""),
c07f9fc5 3767
d2e6a577
FG
3768 Option("filestore_sloppy_crc_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3769 .set_default(65536)
3770 .set_description(""),
c07f9fc5 3771
d2e6a577
FG
3772 Option("filestore_max_alloc_hint_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3773 .set_default(1ULL << 20)
3774 .set_description(""),
c07f9fc5 3775
d2e6a577
FG
3776 Option("filestore_max_sync_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3777 .set_default(5)
3778 .set_description(""),
c07f9fc5 3779
d2e6a577
FG
3780 Option("filestore_min_sync_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3781 .set_default(.01)
3782 .set_description(""),
c07f9fc5 3783
d2e6a577
FG
3784 Option("filestore_btrfs_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3785 .set_default(true)
3786 .set_description(""),
c07f9fc5 3787
d2e6a577
FG
3788 Option("filestore_btrfs_clone_range", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3789 .set_default(true)
3790 .set_description(""),
c07f9fc5 3791
d2e6a577
FG
3792 Option("filestore_zfs_snap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3793 .set_default(false)
3794 .set_description(""),
c07f9fc5 3795
d2e6a577
FG
3796 Option("filestore_fsync_flushes_journal_data", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3797 .set_default(false)
3798 .set_description(""),
c07f9fc5 3799
d2e6a577
FG
3800 Option("filestore_fiemap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3801 .set_default(false)
3802 .set_description(""),
c07f9fc5 3803
d2e6a577
FG
3804 Option("filestore_punch_hole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3805 .set_default(false)
3806 .set_description(""),
c07f9fc5 3807
d2e6a577
FG
3808 Option("filestore_seek_data_hole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3809 .set_default(false)
3810 .set_description(""),
c07f9fc5 3811
d2e6a577
FG
3812 Option("filestore_splice", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3813 .set_default(false)
3814 .set_description(""),
c07f9fc5 3815
d2e6a577
FG
3816 Option("filestore_fadvise", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3817 .set_default(true)
3818 .set_description(""),
c07f9fc5 3819
d2e6a577
FG
3820 Option("filestore_collect_device_partition_information", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3821 .set_default(true)
3822 .set_description(""),
c07f9fc5 3823
d2e6a577
FG
3824 Option("filestore_xfs_extsize", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3825 .set_default(false)
3826 .set_description(""),
c07f9fc5 3827
d2e6a577
FG
3828 Option("filestore_journal_parallel", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3829 .set_default(false)
3830 .set_description(""),
c07f9fc5 3831
d2e6a577
FG
3832 Option("filestore_journal_writeahead", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3833 .set_default(false)
3834 .set_description(""),
c07f9fc5 3835
d2e6a577
FG
3836 Option("filestore_journal_trailing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3837 .set_default(false)
3838 .set_description(""),
c07f9fc5 3839
d2e6a577
FG
3840 Option("filestore_queue_max_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3841 .set_default(50)
3842 .set_description(""),
c07f9fc5 3843
d2e6a577
FG
3844 Option("filestore_queue_max_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3845 .set_default(100 << 20)
3846 .set_description(""),
c07f9fc5 3847
d2e6a577
FG
3848 Option("filestore_caller_concurrency", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3849 .set_default(10)
3850 .set_description(""),
c07f9fc5 3851
d2e6a577
FG
3852 Option("filestore_expected_throughput_bytes", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3853 .set_default(200 << 20)
3854 .set_description(""),
c07f9fc5 3855
d2e6a577
FG
3856 Option("filestore_expected_throughput_ops", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3857 .set_default(200)
3858 .set_description(""),
c07f9fc5 3859
d2e6a577
FG
3860 Option("filestore_queue_max_delay_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3861 .set_default(0)
3862 .set_description(""),
c07f9fc5 3863
d2e6a577
FG
3864 Option("filestore_queue_high_delay_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3865 .set_default(0)
3866 .set_description(""),
c07f9fc5 3867
d2e6a577
FG
3868 Option("filestore_queue_low_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3869 .set_default(0.3)
3870 .set_description(""),
c07f9fc5 3871
d2e6a577
FG
3872 Option("filestore_queue_high_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3873 .set_default(0.9)
3874 .set_description(""),
c07f9fc5 3875
d2e6a577
FG
3876 Option("filestore_op_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3877 .set_default(2)
3878 .set_description(""),
c07f9fc5 3879
d2e6a577
FG
3880 Option("filestore_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3881 .set_default(60)
3882 .set_description(""),
c07f9fc5 3883
d2e6a577
FG
3884 Option("filestore_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3885 .set_default(180)
3886 .set_description(""),
c07f9fc5 3887
d2e6a577
FG
3888 Option("filestore_commit_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3889 .set_default(600)
3890 .set_description(""),
c07f9fc5 3891
d2e6a577
FG
3892 Option("filestore_fiemap_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3893 .set_default(4096)
3894 .set_description(""),
c07f9fc5 3895
d2e6a577
FG
3896 Option("filestore_merge_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3897 .set_default(10)
3898 .set_description(""),
c07f9fc5 3899
d2e6a577
FG
3900 Option("filestore_split_multiple", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3901 .set_default(2)
3902 .set_description(""),
c07f9fc5 3903
d2e6a577
FG
3904 Option("filestore_split_rand_factor", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3905 .set_default(20)
3906 .set_description(""),
c07f9fc5 3907
d2e6a577
FG
3908 Option("filestore_update_to", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3909 .set_default(1000)
3910 .set_description(""),
c07f9fc5 3911
d2e6a577
FG
3912 Option("filestore_blackhole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3913 .set_default(false)
3914 .set_description(""),
c07f9fc5 3915
d2e6a577
FG
3916 Option("filestore_fd_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3917 .set_default(128)
3918 .set_description(""),
c07f9fc5 3919
d2e6a577
FG
3920 Option("filestore_fd_cache_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3921 .set_default(16)
3922 .set_description(""),
c07f9fc5 3923
d2e6a577
FG
3924 Option("filestore_ondisk_finisher_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3925 .set_default(1)
3926 .set_description(""),
c07f9fc5 3927
d2e6a577
FG
3928 Option("filestore_apply_finisher_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3929 .set_default(1)
3930 .set_description(""),
c07f9fc5 3931
d2e6a577
FG
3932 Option("filestore_dump_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
3933 .set_default("")
3934 .set_description(""),
c07f9fc5 3935
d2e6a577
FG
3936 Option("filestore_kill_at", Option::TYPE_INT, Option::LEVEL_DEV)
3937 .set_default(0)
3938 .set_description(""),
c07f9fc5 3939
d2e6a577
FG
3940 Option("filestore_inject_stall", Option::TYPE_INT, Option::LEVEL_DEV)
3941 .set_default(0)
3942 .set_description(""),
c07f9fc5 3943
d2e6a577
FG
3944 Option("filestore_fail_eio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3945 .set_default(true)
3946 .set_description(""),
c07f9fc5 3947
d2e6a577
FG
3948 Option("filestore_debug_verify_split", Option::TYPE_BOOL, Option::LEVEL_DEV)
3949 .set_default(false)
3950 .set_description(""),
c07f9fc5 3951
d2e6a577
FG
3952 Option("journal_dio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3953 .set_default(true)
3954 .set_description(""),
c07f9fc5 3955
d2e6a577
FG
3956 Option("journal_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3957 .set_default(true)
3958 .set_description(""),
c07f9fc5 3959
d2e6a577
FG
3960 Option("journal_force_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3961 .set_default(false)
3962 .set_description(""),
c07f9fc5 3963
d2e6a577
FG
3964 Option("journal_block_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3965 .set_default(4096)
3966 .set_description(""),
c07f9fc5 3967
d2e6a577
FG
3968 Option("journal_max_corrupt_search", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3969 .set_default(10<<20)
3970 .set_description(""),
c07f9fc5 3971
d2e6a577
FG
3972 Option("journal_block_align", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
3973 .set_default(true)
3974 .set_description(""),
c07f9fc5 3975
d2e6a577
FG
3976 Option("journal_write_header_frequency", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
3977 .set_default(0)
3978 .set_description(""),
c07f9fc5 3979
d2e6a577
FG
3980 Option("journal_max_write_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3981 .set_default(10 << 20)
3982 .set_description(""),
c07f9fc5 3983
d2e6a577
FG
3984 Option("journal_max_write_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
3985 .set_default(100)
3986 .set_description(""),
c07f9fc5 3987
d2e6a577
FG
3988 Option("journal_throttle_low_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3989 .set_default(0.6)
3990 .set_description(""),
c07f9fc5 3991
d2e6a577
FG
3992 Option("journal_throttle_high_threshhold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3993 .set_default(0.9)
3994 .set_description(""),
c07f9fc5 3995
d2e6a577
FG
3996 Option("journal_throttle_high_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
3997 .set_default(0)
3998 .set_description(""),
c07f9fc5 3999
d2e6a577
FG
4000 Option("journal_throttle_max_multiple", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4001 .set_default(0)
4002 .set_description(""),
c07f9fc5 4003
d2e6a577
FG
4004 Option("journal_align_min_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4005 .set_default(64 << 10)
4006 .set_description(""),
c07f9fc5 4007
d2e6a577
FG
4008 Option("journal_replay_from", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4009 .set_default(0)
4010 .set_description(""),
c07f9fc5 4011
d2e6a577
FG
4012 Option("journal_zero_on_create", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4013 .set_default(false)
4014 .set_description(""),
c07f9fc5 4015
d2e6a577
FG
4016 Option("journal_ignore_corruption", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4017 .set_default(false)
4018 .set_description(""),
c07f9fc5 4019
d2e6a577
FG
4020 Option("journal_discard", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4021 .set_default(false)
4022 .set_description(""),
c07f9fc5 4023
d2e6a577
FG
4024 Option("fio_dir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4025 .set_default("/tmp/fio")
4026 .set_description(""),
c07f9fc5 4027
d2e6a577
FG
4028 Option("rados_mon_op_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4029 .set_default(0)
4030 .set_description(""),
c07f9fc5 4031
d2e6a577
FG
4032 Option("rados_osd_op_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4033 .set_default(0)
4034 .set_description(""),
c07f9fc5 4035
d2e6a577
FG
4036 Option("rados_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4037 .set_default(false)
4038 .set_description(""),
c07f9fc5 4039
d2e6a577
FG
4040 Option("nss_db_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4041 .set_default("")
4042 .set_description(""),
c07f9fc5 4043
d2e6a577
FG
4044 Option("mgr_module_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4045 .set_default(CEPH_PKGLIBDIR "/mgr")
4046 .set_description(""),
c07f9fc5 4047
d2e6a577
FG
4048 Option("mgr_initial_modules", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4049 .set_default("restful status")
4050 .set_description(""),
c07f9fc5 4051
d2e6a577
FG
4052 Option("mgr_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4053 .set_default("/var/lib/ceph/mgr/$cluster-$id")
4054 .set_description(""),
c07f9fc5 4055
d2e6a577
FG
4056 Option("mgr_tick_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4057 .set_default(2)
4058 .set_description(""),
c07f9fc5 4059
d2e6a577
FG
4060 Option("mgr_stats_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4061 .set_default(5)
4062 .set_description(""),
c07f9fc5 4063
d2e6a577
FG
4064 Option("mgr_client_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4065 .set_default(128*1048576)
4066 .set_description(""),
c07f9fc5 4067
d2e6a577
FG
4068 Option("mgr_client_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4069 .set_default(512)
4070 .set_description(""),
c07f9fc5 4071
d2e6a577
FG
4072 Option("mgr_osd_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4073 .set_default(512*1048576)
4074 .set_description(""),
c07f9fc5 4075
d2e6a577
FG
4076 Option("mgr_osd_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4077 .set_default(8192)
4078 .set_description(""),
c07f9fc5 4079
d2e6a577
FG
4080 Option("mgr_mds_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4081 .set_default(128*1048576)
4082 .set_description(""),
c07f9fc5 4083
d2e6a577
FG
4084 Option("mgr_mds_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4085 .set_default(128)
4086 .set_description(""),
c07f9fc5 4087
d2e6a577
FG
4088 Option("mgr_mon_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4089 .set_default(128*1048576)
4090 .set_description(""),
c07f9fc5 4091
d2e6a577
FG
4092 Option("mgr_mon_messages", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4093 .set_default(128)
4094 .set_description(""),
c07f9fc5 4095
d2e6a577
FG
4096 Option("mgr_connect_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4097 .set_default(1.0)
4098 .set_description(""),
c07f9fc5 4099
d2e6a577
FG
4100 Option("mgr_service_beacon_grace", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4101 .set_default(60.0)
4102 .set_description(""),
c07f9fc5 4103
d2e6a577
FG
4104 Option("mon_mgr_digest_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4105 .set_default(5)
4106 .set_description(""),
c07f9fc5 4107
d2e6a577
FG
4108 Option("mon_mgr_beacon_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4109 .set_default(30)
4110 .set_description(""),
c07f9fc5 4111
d2e6a577
FG
4112 Option("mon_mgr_inactive_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4113 .set_default(60)
4114 .set_description(""),
c07f9fc5 4115
d2e6a577
FG
4116 Option("mon_mgr_mkfs_grace", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4117 .set_default(60)
4118 .set_description(""),
c07f9fc5 4119
d2e6a577
FG
4120 Option("mutex_perf_counter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4121 .set_default(false)
4122 .set_description(""),
c07f9fc5 4123
d2e6a577
FG
4124 Option("throttler_perf_counter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4125 .set_default(true)
4126 .set_description(""),
c07f9fc5 4127
d2e6a577
FG
4128 Option("event_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4129 .set_default(false)
4130 .set_description(""),
c07f9fc5 4131
d2e6a577
FG
4132 Option("internal_safe_to_start_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4133 .set_default(false)
4134 .set_description(""),
c07f9fc5 4135
d2e6a577
FG
4136 Option("debug_deliberately_leak_memory", Option::TYPE_BOOL, Option::LEVEL_DEV)
4137 .set_default(false)
4138 .set_description(""),
4139 });
4140}
c07f9fc5 4141
d2e6a577
FG
4142std::vector<Option> get_rgw_options() {
4143 return std::vector<Option>({
4144 Option("rgw_acl_grants_max_num", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4145 .set_default(100)
4146 .set_description(""),
c07f9fc5 4147
d2e6a577
FG
4148 Option("rgw_max_chunk_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4149 .set_default(4 * 1024 * 1024)
4150 .set_description(""),
c07f9fc5 4151
d2e6a577
FG
4152 Option("rgw_put_obj_min_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4153 .set_default(16 * 1024 * 1024)
4154 .set_description(""),
c07f9fc5 4155
d2e6a577
FG
4156 Option("rgw_put_obj_max_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4157 .set_default(64 * 1024 * 1024)
4158 .set_description(""),
c07f9fc5 4159
d2e6a577
FG
4160 Option("rgw_max_put_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4161 .set_default(5ULL*1024*1024*1024)
4162 .set_description(""),
c07f9fc5 4163
d2e6a577
FG
4164 Option("rgw_max_put_param_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4165 .set_default(1 * 1024 * 1024)
4166 .set_description(""),
c07f9fc5 4167
d2e6a577
FG
4168 Option("rgw_override_bucket_index_max_shards", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4169 .set_default(0)
4170 .set_description(""),
c07f9fc5 4171
d2e6a577
FG
4172 Option("rgw_bucket_index_max_aio", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4173 .set_default(8)
4174 .set_description(""),
c07f9fc5 4175
d2e6a577
FG
4176 Option("rgw_enable_quota_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4177 .set_default(true)
4178 .set_description(""),
c07f9fc5 4179
d2e6a577
FG
4180 Option("rgw_enable_gc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4181 .set_default(true)
4182 .set_description(""),
c07f9fc5 4183
d2e6a577
FG
4184 Option("rgw_enable_lc_threads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4185 .set_default(true)
4186 .set_description(""),
c07f9fc5 4187
d2e6a577
FG
4188 Option("rgw_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4189 .set_default("/var/lib/ceph/radosgw/$cluster-$id")
4190 .set_description(""),
c07f9fc5 4191
d2e6a577
FG
4192 Option("rgw_enable_apis", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4193 .set_default("s3, s3website, swift, swift_auth, admin")
4194 .set_description(""),
c07f9fc5 4195
d2e6a577
FG
4196 Option("rgw_cache_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4197 .set_default(true)
4198 .set_description(""),
c07f9fc5 4199
d2e6a577
FG
4200 Option("rgw_cache_lru_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4201 .set_default(10000)
4202 .set_description(""),
c07f9fc5 4203
d2e6a577
FG
4204 Option("rgw_socket_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4205 .set_default("")
4206 .set_description(""),
c07f9fc5 4207
d2e6a577
FG
4208 Option("rgw_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4209 .set_default("")
4210 .set_description(""),
c07f9fc5 4211
d2e6a577
FG
4212 Option("rgw_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4213 .set_default("")
4214 .set_description(""),
c07f9fc5 4215
d2e6a577
FG
4216 Option("rgw_dns_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4217 .set_default("")
4218 .set_description(""),
c07f9fc5 4219
d2e6a577
FG
4220 Option("rgw_dns_s3website_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4221 .set_default("")
4222 .set_description(""),
c07f9fc5 4223
d2e6a577
FG
4224 Option("rgw_content_length_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4225 .set_default(false)
4226 .set_description(""),
c07f9fc5 4227
d2e6a577
FG
4228 Option("rgw_lifecycle_work_time", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4229 .set_default("00:00-06:00")
4230 .set_description(""),
c07f9fc5 4231
d2e6a577
FG
4232 Option("rgw_lc_lock_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4233 .set_default(60)
4234 .set_description(""),
c07f9fc5 4235
d2e6a577
FG
4236 Option("rgw_lc_max_objs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4237 .set_default(32)
4238 .set_description(""),
c07f9fc5 4239
d2e6a577
FG
4240 Option("rgw_lc_debug_interval", Option::TYPE_INT, Option::LEVEL_DEV)
4241 .set_default(-1)
4242 .set_description(""),
c07f9fc5 4243
d2e6a577
FG
4244 Option("rgw_mp_lock_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4245 .set_default(600)
4246 .set_description(""),
c07f9fc5 4247
d2e6a577
FG
4248 Option("rgw_script_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4249 .set_default("")
4250 .set_description(""),
c07f9fc5 4251
d2e6a577
FG
4252 Option("rgw_request_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4253 .set_default("")
4254 .set_description(""),
c07f9fc5 4255
d2e6a577
FG
4256 Option("rgw_swift_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4257 .set_default("")
4258 .set_description(""),
c07f9fc5 4259
d2e6a577
FG
4260 Option("rgw_swift_url_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4261 .set_default("swift")
4262 .set_description(""),
c07f9fc5 4263
d2e6a577
FG
4264 Option("rgw_swift_auth_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4265 .set_default("")
4266 .set_description(""),
c07f9fc5 4267
d2e6a577
FG
4268 Option("rgw_swift_auth_entry", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4269 .set_default("auth")
4270 .set_description(""),
c07f9fc5 4271
d2e6a577
FG
4272 Option("rgw_swift_tenant_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4273 .set_default("")
4274 .set_description(""),
c07f9fc5 4275
d2e6a577
FG
4276 Option("rgw_swift_account_in_url", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4277 .set_default(false)
4278 .set_description(""),
c07f9fc5 4279
d2e6a577
FG
4280 Option("rgw_swift_enforce_content_length", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4281 .set_default(false)
4282 .set_description(""),
c07f9fc5 4283
d2e6a577
FG
4284 Option("rgw_keystone_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4285 .set_default("")
4286 .set_description(""),
c07f9fc5 4287
d2e6a577
FG
4288 Option("rgw_keystone_admin_token", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4289 .set_default("")
4290 .set_description(""),
c07f9fc5 4291
d2e6a577
FG
4292 Option("rgw_keystone_admin_user", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4293 .set_default("")
4294 .set_description(""),
c07f9fc5 4295
d2e6a577
FG
4296 Option("rgw_keystone_admin_password", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4297 .set_default("")
4298 .set_description(""),
c07f9fc5 4299
d2e6a577
FG
4300 Option("rgw_keystone_admin_tenant", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4301 .set_default("")
4302 .set_description(""),
c07f9fc5 4303
d2e6a577
FG
4304 Option("rgw_keystone_admin_project", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4305 .set_default("")
4306 .set_description(""),
c07f9fc5 4307
d2e6a577
FG
4308 Option("rgw_keystone_admin_domain", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4309 .set_default("")
4310 .set_description(""),
c07f9fc5 4311
d2e6a577
FG
4312 Option("rgw_keystone_barbican_user", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4313 .set_default("")
4314 .set_description(""),
c07f9fc5 4315
d2e6a577
FG
4316 Option("rgw_keystone_barbican_password", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4317 .set_default("")
4318 .set_description(""),
c07f9fc5 4319
d2e6a577
FG
4320 Option("rgw_keystone_barbican_tenant", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4321 .set_default("")
4322 .set_description(""),
c07f9fc5 4323
d2e6a577
FG
4324 Option("rgw_keystone_barbican_project", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4325 .set_default("")
4326 .set_description(""),
c07f9fc5 4327
d2e6a577
FG
4328 Option("rgw_keystone_barbican_domain", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4329 .set_default("")
4330 .set_description(""),
c07f9fc5 4331
d2e6a577
FG
4332 Option("rgw_keystone_api_version", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4333 .set_default(2)
4334 .set_description(""),
c07f9fc5 4335
d2e6a577
FG
4336 Option("rgw_keystone_accepted_roles", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4337 .set_default("Member, admin")
4338 .set_description(""),
c07f9fc5 4339
d2e6a577
FG
4340 Option("rgw_keystone_accepted_admin_roles", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4341 .set_default("")
4342 .set_description(""),
c07f9fc5 4343
d2e6a577
FG
4344 Option("rgw_keystone_token_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4345 .set_default(10000)
4346 .set_description(""),
c07f9fc5 4347
d2e6a577
FG
4348 Option("rgw_keystone_revocation_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4349 .set_default(15 * 60)
4350 .set_description(""),
c07f9fc5 4351
d2e6a577
FG
4352 Option("rgw_keystone_verify_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4353 .set_default(true)
4354 .set_description(""),
c07f9fc5 4355
d2e6a577
FG
4356 Option("rgw_keystone_implicit_tenants", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4357 .set_default(false)
4358 .set_description(""),
c07f9fc5 4359
d2e6a577
FG
4360 Option("rgw_cross_domain_policy", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4361 .set_default("<allow-access-from domain=\"*\" secure=\"false\" />")
4362 .set_description(""),
c07f9fc5 4363
d2e6a577
FG
4364 Option("rgw_healthcheck_disabling_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4365 .set_default("")
4366 .set_description(""),
c07f9fc5 4367
d2e6a577
FG
4368 Option("rgw_s3_auth_use_rados", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4369 .set_default(true)
4370 .set_description(""),
c07f9fc5 4371
d2e6a577
FG
4372 Option("rgw_s3_auth_use_keystone", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4373 .set_default(false)
4374 .set_description(""),
c07f9fc5 4375
d2e6a577
FG
4376 Option("rgw_s3_auth_aws4_force_boto2_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4377 .set_default(true)
4378 .set_description(""),
c07f9fc5 4379
d2e6a577
FG
4380 Option("rgw_barbican_url", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4381 .set_default("")
4382 .set_description(""),
c07f9fc5 4383
d2e6a577
FG
4384 Option("rgw_ldap_uri", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4385 .set_default("ldaps://<ldap.your.domain>")
4386 .set_description(""),
c07f9fc5 4387
d2e6a577
FG
4388 Option("rgw_ldap_binddn", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4389 .set_default("uid=admin,cn=users,dc=example,dc=com")
4390 .set_description(""),
c07f9fc5 4391
d2e6a577
FG
4392 Option("rgw_ldap_searchdn", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4393 .set_default("cn=users,cn=accounts,dc=example,dc=com")
4394 .set_description(""),
c07f9fc5 4395
d2e6a577
FG
4396 Option("rgw_ldap_dnattr", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4397 .set_default("uid")
4398 .set_description(""),
c07f9fc5 4399
d2e6a577
FG
4400 Option("rgw_ldap_secret", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4401 .set_default("/etc/openldap/secret")
4402 .set_description(""),
c07f9fc5 4403
d2e6a577
FG
4404 Option("rgw_s3_auth_use_ldap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4405 .set_default(false)
4406 .set_description(""),
c07f9fc5 4407
d2e6a577
FG
4408 Option("rgw_ldap_searchfilter", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4409 .set_default("")
4410 .set_description(""),
c07f9fc5 4411
d2e6a577
FG
4412 Option("rgw_admin_entry", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4413 .set_default("admin")
4414 .set_description(""),
c07f9fc5 4415
d2e6a577
FG
4416 Option("rgw_enforce_swift_acls", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4417 .set_default(true)
4418 .set_description(""),
c07f9fc5 4419
d2e6a577
FG
4420 Option("rgw_swift_token_expiration", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4421 .set_default(24 * 3600)
4422 .set_description(""),
c07f9fc5 4423
d2e6a577
FG
4424 Option("rgw_print_continue", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4425 .set_default(true)
4426 .set_description(""),
c07f9fc5 4427
d2e6a577
FG
4428 Option("rgw_print_prohibited_content_length", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4429 .set_default(false)
4430 .set_description(""),
c07f9fc5 4431
d2e6a577
FG
4432 Option("rgw_remote_addr_param", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4433 .set_default("REMOTE_ADDR")
4434 .set_description(""),
c07f9fc5 4435
d2e6a577
FG
4436 Option("rgw_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4437 .set_default(10*60)
4438 .set_description(""),
c07f9fc5 4439
d2e6a577
FG
4440 Option("rgw_op_thread_suicide_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4441 .set_default(0)
4442 .set_description(""),
c07f9fc5 4443
d2e6a577
FG
4444 Option("rgw_thread_pool_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4445 .set_default(100)
4446 .set_description(""),
c07f9fc5 4447
d2e6a577
FG
4448 Option("rgw_num_control_oids", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4449 .set_default(8)
4450 .set_description(""),
c07f9fc5 4451
d2e6a577
FG
4452 Option("rgw_num_rados_handles", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4453 .set_default(1)
4454 .set_description(""),
c07f9fc5 4455
d2e6a577
FG
4456 Option("rgw_verify_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4457 .set_default(true)
4458 .set_description(""),
c07f9fc5 4459
d2e6a577
FG
4460 Option("rgw_nfs_lru_lanes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4461 .set_default(5)
4462 .set_description(""),
c07f9fc5 4463
d2e6a577
FG
4464 Option("rgw_nfs_lru_lane_hiwat", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4465 .set_default(911)
4466 .set_description(""),
c07f9fc5 4467
d2e6a577
FG
4468 Option("rgw_nfs_fhcache_partitions", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4469 .set_default(3)
4470 .set_description(""),
c07f9fc5 4471
d2e6a577
FG
4472 Option("rgw_nfs_fhcache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4473 .set_default(2017)
4474 .set_description(""),
c07f9fc5 4475
d2e6a577
FG
4476 Option("rgw_nfs_namespace_expire_secs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4477 .set_default(300)
4478 .set_min(1)
4479 .set_description(""),
4480
4481 Option("rgw_nfs_max_gc", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4482 .set_default(300)
4483 .set_min(1)
4484 .set_description(""),
4485
4486 Option("rgw_nfs_write_completion_interval_s", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4487 .set_default(10)
4488 .set_description(""),
4489
4490 Option("rgw_zone", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4491 .set_default("")
4492 .set_description(""),
4493
4494 Option("rgw_zone_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4495 .set_default(".rgw.root")
4496 .set_description(""),
4497
4498 Option("rgw_default_zone_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4499 .set_default("default.zone")
4500 .set_description(""),
4501
4502 Option("rgw_region", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4503 .set_default("")
4504 .set_description(""),
4505
4506 Option("rgw_region_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4507 .set_default(".rgw.root")
4508 .set_description(""),
4509
4510 Option("rgw_default_region_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4511 .set_default("default.region")
4512 .set_description(""),
4513
4514 Option("rgw_zonegroup", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4515 .set_default("")
4516 .set_description(""),
4517
4518 Option("rgw_zonegroup_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4519 .set_default(".rgw.root")
4520 .set_description(""),
4521
4522 Option("rgw_default_zonegroup_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4523 .set_default("default.zonegroup")
4524 .set_description(""),
4525
4526 Option("rgw_realm", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4527 .set_default("")
4528 .set_description(""),
4529
4530 Option("rgw_realm_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4531 .set_default(".rgw.root")
4532 .set_description(""),
4533
4534 Option("rgw_default_realm_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4535 .set_default("default.realm")
4536 .set_description(""),
4537
4538 Option("rgw_period_root_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4539 .set_default(".rgw.root")
4540 .set_description(""),
4541
4542 Option("rgw_period_latest_epoch_info_oid", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4543 .set_default(".latest_epoch")
4544 .set_description(""),
4545
4546 Option("rgw_log_nonexistent_bucket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4547 .set_default(false)
4548 .set_description(""),
4549
4550 Option("rgw_log_object_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4551 .set_default("%Y-%m-%d-%H-%i-%n")
4552 .set_description(""),
4553
4554 Option("rgw_log_object_name_utc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4555 .set_default(false)
4556 .set_description(""),
4557
4558 Option("rgw_usage_max_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4559 .set_default(32)
4560 .set_description(""),
4561
4562 Option("rgw_usage_max_user_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4563 .set_default(1)
4564 .set_min(1)
4565 .set_description(""),
c07f9fc5 4566
d2e6a577
FG
4567 Option("rgw_enable_ops_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4568 .set_default(false)
4569 .set_description(""),
c07f9fc5 4570
d2e6a577
FG
4571 Option("rgw_enable_usage_log", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4572 .set_default(false)
4573 .set_description(""),
c07f9fc5 4574
d2e6a577
FG
4575 Option("rgw_ops_log_rados", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4576 .set_default(true)
4577 .set_description(""),
c07f9fc5 4578
d2e6a577
FG
4579 Option("rgw_ops_log_socket_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4580 .set_default("")
4581 .set_description(""),
c07f9fc5 4582
d2e6a577
FG
4583 Option("rgw_ops_log_data_backlog", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4584 .set_default(5 << 20)
4585 .set_description(""),
c07f9fc5 4586
d2e6a577
FG
4587 Option("rgw_fcgi_socket_backlog", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4588 .set_default(1024)
4589 .set_description(""),
c07f9fc5 4590
d2e6a577
FG
4591 Option("rgw_usage_log_flush_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4592 .set_default(1024)
4593 .set_description(""),
c07f9fc5 4594
d2e6a577
FG
4595 Option("rgw_usage_log_tick_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4596 .set_default(30)
4597 .set_description(""),
c07f9fc5 4598
d2e6a577
FG
4599 Option("rgw_intent_log_object_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4600 .set_default("%Y-%m-%d-%i-%n")
4601 .set_description(""),
c07f9fc5 4602
d2e6a577
FG
4603 Option("rgw_intent_log_object_name_utc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4604 .set_default(false)
4605 .set_description(""),
c07f9fc5 4606
d2e6a577
FG
4607 Option("rgw_init_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4608 .set_default(300)
4609 .set_description(""),
c07f9fc5 4610
d2e6a577
FG
4611 Option("rgw_mime_types_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4612 .set_default("/etc/mime.types")
4613 .set_description(""),
c07f9fc5 4614
d2e6a577
FG
4615 Option("rgw_gc_max_objs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4616 .set_default(32)
4617 .set_description(""),
c07f9fc5 4618
d2e6a577
FG
4619 Option("rgw_gc_obj_min_wait", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4620 .set_default(2 * 3600)
4621 .set_description(""),
c07f9fc5 4622
d2e6a577
FG
4623 Option("rgw_gc_processor_max_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4624 .set_default(3600)
4625 .set_description(""),
c07f9fc5 4626
d2e6a577
FG
4627 Option("rgw_gc_processor_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4628 .set_default(3600)
4629 .set_description(""),
c07f9fc5 4630
d2e6a577
FG
4631 Option("rgw_s3_success_create_obj_status", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4632 .set_default(0)
4633 .set_description(""),
c07f9fc5 4634
d2e6a577
FG
4635 Option("rgw_resolve_cname", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4636 .set_default(false)
4637 .set_description(""),
c07f9fc5 4638
d2e6a577
FG
4639 Option("rgw_obj_stripe_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4640 .set_default(4 << 20)
4641 .set_description(""),
c07f9fc5 4642
d2e6a577
FG
4643 Option("rgw_extended_http_attrs", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4644 .set_default("")
4645 .set_description(""),
c07f9fc5 4646
d2e6a577
FG
4647 Option("rgw_exit_timeout_secs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4648 .set_default(120)
4649 .set_description(""),
c07f9fc5 4650
d2e6a577
FG
4651 Option("rgw_get_obj_window_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4652 .set_default(16 << 20)
4653 .set_description(""),
c07f9fc5 4654
d2e6a577
FG
4655 Option("rgw_get_obj_max_req_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4656 .set_default(4 << 20)
4657 .set_description(""),
c07f9fc5 4658
d2e6a577
FG
4659 Option("rgw_relaxed_s3_bucket_names", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4660 .set_default(false)
4661 .set_description(""),
c07f9fc5 4662
d2e6a577
FG
4663 Option("rgw_defer_to_bucket_acls", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4664 .set_default("")
4665 .set_description(""),
c07f9fc5 4666
d2e6a577
FG
4667 Option("rgw_list_buckets_max_chunk", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4668 .set_default(1000)
4669 .set_description(""),
c07f9fc5 4670
d2e6a577
FG
4671 Option("rgw_md_log_max_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4672 .set_default(64)
4673 .set_description(""),
c07f9fc5 4674
d2e6a577
FG
4675 Option("rgw_num_zone_opstate_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4676 .set_default(128)
4677 .set_description(""),
c07f9fc5 4678
d2e6a577
FG
4679 Option("rgw_opstate_ratelimit_sec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4680 .set_default(30)
4681 .set_description(""),
c07f9fc5 4682
d2e6a577
FG
4683 Option("rgw_curl_wait_timeout_ms", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4684 .set_default(1000)
4685 .set_description(""),
c07f9fc5 4686
d2e6a577
FG
4687 Option("rgw_copy_obj_progress", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4688 .set_default(true)
4689 .set_description(""),
c07f9fc5 4690
d2e6a577
FG
4691 Option("rgw_copy_obj_progress_every_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4692 .set_default(1024 * 1024)
4693 .set_description(""),
c07f9fc5 4694
d2e6a577
FG
4695 Option("rgw_obj_tombstone_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4696 .set_default(1000)
4697 .set_description(""),
c07f9fc5 4698
d2e6a577
FG
4699 Option("rgw_data_log_window", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4700 .set_default(30)
4701 .set_description(""),
c07f9fc5 4702
d2e6a577
FG
4703 Option("rgw_data_log_changes_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4704 .set_default(1000)
4705 .set_description(""),
c07f9fc5 4706
d2e6a577
FG
4707 Option("rgw_data_log_num_shards", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4708 .set_default(128)
4709 .set_description(""),
c07f9fc5 4710
d2e6a577
FG
4711 Option("rgw_data_log_obj_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4712 .set_default("data_log")
4713 .set_description(""),
c07f9fc5 4714
d2e6a577
FG
4715 Option("rgw_replica_log_obj_prefix", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4716 .set_default("replica_log")
4717 .set_description(""),
c07f9fc5 4718
d2e6a577
FG
4719 Option("rgw_bucket_quota_ttl", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4720 .set_default(600)
4721 .set_description(""),
c07f9fc5 4722
d2e6a577
FG
4723 Option("rgw_bucket_quota_soft_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4724 .set_default(0.95)
4725 .set_description(""),
c07f9fc5 4726
d2e6a577
FG
4727 Option("rgw_bucket_quota_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4728 .set_default(10000)
4729 .set_description(""),
c07f9fc5 4730
d2e6a577
FG
4731 Option("rgw_bucket_default_quota_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4732 .set_default(-1)
4733 .set_description(""),
c07f9fc5 4734
d2e6a577
FG
4735 Option("rgw_bucket_default_quota_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4736 .set_default(-1)
4737 .set_description(""),
c07f9fc5 4738
d2e6a577
FG
4739 Option("rgw_expose_bucket", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4740 .set_default(false)
4741 .set_description(""),
c07f9fc5 4742
d2e6a577
FG
4743 Option("rgw_frontends", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4744 .set_default("civetweb port=7480")
4745 .set_description(""),
c07f9fc5 4746
d2e6a577
FG
4747 Option("rgw_user_quota_bucket_sync_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4748 .set_default(180)
4749 .set_description(""),
c07f9fc5 4750
d2e6a577
FG
4751 Option("rgw_user_quota_sync_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4752 .set_default(3600 * 24)
4753 .set_description(""),
c07f9fc5 4754
d2e6a577
FG
4755 Option("rgw_user_quota_sync_idle_users", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4756 .set_default(false)
4757 .set_description(""),
c07f9fc5 4758
d2e6a577
FG
4759 Option("rgw_user_quota_sync_wait_time", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4760 .set_default(3600 * 24)
4761 .set_description(""),
c07f9fc5 4762
d2e6a577
FG
4763 Option("rgw_user_default_quota_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4764 .set_default(-1)
4765 .set_description(""),
c07f9fc5 4766
d2e6a577
FG
4767 Option("rgw_user_default_quota_max_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4768 .set_default(-1)
4769 .set_description(""),
c07f9fc5 4770
d2e6a577
FG
4771 Option("rgw_multipart_min_part_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4772 .set_default(5 * 1024 * 1024)
4773 .set_description(""),
c07f9fc5 4774
d2e6a577
FG
4775 Option("rgw_multipart_part_upload_limit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4776 .set_default(10000)
4777 .set_description(""),
c07f9fc5 4778
d2e6a577
FG
4779 Option("rgw_max_slo_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4780 .set_default(1000)
4781 .set_description(""),
c07f9fc5 4782
d2e6a577
FG
4783 Option("rgw_olh_pending_timeout_sec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4784 .set_default(3600)
4785 .set_description(""),
c07f9fc5 4786
d2e6a577
FG
4787 Option("rgw_user_max_buckets", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4788 .set_default(1000)
4789 .set_description(""),
c07f9fc5 4790
d2e6a577
FG
4791 Option("rgw_objexp_gc_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4792 .set_default(60 * 10)
4793 .set_description(""),
c07f9fc5 4794
d2e6a577
FG
4795 Option("rgw_objexp_time_step", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4796 .set_default(4096)
4797 .set_description(""),
c07f9fc5 4798
d2e6a577
FG
4799 Option("rgw_objexp_hints_num_shards", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4800 .set_default(127)
4801 .set_description(""),
c07f9fc5 4802
d2e6a577
FG
4803 Option("rgw_objexp_chunk_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4804 .set_default(100)
4805 .set_description(""),
c07f9fc5 4806
d2e6a577
FG
4807 Option("rgw_enable_static_website", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4808 .set_default(false)
4809 .set_description(""),
c07f9fc5 4810
d2e6a577
FG
4811 Option("rgw_log_http_headers", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4812 .set_default("")
4813 .set_description(""),
c07f9fc5 4814
d2e6a577
FG
4815 Option("rgw_num_async_rados_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4816 .set_default(32)
4817 .set_description(""),
c07f9fc5 4818
d2e6a577
FG
4819 Option("rgw_md_notify_interval_msec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4820 .set_default(200)
4821 .set_description(""),
c07f9fc5 4822
d2e6a577
FG
4823 Option("rgw_run_sync_thread", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4824 .set_default(true)
4825 .set_description(""),
c07f9fc5 4826
d2e6a577
FG
4827 Option("rgw_sync_lease_period", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4828 .set_default(120)
4829 .set_description(""),
c07f9fc5 4830
d2e6a577
FG
4831 Option("rgw_sync_log_trim_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4832 .set_default(1200)
4833 .set_description(""),
c07f9fc5 4834
d2e6a577
FG
4835 Option("rgw_sync_data_inject_err_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
4836 .set_default(0)
4837 .set_description(""),
c07f9fc5 4838
d2e6a577
FG
4839 Option("rgw_sync_meta_inject_err_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
4840 .set_default(0)
4841 .set_description(""),
c07f9fc5 4842
d2e6a577
FG
4843 Option("rgw_period_push_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4844 .set_default(2)
4845 .set_description(""),
c07f9fc5 4846
d2e6a577
FG
4847 Option("rgw_period_push_interval_max", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4848 .set_default(30)
4849 .set_description(""),
c07f9fc5 4850
d2e6a577
FG
4851 Option("rgw_safe_max_objects_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4852 .set_default(100*1024)
4853 .set_description(""),
c07f9fc5 4854
d2e6a577
FG
4855 Option("rgw_shard_warning_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
4856 .set_default(90)
4857 .set_description(""),
c07f9fc5 4858
d2e6a577
FG
4859 Option("rgw_swift_versioning_enabled", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4860 .set_default(false)
4861 .set_description(""),
c07f9fc5 4862
d2e6a577
FG
4863 Option("rgw_swift_custom_header", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4864 .set_default("")
4865 .set_description(""),
c07f9fc5 4866
d2e6a577
FG
4867 Option("rgw_swift_need_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4868 .set_default(true)
4869 .set_description(""),
c07f9fc5 4870
d2e6a577
FG
4871 Option("rgw_reshard_num_logs", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4872 .set_default(16)
4873 .set_description(""),
c07f9fc5 4874
d2e6a577
FG
4875 Option("rgw_reshard_bucket_lock_duration", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4876 .set_default(120)
4877 .set_description(""),
c07f9fc5 4878
d2e6a577
FG
4879 Option("rgw_crypt_require_ssl", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4880 .set_default(true)
4881 .set_description(""),
c07f9fc5 4882
d2e6a577
FG
4883 Option("rgw_crypt_default_encryption_key", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4884 .set_default("")
4885 .set_description(""),
4886
4887 Option("rgw_crypt_s3_kms_encryption_keys", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4888 .set_default("")
4889 .set_description(""),
4890
4891 Option("rgw_crypt_suppress_logs", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4892 .set_default(true)
4893 .set_description(""),
4894
4895 Option("rgw_list_bucket_min_readahead", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4896 .set_default(1000)
4897 .set_description(""),
c07f9fc5 4898
d2e6a577
FG
4899 Option("rgw_rest_getusage_op_compat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4900 .set_default(false)
4901 .set_description(""),
c07f9fc5 4902
d2e6a577
FG
4903 Option("rgw_torrent_flag", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
4904 .set_default(false)
4905 .set_description(""),
c07f9fc5 4906
d2e6a577
FG
4907 Option("rgw_torrent_tracker", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4908 .set_default("")
4909 .set_description(""),
c07f9fc5 4910
d2e6a577
FG
4911 Option("rgw_torrent_createby", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4912 .set_default("")
4913 .set_description(""),
c07f9fc5 4914
d2e6a577
FG
4915 Option("rgw_torrent_comment", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4916 .set_default("")
4917 .set_description(""),
c07f9fc5 4918
d2e6a577
FG
4919 Option("rgw_torrent_encoding", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4920 .set_default("")
4921 .set_description(""),
c07f9fc5 4922
d2e6a577
FG
4923 Option("rgw_data_notify_interval_msec", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4924 .set_default(200)
4925 .set_description("data changes notification interval to followers"),
c07f9fc5 4926
d2e6a577
FG
4927 Option("rgw_torrent_origin", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4928 .set_default("")
4929 .set_description(""),
c07f9fc5 4930
d2e6a577
FG
4931 Option("rgw_torrent_sha_unit", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4932 .set_default(512*1024)
4933 .set_description(""),
c07f9fc5 4934
d2e6a577 4935 Option("rgw_dynamic_resharding", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
181888fb 4936 .set_default(true)
d2e6a577 4937 .set_description(""),
c07f9fc5 4938
d2e6a577
FG
4939 Option("rgw_max_objs_per_shard", Option::TYPE_INT, Option::LEVEL_ADVANCED)
4940 .set_default(100000)
4941 .set_description(""),
c07f9fc5 4942
d2e6a577
FG
4943 Option("rgw_reshard_thread_interval", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
4944 .set_default(60 * 10)
4945 .set_description(""),
4946 });
4947}
c07f9fc5 4948
d2e6a577
FG
4949static std::vector<Option> get_rbd_options() {
4950 return std::vector<Option>({
4951 Option("rbd_default_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4952 .set_default("rbd")
181888fb 4953 .set_description("default pool for storing new images")
d2e6a577
FG
4954 .set_validator([](std::string *value, std::string *error_message){
4955 boost::regex pattern("^[^@/]+$");
4956 if (!boost::regex_match (*value, pattern)) {
4957 *value = "rbd";
4958 *error_message = "invalid RBD default pool, resetting to 'rbd'";
4959 }
4960 return 0;
4961 }),
4962
4963 Option("rbd_default_data_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4964 .set_default("")
181888fb 4965 .set_description("default pool for storing data blocks for new images")
d2e6a577
FG
4966 .set_validator([](std::string *value, std::string *error_message){
4967 boost::regex pattern("^[^@/]*$");
4968 if (!boost::regex_match (*value, pattern)) {
4969 *value = "";
4970 *error_message = "ignoring invalid RBD data pool";
4971 }
4972 return 0;
4973 }),
4974
4975 Option("rbd_default_features", Option::TYPE_STR, Option::LEVEL_ADVANCED)
4976 .set_default("layering,exclusive-lock,object-map,fast-diff,deep-flatten")
181888fb
FG
4977 .set_description("default v2 image features for new images")
4978 .set_long_description(
4979 "RBD features are only applicable for v2 images. This setting accepts "
4980 "either an integer bitmask value or comma-delimited string of RBD "
4981 "feature names. This setting is always internally stored as an integer "
4982 "bitmask value. The mapping between feature bitmask value and feature "
4983 "name is as follows: +1 -> layering, +2 -> striping, "
4984 "+4 -> exclusive-lock, +8 -> object-map, +16 -> fast-diff, "
4985 "+32 -> deep-flatten, +64 -> journaling, +128 -> data-pool")
d2e6a577
FG
4986 .set_safe()
4987 .set_validator([](std::string *value, std::string *error_message){
4988 static const std::map<std::string, uint64_t> FEATURE_MAP = {
4989 {RBD_FEATURE_NAME_LAYERING, RBD_FEATURE_LAYERING},
4990 {RBD_FEATURE_NAME_STRIPINGV2, RBD_FEATURE_STRIPINGV2},
4991 {RBD_FEATURE_NAME_EXCLUSIVE_LOCK, RBD_FEATURE_EXCLUSIVE_LOCK},
4992 {RBD_FEATURE_NAME_OBJECT_MAP, RBD_FEATURE_OBJECT_MAP},
4993 {RBD_FEATURE_NAME_FAST_DIFF, RBD_FEATURE_FAST_DIFF},
4994 {RBD_FEATURE_NAME_DEEP_FLATTEN, RBD_FEATURE_DEEP_FLATTEN},
4995 {RBD_FEATURE_NAME_JOURNALING, RBD_FEATURE_JOURNALING},
4996 {RBD_FEATURE_NAME_DATA_POOL, RBD_FEATURE_DATA_POOL},
4997 };
4998 static_assert((RBD_FEATURE_DATA_POOL << 1) > RBD_FEATURES_ALL,
4999 "new RBD feature added");
5000
5001 // convert user-friendly comma delimited feature name list to a bitmask
5002 // that is used by the librbd API
5003 uint64_t features = 0;
5004 error_message->clear();
5005
5006 try {
5007 features = boost::lexical_cast<decltype(features)>(*value);
5008
5009 uint64_t unsupported_features = (features & ~RBD_FEATURES_ALL);
5010 if (unsupported_features != 0ull) {
5011 features &= RBD_FEATURES_ALL;
5012
5013 std::stringstream ss;
5014 ss << "ignoring unknown feature mask 0x"
5015 << std::hex << unsupported_features;
5016 *error_message = ss.str();
5017 }
5018 } catch (const boost::bad_lexical_cast& ) {
5019 int r = 0;
5020 std::vector<std::string> feature_names;
5021 boost::split(feature_names, *value, boost::is_any_of(","));
5022 for (auto feature_name: feature_names) {
5023 boost::trim(feature_name);
5024 auto feature_it = FEATURE_MAP.find(feature_name);
5025 if (feature_it != FEATURE_MAP.end()) {
5026 features += feature_it->second;
5027 } else {
5028 if (!error_message->empty()) {
5029 *error_message += ", ";
5030 }
5031 *error_message += "ignoring unknown feature " + feature_name;
5032 r = -EINVAL;
5033 }
5034 }
c07f9fc5 5035
d2e6a577
FG
5036 if (features == 0 && r == -EINVAL) {
5037 features = RBD_FEATURES_DEFAULT;
5038 }
5039 }
5040 *value = stringify(features);
5041 return 0;
5042 }),
5043
5044 Option("rbd_op_threads", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5045 .set_default(1)
181888fb 5046 .set_description("number of threads to utilize for internal processing"),
d2e6a577
FG
5047
5048 Option("rbd_op_thread_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5049 .set_default(60)
181888fb 5050 .set_description("time in seconds for detecting a hung thread"),
d2e6a577
FG
5051
5052 Option("rbd_non_blocking_aio", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5053 .set_default(true)
181888fb 5054 .set_description("process AIO ops from a dispatch thread to prevent blocking"),
d2e6a577
FG
5055
5056 Option("rbd_cache", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5057 .set_default(true)
181888fb 5058 .set_description("whether to enable caching (writeback unless rbd_cache_max_dirty is 0)"),
d2e6a577
FG
5059
5060 Option("rbd_cache_writethrough_until_flush", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5061 .set_default(true)
181888fb
FG
5062 .set_description("whether to make writeback caching writethrough until "
5063 "flush is called, to be sure the user of librbd will send "
5064 "flushes so that writeback is safe"),
d2e6a577
FG
5065
5066 Option("rbd_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5067 .set_default(32<<20)
181888fb 5068 .set_description("cache size in bytes"),
d2e6a577
FG
5069
5070 Option("rbd_cache_max_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5071 .set_default(24<<20)
181888fb 5072 .set_description("dirty limit in bytes - set to 0 for write-through caching"),
d2e6a577
FG
5073
5074 Option("rbd_cache_target_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5075 .set_default(16<<20)
181888fb 5076 .set_description("target dirty limit in bytes"),
d2e6a577
FG
5077
5078 Option("rbd_cache_max_dirty_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5079 .set_default(1.0)
181888fb 5080 .set_description("seconds in cache before writeback starts"),
d2e6a577
FG
5081
5082 Option("rbd_cache_max_dirty_object", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5083 .set_default(0)
181888fb 5084 .set_description("dirty limit for objects - set to 0 for auto calculate from rbd_cache_size"),
d2e6a577
FG
5085
5086 Option("rbd_cache_block_writes_upfront", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5087 .set_default(false)
181888fb 5088 .set_description("whether to block writes to the cache before the aio_write call completes"),
d2e6a577
FG
5089
5090 Option("rbd_concurrent_management_ops", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5091 .set_default(10)
5092 .set_min(1)
181888fb 5093 .set_description("how many operations can be in flight for a management operation like deleting or resizing an image"),
c07f9fc5 5094
d2e6a577
FG
5095 Option("rbd_balance_snap_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5096 .set_default(false)
181888fb 5097 .set_description("distribute snap read requests to random OSD"),
c07f9fc5 5098
d2e6a577
FG
5099 Option("rbd_localize_snap_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5100 .set_default(false)
181888fb 5101 .set_description("localize snap read requests to closest OSD"),
c07f9fc5 5102
d2e6a577
FG
5103 Option("rbd_balance_parent_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5104 .set_default(false)
181888fb 5105 .set_description("distribute parent read requests to random OSD"),
c07f9fc5 5106
d2e6a577
FG
5107 Option("rbd_localize_parent_reads", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5108 .set_default(false)
181888fb 5109 .set_description("localize parent requests to closest OSD"),
c07f9fc5 5110
d2e6a577
FG
5111 Option("rbd_readahead_trigger_requests", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5112 .set_default(10)
181888fb 5113 .set_description("number of sequential requests necessary to trigger readahead"),
c07f9fc5 5114
d2e6a577
FG
5115 Option("rbd_readahead_max_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5116 .set_default(512 * 1024)
181888fb 5117 .set_description("set to 0 to disable readahead"),
c07f9fc5 5118
d2e6a577
FG
5119 Option("rbd_readahead_disable_after_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5120 .set_default(50 * 1024 * 1024)
181888fb 5121 .set_description("how many bytes are read in total before readahead is disabled"),
c07f9fc5 5122
d2e6a577
FG
5123 Option("rbd_clone_copy_on_read", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5124 .set_default(false)
181888fb 5125 .set_description("copy-up parent image blocks to clone upon read request"),
c07f9fc5 5126
d2e6a577
FG
5127 Option("rbd_blacklist_on_break_lock", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5128 .set_default(true)
181888fb 5129 .set_description("whether to blacklist clients whose lock was broken"),
c07f9fc5 5130
d2e6a577
FG
5131 Option("rbd_blacklist_expire_seconds", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5132 .set_default(0)
181888fb 5133 .set_description("number of seconds to blacklist - set to 0 for OSD default"),
c07f9fc5 5134
d2e6a577
FG
5135 Option("rbd_request_timed_out_seconds", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5136 .set_default(30)
181888fb 5137 .set_description("number of seconds before maintenance request times out"),
c07f9fc5 5138
d2e6a577
FG
5139 Option("rbd_skip_partial_discard", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5140 .set_default(false)
181888fb 5141 .set_description("when trying to discard a range inside an object, set to true to skip zeroing the range"),
c07f9fc5 5142
d2e6a577
FG
5143 Option("rbd_enable_alloc_hint", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5144 .set_default(true)
181888fb 5145 .set_description("when writing a object, it will issue a hint to osd backend to indicate the expected size object need"),
c07f9fc5 5146
d2e6a577
FG
5147 Option("rbd_tracing", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5148 .set_default(false)
181888fb 5149 .set_description("true if LTTng-UST tracepoints should be enabled"),
c07f9fc5 5150
d2e6a577
FG
5151 Option("rbd_blkin_trace_all", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5152 .set_default(false)
181888fb 5153 .set_description("create a blkin trace for all RBD requests"),
c07f9fc5 5154
d2e6a577
FG
5155 Option("rbd_validate_pool", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5156 .set_default(true)
181888fb 5157 .set_description("validate empty pools for RBD compatibility"),
c07f9fc5 5158
d2e6a577
FG
5159 Option("rbd_validate_names", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5160 .set_default(true)
181888fb 5161 .set_description("validate new image names for RBD compatibility"),
d2e6a577
FG
5162
5163 Option("rbd_auto_exclusive_lock_until_manual_request", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5164 .set_default(true)
181888fb 5165 .set_description("automatically acquire/release exclusive lock until it is explicitly requested"),
d2e6a577
FG
5166
5167 Option("rbd_mirroring_resync_after_disconnect", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5168 .set_default(false)
181888fb 5169 .set_description("automatically start image resync after mirroring is disconnected due to being laggy"),
d2e6a577
FG
5170
5171 Option("rbd_mirroring_replay_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5172 .set_default(0)
181888fb 5173 .set_description("time-delay in seconds for rbd-mirror asynchronous replication"),
d2e6a577
FG
5174
5175 Option("rbd_default_format", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5176 .set_default(2)
181888fb 5177 .set_description("default image format for new images"),
d2e6a577
FG
5178
5179 Option("rbd_default_order", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5180 .set_default(22)
181888fb 5181 .set_description("default order (data block object size) for new images"),
d2e6a577
FG
5182
5183 Option("rbd_default_stripe_count", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5184 .set_default(0)
181888fb 5185 .set_description("default stripe count for new images"),
d2e6a577
FG
5186
5187 Option("rbd_default_stripe_unit", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5188 .set_default(0)
181888fb 5189 .set_description("default stripe width for new images"),
d2e6a577
FG
5190
5191 Option("rbd_default_map_options", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5192 .set_default("")
181888fb 5193 .set_description("default krbd map options"),
c07f9fc5 5194
d2e6a577 5195 Option("rbd_journal_order", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
181888fb 5196 .set_min(12)
d2e6a577 5197 .set_default(24)
181888fb 5198 .set_description("default order (object size) for journal data objects"),
c07f9fc5 5199
d2e6a577
FG
5200 Option("rbd_journal_splay_width", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5201 .set_default(4)
181888fb 5202 .set_description("number of active journal objects"),
c07f9fc5 5203
d2e6a577
FG
5204 Option("rbd_journal_commit_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5205 .set_default(5)
181888fb 5206 .set_description("commit time interval, seconds"),
c07f9fc5 5207
d2e6a577
FG
5208 Option("rbd_journal_object_flush_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5209 .set_default(0)
181888fb 5210 .set_description("maximum number of pending commits per journal object"),
c07f9fc5 5211
d2e6a577
FG
5212 Option("rbd_journal_object_flush_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5213 .set_default(0)
181888fb 5214 .set_description("maximum number of pending bytes per journal object"),
c07f9fc5 5215
d2e6a577
FG
5216 Option("rbd_journal_object_flush_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5217 .set_default(0)
181888fb 5218 .set_description("maximum age (in seconds) for pending commits"),
c07f9fc5 5219
d2e6a577
FG
5220 Option("rbd_journal_pool", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5221 .set_default("")
181888fb 5222 .set_description("pool for journal objects"),
c07f9fc5 5223
d2e6a577
FG
5224 Option("rbd_journal_max_payload_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5225 .set_default(16384)
181888fb 5226 .set_description("maximum journal payload size before splitting"),
c07f9fc5 5227
d2e6a577
FG
5228 Option("rbd_journal_max_concurrent_object_sets", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5229 .set_default(0)
181888fb
FG
5230 .set_description("maximum number of object sets a journal client can be behind before it is automatically unregistered"),
5231 });
5232}
c07f9fc5 5233
181888fb
FG
5234static std::vector<Option> get_rbd_mirror_options() {
5235 return std::vector<Option>({
d2e6a577
FG
5236 Option("rbd_mirror_journal_commit_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5237 .set_default(5)
181888fb 5238 .set_description("commit time interval, seconds"),
c07f9fc5 5239
d2e6a577
FG
5240 Option("rbd_mirror_journal_poll_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5241 .set_default(5)
181888fb 5242 .set_description("maximum age (in seconds) between successive journal polls"),
c07f9fc5 5243
d2e6a577
FG
5244 Option("rbd_mirror_journal_max_fetch_bytes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5245 .set_default(32768)
181888fb 5246 .set_description("maximum bytes to read from each journal data object per fetch"),
c07f9fc5 5247
d2e6a577
FG
5248 Option("rbd_mirror_sync_point_update_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5249 .set_default(30)
181888fb 5250 .set_description("number of seconds between each update of the image sync point object number"),
c07f9fc5 5251
d2e6a577
FG
5252 Option("rbd_mirror_concurrent_image_syncs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5253 .set_default(5)
181888fb 5254 .set_description("maximum number of image syncs in parallel"),
c07f9fc5 5255
d2e6a577
FG
5256 Option("rbd_mirror_pool_replayers_refresh_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5257 .set_default(30)
181888fb 5258 .set_description("interval to refresh peers in rbd-mirror daemon"),
c07f9fc5 5259
d2e6a577
FG
5260 Option("rbd_mirror_delete_retry_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5261 .set_default(30)
181888fb 5262 .set_description("interval to check and retry the failed requests in deleter"),
c07f9fc5 5263
d2e6a577
FG
5264 Option("rbd_mirror_image_state_check_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5265 .set_default(30)
5266 .set_min(1)
181888fb 5267 .set_description("interval to get images from pool watcher and set sources in replayer"),
d2e6a577
FG
5268
5269 Option("rbd_mirror_leader_heartbeat_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5270 .set_default(5)
5271 .set_min(1)
181888fb 5272 .set_description("interval (in seconds) between mirror leader heartbeats"),
d2e6a577
FG
5273
5274 Option("rbd_mirror_leader_max_missed_heartbeats", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5275 .set_default(2)
181888fb 5276 .set_description("number of missed heartbeats for non-lock owner to attempt to acquire lock"),
d2e6a577
FG
5277
5278 Option("rbd_mirror_leader_max_acquire_attempts_before_break", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5279 .set_default(3)
181888fb 5280 .set_description("number of failed attempts to acquire lock after missing heartbeats before breaking lock"),
d2e6a577
FG
5281 });
5282}
5283
5284std::vector<Option> get_mds_options() {
5285 return std::vector<Option>({
5286 Option("mds_data", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5287 .set_default("/var/lib/ceph/mds/$cluster-$id")
5288 .set_description(""),
c07f9fc5 5289
d2e6a577
FG
5290 Option("mds_max_file_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5291 .set_default(1ULL << 40)
5292 .set_description(""),
c07f9fc5 5293
d2e6a577
FG
5294 Option("mds_max_xattr_pairs_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5295 .set_default(64 << 10)
5296 .set_description(""),
c07f9fc5 5297
d2e6a577 5298 Option("mds_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
181888fb
FG
5299 .set_default(0)
5300 .set_description("maximum number of inodes in MDS cache (<=0 is unlimited)")
5301 .set_long_description("This tunable is no longer recommended. Use mds_cache_memory_limit."),
5302
5303 Option("mds_cache_memory_limit", Option::TYPE_UINT, Option::LEVEL_BASIC)
5304 .set_default(1*(1LL<<30))
5305 .set_description("target maximum memory usage of MDS cache")
5306 .set_long_description("This sets a target maximum memory usage of the MDS cache and is the primary tunable to limit the MDS memory usage. The MDS will try to stay under a reservation of this limit (by default 95%; 1 - mds_cache_reservation) by trimming unused metadata in its cache and recalling cached items in the client caches. It is possible for the MDS to exceed this limit due to slow recall from clients. The mds_health_cache_threshold (150%) sets a cache full threshold for when the MDS signals a cluster health warning."),
5307
5308 Option("mds_cache_reservation", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5309 .set_default(.05)
5310 .set_description("amount of memory to reserve"),
5311
5312 Option("mds_health_cache_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5313 .set_default(1.5)
5314 .set_description("threshold for cache size to generate health warning"),
c07f9fc5 5315
d2e6a577
FG
5316 Option("mds_cache_mid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5317 .set_default(.7)
5318 .set_description(""),
c07f9fc5 5319
d2e6a577
FG
5320 Option("mds_max_file_recover", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5321 .set_default(32)
5322 .set_description(""),
c07f9fc5 5323
d2e6a577
FG
5324 Option("mds_dir_max_commit_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5325 .set_default(10)
5326 .set_description(""),
c07f9fc5 5327
d2e6a577
FG
5328 Option("mds_dir_keys_per_op", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5329 .set_default(16384)
5330 .set_description(""),
c07f9fc5 5331
d2e6a577
FG
5332 Option("mds_decay_halflife", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5333 .set_default(5)
5334 .set_description(""),
c07f9fc5 5335
d2e6a577
FG
5336 Option("mds_beacon_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5337 .set_default(4)
5338 .set_description(""),
c07f9fc5 5339
d2e6a577
FG
5340 Option("mds_beacon_grace", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5341 .set_default(15)
5342 .set_description(""),
c07f9fc5 5343
d2e6a577
FG
5344 Option("mds_enforce_unique_name", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5345 .set_default(true)
5346 .set_description(""),
c07f9fc5 5347
d2e6a577
FG
5348 Option("mds_blacklist_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5349 .set_default(24.0*60.0)
5350 .set_description(""),
c07f9fc5 5351
d2e6a577
FG
5352 Option("mds_session_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5353 .set_default(60)
5354 .set_description(""),
c07f9fc5 5355
d2e6a577
FG
5356 Option("mds_session_blacklist_on_timeout", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5357 .set_default(true)
5358 .set_description(""),
c07f9fc5 5359
d2e6a577
FG
5360 Option("mds_session_blacklist_on_evict", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5361 .set_default(true)
5362 .set_description(""),
c07f9fc5 5363
d2e6a577
FG
5364 Option("mds_sessionmap_keys_per_op", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5365 .set_default(1024)
5366 .set_description(""),
c07f9fc5 5367
d2e6a577
FG
5368 Option("mds_revoke_cap_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5369 .set_default(60)
5370 .set_description(""),
c07f9fc5 5371
d2e6a577
FG
5372 Option("mds_recall_state_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5373 .set_default(60)
5374 .set_description(""),
c07f9fc5 5375
d2e6a577
FG
5376 Option("mds_freeze_tree_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5377 .set_default(30)
5378 .set_description(""),
c07f9fc5 5379
d2e6a577
FG
5380 Option("mds_session_autoclose", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5381 .set_default(300)
5382 .set_description(""),
c07f9fc5 5383
d2e6a577
FG
5384 Option("mds_health_summarize_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5385 .set_default(10)
5386 .set_description(""),
c07f9fc5 5387
d2e6a577
FG
5388 Option("mds_reconnect_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5389 .set_default(45)
5390 .set_description(""),
c07f9fc5 5391
d2e6a577
FG
5392 Option("mds_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5393 .set_default(5)
5394 .set_description(""),
c07f9fc5 5395
d2e6a577
FG
5396 Option("mds_dirstat_min_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5397 .set_default(1)
5398 .set_description(""),
c07f9fc5 5399
d2e6a577
FG
5400 Option("mds_scatter_nudge_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5401 .set_default(5)
5402 .set_description(""),
c07f9fc5 5403
d2e6a577
FG
5404 Option("mds_client_prealloc_inos", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5405 .set_default(1000)
5406 .set_description(""),
c07f9fc5 5407
d2e6a577
FG
5408 Option("mds_early_reply", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5409 .set_default(true)
5410 .set_description(""),
c07f9fc5 5411
d2e6a577
FG
5412 Option("mds_default_dir_hash", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5413 .set_default(CEPH_STR_HASH_RJENKINS)
5414 .set_description(""),
c07f9fc5 5415
d2e6a577
FG
5416 Option("mds_log_pause", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5417 .set_default(false)
5418 .set_description(""),
c07f9fc5 5419
d2e6a577
FG
5420 Option("mds_log_skip_corrupt_events", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5421 .set_default(false)
5422 .set_description(""),
c07f9fc5 5423
d2e6a577
FG
5424 Option("mds_log_max_events", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5425 .set_default(-1)
5426 .set_description(""),
c07f9fc5 5427
d2e6a577
FG
5428 Option("mds_log_events_per_segment", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5429 .set_default(1024)
5430 .set_description(""),
c07f9fc5 5431
d2e6a577
FG
5432 Option("mds_log_segment_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5433 .set_default(0)
5434 .set_description(""),
c07f9fc5 5435
d2e6a577
FG
5436 Option("mds_log_max_segments", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5437 .set_default(30)
5438 .set_description(""),
c07f9fc5 5439
d2e6a577
FG
5440 Option("mds_log_max_expiring", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5441 .set_default(20)
5442 .set_description(""),
c07f9fc5 5443
d2e6a577
FG
5444 Option("mds_bal_export_pin", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5445 .set_default(true)
5446 .set_description(""),
c07f9fc5 5447
d2e6a577
FG
5448 Option("mds_bal_sample_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5449 .set_default(3.0)
5450 .set_description(""),
c07f9fc5 5451
d2e6a577
FG
5452 Option("mds_bal_replicate_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5453 .set_default(8000)
5454 .set_description(""),
c07f9fc5 5455
d2e6a577
FG
5456 Option("mds_bal_unreplicate_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5457 .set_default(0)
5458 .set_description(""),
c07f9fc5 5459
d2e6a577
FG
5460 Option("mds_bal_frag", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5461 .set_default(true)
5462 .set_description(""),
c07f9fc5 5463
d2e6a577
FG
5464 Option("mds_bal_split_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5465 .set_default(10000)
5466 .set_description(""),
c07f9fc5 5467
d2e6a577
FG
5468 Option("mds_bal_split_rd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5469 .set_default(25000)
5470 .set_description(""),
c07f9fc5 5471
d2e6a577
FG
5472 Option("mds_bal_split_wr", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5473 .set_default(10000)
5474 .set_description(""),
c07f9fc5 5475
d2e6a577
FG
5476 Option("mds_bal_split_bits", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5477 .set_default(3)
5478 .set_description(""),
c07f9fc5 5479
d2e6a577
FG
5480 Option("mds_bal_merge_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5481 .set_default(50)
5482 .set_description(""),
c07f9fc5 5483
d2e6a577
FG
5484 Option("mds_bal_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5485 .set_default(10)
5486 .set_description(""),
c07f9fc5 5487
d2e6a577
FG
5488 Option("mds_bal_fragment_interval", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5489 .set_default(5)
5490 .set_description(""),
c07f9fc5 5491
d2e6a577
FG
5492 Option("mds_bal_fragment_size_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5493 .set_default(10000*10)
5494 .set_description(""),
c07f9fc5 5495
d2e6a577
FG
5496 Option("mds_bal_fragment_fast_factor", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5497 .set_default(1.5)
5498 .set_description(""),
c07f9fc5 5499
d2e6a577
FG
5500 Option("mds_bal_idle_threshold", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5501 .set_default(0)
5502 .set_description(""),
c07f9fc5 5503
d2e6a577
FG
5504 Option("mds_bal_max", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5505 .set_default(-1)
5506 .set_description(""),
c07f9fc5 5507
d2e6a577
FG
5508 Option("mds_bal_max_until", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5509 .set_default(-1)
5510 .set_description(""),
c07f9fc5 5511
d2e6a577
FG
5512 Option("mds_bal_mode", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5513 .set_default(0)
5514 .set_description(""),
c07f9fc5 5515
d2e6a577
FG
5516 Option("mds_bal_min_rebalance", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5517 .set_default(.1)
5518 .set_description(""),
c07f9fc5 5519
d2e6a577
FG
5520 Option("mds_bal_min_start", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5521 .set_default(.2)
5522 .set_description(""),
c07f9fc5 5523
d2e6a577
FG
5524 Option("mds_bal_need_min", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5525 .set_default(.8)
5526 .set_description(""),
c07f9fc5 5527
d2e6a577
FG
5528 Option("mds_bal_need_max", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5529 .set_default(1.2)
5530 .set_description(""),
c07f9fc5 5531
d2e6a577
FG
5532 Option("mds_bal_midchunk", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5533 .set_default(.3)
5534 .set_description(""),
c07f9fc5 5535
d2e6a577
FG
5536 Option("mds_bal_minchunk", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5537 .set_default(.001)
5538 .set_description(""),
c07f9fc5 5539
d2e6a577
FG
5540 Option("mds_bal_target_decay", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5541 .set_default(10.0)
5542 .set_description(""),
c07f9fc5 5543
d2e6a577
FG
5544 Option("mds_replay_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5545 .set_default(1.0)
5546 .set_description(""),
c07f9fc5 5547
d2e6a577
FG
5548 Option("mds_shutdown_check", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5549 .set_default(0)
5550 .set_description(""),
c07f9fc5 5551
d2e6a577
FG
5552 Option("mds_thrash_exports", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5553 .set_default(0)
5554 .set_description(""),
c07f9fc5 5555
d2e6a577
FG
5556 Option("mds_thrash_fragments", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5557 .set_default(0)
5558 .set_description(""),
c07f9fc5 5559
d2e6a577
FG
5560 Option("mds_dump_cache_on_map", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5561 .set_default(false)
5562 .set_description(""),
c07f9fc5 5563
d2e6a577
FG
5564 Option("mds_dump_cache_after_rejoin", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5565 .set_default(false)
5566 .set_description(""),
c07f9fc5 5567
d2e6a577
FG
5568 Option("mds_verify_scatter", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5569 .set_default(false)
5570 .set_description(""),
c07f9fc5 5571
d2e6a577
FG
5572 Option("mds_debug_scatterstat", Option::TYPE_BOOL, Option::LEVEL_DEV)
5573 .set_default(false)
5574 .set_description(""),
c07f9fc5 5575
d2e6a577
FG
5576 Option("mds_debug_frag", Option::TYPE_BOOL, Option::LEVEL_DEV)
5577 .set_default(false)
5578 .set_description(""),
c07f9fc5 5579
d2e6a577
FG
5580 Option("mds_debug_auth_pins", Option::TYPE_BOOL, Option::LEVEL_DEV)
5581 .set_default(false)
5582 .set_description(""),
c07f9fc5 5583
d2e6a577
FG
5584 Option("mds_debug_subtrees", Option::TYPE_BOOL, Option::LEVEL_DEV)
5585 .set_default(false)
5586 .set_description(""),
c07f9fc5 5587
d2e6a577
FG
5588 Option("mds_kill_mdstable_at", Option::TYPE_INT, Option::LEVEL_DEV)
5589 .set_default(0)
5590 .set_description(""),
c07f9fc5 5591
d2e6a577
FG
5592 Option("mds_kill_export_at", Option::TYPE_INT, Option::LEVEL_DEV)
5593 .set_default(0)
5594 .set_description(""),
c07f9fc5 5595
d2e6a577
FG
5596 Option("mds_kill_import_at", Option::TYPE_INT, Option::LEVEL_DEV)
5597 .set_default(0)
5598 .set_description(""),
c07f9fc5 5599
d2e6a577
FG
5600 Option("mds_kill_link_at", Option::TYPE_INT, Option::LEVEL_DEV)
5601 .set_default(0)
5602 .set_description(""),
c07f9fc5 5603
d2e6a577
FG
5604 Option("mds_kill_rename_at", Option::TYPE_INT, Option::LEVEL_DEV)
5605 .set_default(0)
5606 .set_description(""),
c07f9fc5 5607
d2e6a577
FG
5608 Option("mds_kill_openc_at", Option::TYPE_INT, Option::LEVEL_DEV)
5609 .set_default(0)
5610 .set_description(""),
c07f9fc5 5611
d2e6a577
FG
5612 Option("mds_kill_journal_at", Option::TYPE_INT, Option::LEVEL_DEV)
5613 .set_default(0)
5614 .set_description(""),
c07f9fc5 5615
d2e6a577
FG
5616 Option("mds_kill_journal_expire_at", Option::TYPE_INT, Option::LEVEL_DEV)
5617 .set_default(0)
5618 .set_description(""),
c07f9fc5 5619
d2e6a577
FG
5620 Option("mds_kill_journal_replay_at", Option::TYPE_INT, Option::LEVEL_DEV)
5621 .set_default(0)
5622 .set_description(""),
c07f9fc5 5623
d2e6a577
FG
5624 Option("mds_journal_format", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5625 .set_default(1)
5626 .set_description(""),
c07f9fc5 5627
d2e6a577
FG
5628 Option("mds_kill_create_at", Option::TYPE_INT, Option::LEVEL_DEV)
5629 .set_default(0)
5630 .set_description(""),
c07f9fc5 5631
d2e6a577
FG
5632 Option("mds_inject_traceless_reply_probability", Option::TYPE_FLOAT, Option::LEVEL_DEV)
5633 .set_default(0)
5634 .set_description(""),
c07f9fc5 5635
d2e6a577
FG
5636 Option("mds_wipe_sessions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5637 .set_default(0)
5638 .set_description(""),
c07f9fc5 5639
d2e6a577
FG
5640 Option("mds_wipe_ino_prealloc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5641 .set_default(0)
5642 .set_description(""),
c07f9fc5 5643
d2e6a577
FG
5644 Option("mds_skip_ino", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5645 .set_default(0)
5646 .set_description(""),
c07f9fc5 5647
d2e6a577
FG
5648 Option("mds_standby_for_name", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5649 .set_default("")
5650 .set_description(""),
c07f9fc5 5651
d2e6a577
FG
5652 Option("mds_standby_for_rank", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5653 .set_default(-1)
5654 .set_description(""),
c07f9fc5 5655
d2e6a577
FG
5656 Option("mds_standby_for_fscid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5657 .set_default(-1)
5658 .set_description(""),
c07f9fc5 5659
d2e6a577
FG
5660 Option("mds_standby_replay", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5661 .set_default(false)
5662 .set_description(""),
c07f9fc5 5663
d2e6a577
FG
5664 Option("mds_enable_op_tracker", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5665 .set_default(true)
5666 .set_description(""),
c07f9fc5 5667
d2e6a577
FG
5668 Option("mds_op_history_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5669 .set_default(20)
5670 .set_description(""),
c07f9fc5 5671
d2e6a577
FG
5672 Option("mds_op_history_duration", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5673 .set_default(600)
5674 .set_description(""),
c07f9fc5 5675
d2e6a577
FG
5676 Option("mds_op_complaint_time", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5677 .set_default(30)
5678 .set_description(""),
c07f9fc5 5679
d2e6a577
FG
5680 Option("mds_op_log_threshold", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5681 .set_default(5)
5682 .set_description(""),
c07f9fc5 5683
d2e6a577
FG
5684 Option("mds_snap_min_uid", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5685 .set_default(0)
5686 .set_description(""),
c07f9fc5 5687
d2e6a577
FG
5688 Option("mds_snap_max_uid", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5689 .set_default(4294967294)
5690 .set_description(""),
c07f9fc5 5691
d2e6a577
FG
5692 Option("mds_snap_rstat", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5693 .set_default(false)
5694 .set_description(""),
c07f9fc5 5695
d2e6a577
FG
5696 Option("mds_verify_backtrace", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5697 .set_default(1)
5698 .set_description(""),
c07f9fc5 5699
d2e6a577
FG
5700 Option("mds_max_completed_flushes", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5701 .set_default(100000)
5702 .set_description(""),
c07f9fc5 5703
d2e6a577
FG
5704 Option("mds_max_completed_requests", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5705 .set_default(100000)
5706 .set_description(""),
c07f9fc5 5707
d2e6a577
FG
5708 Option("mds_action_on_write_error", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5709 .set_default(1)
5710 .set_description(""),
c07f9fc5 5711
d2e6a577
FG
5712 Option("mds_mon_shutdown_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5713 .set_default(5)
5714 .set_description(""),
c07f9fc5 5715
d2e6a577
FG
5716 Option("mds_max_purge_files", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5717 .set_default(64)
5718 .set_description(""),
c07f9fc5 5719
d2e6a577
FG
5720 Option("mds_max_purge_ops", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5721 .set_default(8192)
5722 .set_description(""),
c07f9fc5 5723
d2e6a577
FG
5724 Option("mds_max_purge_ops_per_pg", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5725 .set_default(0.5)
5726 .set_description(""),
c07f9fc5 5727
d2e6a577
FG
5728 Option("mds_purge_queue_busy_flush_period", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5729 .set_default(1.0)
5730 .set_description(""),
c07f9fc5 5731
d2e6a577
FG
5732 Option("mds_root_ino_uid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5733 .set_default(0)
5734 .set_description(""),
c07f9fc5 5735
d2e6a577
FG
5736 Option("mds_root_ino_gid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5737 .set_default(0)
5738 .set_description(""),
c07f9fc5 5739
d2e6a577
FG
5740 Option("mds_max_scrub_ops_in_progress", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5741 .set_default(5)
5742 .set_description(""),
c07f9fc5 5743
d2e6a577
FG
5744 Option("mds_damage_table_max_entries", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5745 .set_default(10000)
5746 .set_description(""),
5747
5748 Option("mds_client_writeable_range_max_inc_objs", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5749 .set_default(1024)
5750 .set_description(""),
5751 });
5752}
c07f9fc5 5753
d2e6a577
FG
5754std::vector<Option> get_mds_client_options() {
5755 return std::vector<Option>({
5756 Option("client_cache_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5757 .set_default(16384)
5758 .set_description(""),
c07f9fc5 5759
d2e6a577
FG
5760 Option("client_cache_mid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5761 .set_default(.75)
5762 .set_description(""),
c07f9fc5 5763
d2e6a577
FG
5764 Option("client_use_random_mds", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5765 .set_default(false)
5766 .set_description(""),
c07f9fc5 5767
d2e6a577
FG
5768 Option("client_mount_timeout", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5769 .set_default(300.0)
5770 .set_description(""),
c07f9fc5 5771
d2e6a577
FG
5772 Option("client_tick_interval", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5773 .set_default(1.0)
5774 .set_description(""),
c07f9fc5 5775
d2e6a577
FG
5776 Option("client_trace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5777 .set_default("")
5778 .set_description(""),
c07f9fc5 5779
d2e6a577
FG
5780 Option("client_readahead_min", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5781 .set_default(128*1024)
5782 .set_description(""),
c07f9fc5 5783
d2e6a577
FG
5784 Option("client_readahead_max_bytes", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5785 .set_default(0)
5786 .set_description(""),
c07f9fc5 5787
d2e6a577
FG
5788 Option("client_readahead_max_periods", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5789 .set_default(4)
5790 .set_description(""),
c07f9fc5 5791
d2e6a577
FG
5792 Option("client_reconnect_stale", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5793 .set_default(false)
5794 .set_description(""),
c07f9fc5 5795
d2e6a577
FG
5796 Option("client_snapdir", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5797 .set_default(".snap")
5798 .set_description(""),
c07f9fc5 5799
d2e6a577
FG
5800 Option("client_mountpoint", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5801 .set_default("/")
5802 .set_description(""),
c07f9fc5 5803
d2e6a577
FG
5804 Option("client_mount_uid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5805 .set_default(-1)
5806 .set_description(""),
c07f9fc5 5807
d2e6a577
FG
5808 Option("client_mount_gid", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5809 .set_default(-1)
5810 .set_description(""),
c07f9fc5 5811
d2e6a577
FG
5812 Option("client_notify_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5813 .set_default(10)
5814 .set_description(""),
c07f9fc5 5815
d2e6a577
FG
5816 Option("osd_client_watch_timeout", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5817 .set_default(30)
5818 .set_description(""),
c07f9fc5 5819
d2e6a577
FG
5820 Option("client_caps_release_delay", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5821 .set_default(5)
5822 .set_description(""),
c07f9fc5 5823
d2e6a577
FG
5824 Option("client_quota_df", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5825 .set_default(true)
5826 .set_description(""),
c07f9fc5 5827
d2e6a577
FG
5828 Option("client_oc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5829 .set_default(true)
5830 .set_description(""),
c07f9fc5 5831
d2e6a577
FG
5832 Option("client_oc_size", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5833 .set_default(1024*1024* 200)
5834 .set_description(""),
c07f9fc5 5835
d2e6a577
FG
5836 Option("client_oc_max_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5837 .set_default(1024*1024* 100)
5838 .set_description(""),
c07f9fc5 5839
d2e6a577
FG
5840 Option("client_oc_target_dirty", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5841 .set_default(1024*1024* 8)
5842 .set_description(""),
c07f9fc5 5843
d2e6a577
FG
5844 Option("client_oc_max_dirty_age", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
5845 .set_default(5.0)
5846 .set_description(""),
c07f9fc5 5847
d2e6a577
FG
5848 Option("client_oc_max_objects", Option::TYPE_INT, Option::LEVEL_ADVANCED)
5849 .set_default(1000)
5850 .set_description(""),
c07f9fc5 5851
d2e6a577
FG
5852 Option("client_debug_getattr_caps", Option::TYPE_BOOL, Option::LEVEL_DEV)
5853 .set_default(false)
5854 .set_description(""),
5855
5856 Option("client_debug_force_sync_read", Option::TYPE_BOOL, Option::LEVEL_DEV)
5857 .set_default(false)
5858 .set_description(""),
c07f9fc5 5859
d2e6a577
FG
5860 Option("client_debug_inject_tick_delay", Option::TYPE_INT, Option::LEVEL_DEV)
5861 .set_default(0)
5862 .set_description(""),
c07f9fc5 5863
d2e6a577
FG
5864 Option("client_max_inline_size", Option::TYPE_UINT, Option::LEVEL_ADVANCED)
5865 .set_default(4096)
5866 .set_description(""),
c07f9fc5 5867
d2e6a577
FG
5868 Option("client_inject_release_failure", Option::TYPE_BOOL, Option::LEVEL_DEV)
5869 .set_default(false)
5870 .set_description(""),
c07f9fc5 5871
d2e6a577
FG
5872 Option("client_inject_fixed_oldest_tid", Option::TYPE_BOOL, Option::LEVEL_DEV)
5873 .set_default(false)
5874 .set_description(""),
c07f9fc5 5875
d2e6a577
FG
5876 Option("client_metadata", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5877 .set_default("")
5878 .set_description(""),
c07f9fc5 5879
d2e6a577
FG
5880 Option("client_acl_type", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5881 .set_default("")
5882 .set_description(""),
c07f9fc5 5883
d2e6a577
FG
5884 Option("client_permissions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5885 .set_default(true)
5886 .set_description(""),
c07f9fc5 5887
d2e6a577
FG
5888 Option("client_dirsize_rbytes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5889 .set_default(true)
5890 .set_description(""),
c07f9fc5 5891
d2e6a577
FG
5892 Option("fuse_use_invalidate_cb", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5893 .set_default(true)
5894 .set_description(""),
c07f9fc5 5895
d2e6a577
FG
5896 Option("fuse_disable_pagecache", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5897 .set_default(false)
5898 .set_description(""),
c07f9fc5 5899
d2e6a577
FG
5900 Option("fuse_allow_other", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5901 .set_default(true)
5902 .set_description(""),
c07f9fc5 5903
d2e6a577
FG
5904 Option("fuse_default_permissions", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5905 .set_default(false)
5906 .set_description(""),
c07f9fc5 5907
d2e6a577
FG
5908 Option("fuse_big_writes", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5909 .set_default(true)
5910 .set_description(""),
c07f9fc5 5911
d2e6a577
FG
5912 Option("fuse_atomic_o_trunc", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5913 .set_default(true)
5914 .set_description(""),
c07f9fc5 5915
d2e6a577
FG
5916 Option("fuse_debug", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5917 .set_default(false)
5918 .set_description(""),
c07f9fc5 5919
d2e6a577
FG
5920 Option("fuse_multithreaded", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5921 .set_default(true)
5922 .set_description(""),
c07f9fc5 5923
d2e6a577
FG
5924 Option("fuse_require_active_mds", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5925 .set_default(true)
5926 .set_description(""),
c07f9fc5 5927
d2e6a577
FG
5928 Option("fuse_syncfs_on_mksnap", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5929 .set_default(true)
5930 .set_description(""),
c07f9fc5 5931
d2e6a577 5932 Option("fuse_set_user_groups", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
181888fb
FG
5933 .set_default(true)
5934 .set_description("check for ceph-fuse to consider supplementary groups for permissions"),
c07f9fc5 5935
d2e6a577 5936 Option("client_try_dentry_invalidate", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
181888fb 5937 .set_default(false)
d2e6a577 5938 .set_description(""),
c07f9fc5 5939
d2e6a577
FG
5940 Option("client_die_on_failed_remount", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5941 .set_default(true)
5942 .set_description(""),
c07f9fc5 5943
d2e6a577
FG
5944 Option("client_check_pool_perm", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5945 .set_default(true)
5946 .set_description(""),
5947
5948 Option("client_use_faked_inos", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
5949 .set_default(false)
5950 .set_description(""),
5951
5952 Option("client_mds_namespace", Option::TYPE_STR, Option::LEVEL_ADVANCED)
5953 .set_default("")
5954 .set_description(""),
5955 });
5956}
c07f9fc5
FG
5957
5958
5959static std::vector<Option> build_options()
5960{
d2e6a577 5961 std::vector<Option> result = get_global_options();
c07f9fc5 5962
d2e6a577 5963 auto ingest = [&result](std::vector<Option>&& options, const char* svc) {
c07f9fc5
FG
5964 for (const auto &o_in : options) {
5965 Option o(o_in);
5966 o.add_service(svc);
5967 result.push_back(o);
5968 }
5969 };
5970
d2e6a577
FG
5971 ingest(get_rgw_options(), "rgw");
5972 ingest(get_rbd_options(), "rbd");
181888fb 5973 ingest(get_rbd_mirror_options(), "rbd-mirror");
d2e6a577
FG
5974 ingest(get_mds_options(), "mds");
5975 ingest(get_mds_client_options(), "mds_client");
c07f9fc5
FG
5976
5977 return result;
5978}
5979
5980const std::vector<Option> ceph_options = build_options();