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