2010-06-14 14:27:40 +00:00
|
|
|
#
|
|
|
|
# MARS configuration
|
|
|
|
#
|
2011-08-25 10:16:32 +00:00
|
|
|
|
2010-06-14 14:27:40 +00:00
|
|
|
config MARS
|
2011-11-14 17:52:05 +00:00
|
|
|
tristate "storage system MARS (EXPERIMENTAL)"
|
2012-10-02 07:54:09 +00:00
|
|
|
depends on BLOCK && HIGH_RES_TIMERS
|
2010-06-14 14:27:40 +00:00
|
|
|
default n
|
|
|
|
---help---
|
2011-12-09 13:32:40 +00:00
|
|
|
Experimental storage System. Only compile as a module!
|
2010-06-14 14:27:40 +00:00
|
|
|
|
2012-02-08 11:44:42 +00:00
|
|
|
config MARS_DEBUG
|
|
|
|
bool "enable runtime checks in MARS"
|
|
|
|
depends on MARS
|
|
|
|
default n
|
|
|
|
---help---
|
|
|
|
OFF for production systems. ON for testing!
|
|
|
|
|
2011-08-25 10:16:32 +00:00
|
|
|
config MARS_BIGMODULE
|
|
|
|
tristate "compile all MARS modules into a single kernel module"
|
|
|
|
depends on MARS
|
|
|
|
default m
|
|
|
|
select MARS_HAVE_BIGMODULE
|
|
|
|
---help---
|
2011-12-09 13:32:40 +00:00
|
|
|
Normally ON. Switch off only for EXPERIMENTS!
|
2011-08-25 10:16:32 +00:00
|
|
|
|
2012-01-31 15:50:06 +00:00
|
|
|
config MARS_MEM_RETRY
|
|
|
|
bool "make MARS memory allocation more robust"
|
|
|
|
depends on MARS
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
Normally ON. Switch only off for systems having very low memory.
|
|
|
|
|
2012-01-11 15:16:39 +00:00
|
|
|
config MARS_LOGFILE
|
|
|
|
string "full path to the logfile"
|
|
|
|
depends on MARS
|
|
|
|
default "/mars/log.txt"
|
|
|
|
---help---
|
|
|
|
Path to the logfile where all MARS messages go to.
|
|
|
|
The logfile must already exist in order to be appended.
|
|
|
|
Logiles can be rotated by renaming them and creating
|
|
|
|
a new empty file in place of the old one.
|
|
|
|
When none exists, messages are either reported to syslog when
|
|
|
|
CONFIG_MARS_USE_SYSLOG is set, or else MARS will be qiet.
|
|
|
|
|
2012-01-10 12:55:50 +00:00
|
|
|
config MARS_USE_SYSLOG
|
|
|
|
bool "use syslog for messages"
|
|
|
|
depends on MARS
|
|
|
|
default n
|
|
|
|
---help---
|
|
|
|
Normally OFF.
|
2012-01-11 15:16:39 +00:00
|
|
|
When switched on (and no logfile exists), the syslog
|
|
|
|
may get flooded by printk() messages, leading to performance
|
|
|
|
problems if remote syslog forwarding is enabled (and possibly
|
|
|
|
in other cases). Thus we recommend to prefer file logging.
|
|
|
|
When this option is off, the logfile will be used (if one exists).
|
2012-01-10 12:55:50 +00:00
|
|
|
|
2012-01-17 10:48:56 +00:00
|
|
|
config MARS_SCAN_INTERVAL
|
|
|
|
int "re-scanning of symlinks in /mars/ (in seconds)"
|
|
|
|
depends on MARS
|
2012-01-17 14:37:14 +00:00
|
|
|
default 5
|
|
|
|
---help---
|
|
|
|
May influence the system load; dont use too low nubmers.
|
|
|
|
|
|
|
|
config MARS_PROPAGATE_INTERVAL
|
|
|
|
int "network propagation delay of changes in /mars/ (in seconds)"
|
|
|
|
depends on MARS
|
|
|
|
default 5
|
2012-01-17 10:48:56 +00:00
|
|
|
---help---
|
|
|
|
May influence the system load; dont use too low nubmers.
|
|
|
|
|
2012-08-03 12:55:00 +00:00
|
|
|
config MARS_SYNC_FLIP_INTERVAL
|
|
|
|
int "interrpt sync by logfile update after (seconds)"
|
|
|
|
depends on MARS
|
|
|
|
default 60
|
|
|
|
---help---
|
|
|
|
0 = OFF. Normally ON.
|
|
|
|
When disabled, application of logfiles may wait for
|
|
|
|
a very time, until full sync has finished. As a
|
|
|
|
consequence, your /mars/ filesystem may run out
|
|
|
|
of space. When enabled, the applied logfiles can
|
|
|
|
be deleted, freeing space on /mars/. Therefore,
|
|
|
|
will usually want this. However, you may increase
|
|
|
|
the time interval to increase throughput in favour
|
|
|
|
of latency.
|
|
|
|
|
2012-01-17 10:48:56 +00:00
|
|
|
config MARS_FAST_TRIGGER
|
|
|
|
bool "fast internal triggering"
|
|
|
|
depends on MARS
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
Normally ON. Switch off in case of endless trigger loops
|
|
|
|
|
2012-01-23 12:39:08 +00:00
|
|
|
config MARS_NETIO_TIMEOUT
|
|
|
|
int "timeout for remote IO operations (in seconds)"
|
|
|
|
depends on MARS
|
|
|
|
default 30
|
|
|
|
---help---
|
|
|
|
In case of network hangs, don't wait forever, but rather
|
|
|
|
abort with -ENOTCONN
|
|
|
|
when == 0, wait forever (may lead to hanging operations
|
|
|
|
similar to NFS hard mounts)
|
|
|
|
|
2011-11-14 17:52:05 +00:00
|
|
|
config MARS_MEM_PREALLOC
|
2011-12-09 13:32:40 +00:00
|
|
|
bool "avoid memory fragmentation by preallocation"
|
2011-11-14 17:52:05 +00:00
|
|
|
depends on MARS
|
|
|
|
default y
|
|
|
|
---help---
|
2011-12-09 13:32:40 +00:00
|
|
|
Normally ON. Switch off only for EXPERIMENTS!
|
2011-11-14 17:52:05 +00:00
|
|
|
|
2012-08-02 08:47:42 +00:00
|
|
|
config MARS_FAST_FULLSYNC
|
|
|
|
bool "decrease network traffic at initial sync"
|
|
|
|
depends on MARS
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
Normally ON.
|
|
|
|
When on, both sides will read the data, compute a md5
|
|
|
|
checksum, and compare them. Only in case the checksum
|
|
|
|
mismatches, the data will be actually transferred over
|
|
|
|
the network. This may increase the IO traffic in favour
|
|
|
|
of network traffic. Usually it does no harm to re-read
|
|
|
|
the same data twice (only in case of mismatches) over bio
|
|
|
|
because RAID controllers will usually cache their data
|
|
|
|
for some time. In case of buffered aio reads from filesystems,
|
|
|
|
the data is cached by the kernel anyway.
|
|
|
|
|
2012-02-08 18:12:57 +00:00
|
|
|
config MARS_LOADAVG_LIMIT
|
|
|
|
bool "stall copy traffic when loadavg gets too high"
|
|
|
|
depends on MARS
|
|
|
|
default y
|
|
|
|
---help---
|
|
|
|
Normally ON.
|
|
|
|
|
2012-02-20 09:34:42 +00:00
|
|
|
config MARS_LINEAR_CACHE_SIZE
|
|
|
|
int "cache size for linear scans of logfiles (in MB)"
|
|
|
|
depends on MARS
|
|
|
|
default 64
|
|
|
|
---help---
|
|
|
|
Setting this to high numbers (or disabling by setting to 0)
|
|
|
|
may disturb the application performance, because MARS will
|
|
|
|
pollute the page cache with pages from the MARS logfiles.
|
|
|
|
Setting this to low numbers will prevent such a pollution,
|
|
|
|
at the cost of (sometimes) more IO operations.
|
|
|
|
EXCEPTION: when you run MARS on a standalone storage server
|
|
|
|
(e.g. exporting devices via iSCSI), you should use high numbers
|
|
|
|
here or even disable this feature. THEN (and ONLY THEN)
|
|
|
|
you want MARS to use all the memory for its own caching,
|
|
|
|
since there is no other application competing for main memory.
|
|
|
|
In unsure, take the default of 64.
|
|
|
|
|
2011-12-09 13:32:40 +00:00
|
|
|
#config MARS_HUNG
|
|
|
|
# bool "hangup on kernel stacktrace (EXPERIMENTAL!!!)"
|
|
|
|
# depends on MARS && MARS_BIGMODULE!=m
|
|
|
|
# default n
|
|
|
|
# ---help---
|
|
|
|
# Normally OFF. Switch on only for EXPERIMENTS!
|
2011-11-03 11:17:59 +00:00
|
|
|
|
|
|
|
config MARS_LOGROT
|
2011-12-09 13:32:40 +00:00
|
|
|
bool "allow logrotate during operation"
|
2011-11-03 11:17:59 +00:00
|
|
|
depends on MARS
|
2011-11-08 12:33:13 +00:00
|
|
|
default y
|
|
|
|
---help---
|
2011-12-09 13:32:40 +00:00
|
|
|
Normally ON. Switch off only for EXPERIMENTS!
|
2011-11-08 12:33:13 +00:00
|
|
|
|
2012-02-28 11:02:35 +00:00
|
|
|
config MARS_LOGROT_AUTO
|
|
|
|
int "automatic logrotate when logfile exceeds size (in GB)"
|
|
|
|
depends on MARS_LOGROT
|
2012-03-06 11:56:48 +00:00
|
|
|
default 32
|
2012-02-28 11:02:35 +00:00
|
|
|
---help---
|
|
|
|
You could switch this off by setting to 0. However, deletion
|
|
|
|
of really huge logfile can take several minutes, or even substantial
|
|
|
|
fractions of hours (depending on the underlying filesystem).
|
|
|
|
Thus it is highly recommended to limit the logfile size to some
|
|
|
|
reasonable maximum size. Switch only off for experiments!
|
|
|
|
|
2011-11-08 12:33:13 +00:00
|
|
|
config MARS_MIN_SPACE
|
2011-12-09 13:32:40 +00:00
|
|
|
bool "check for filesystem overflow in /mars"
|
2011-11-08 12:33:13 +00:00
|
|
|
depends on MARS
|
|
|
|
default y
|
2011-11-03 11:17:59 +00:00
|
|
|
---help---
|
2011-12-09 13:32:40 +00:00
|
|
|
Normally ON. Switch off only for EXPERIMENTS!
|
2011-11-14 13:12:33 +00:00
|
|
|
|
2012-01-23 17:40:15 +00:00
|
|
|
config MARS_MIN_SPACE_BASE
|
|
|
|
int "free space in /mars/ (hard limit in gigabytes)"
|
2012-03-06 11:56:48 +00:00
|
|
|
depends on MARS_MIN_SPACE
|
2012-01-23 17:40:15 +00:00
|
|
|
default 8
|
|
|
|
---help---
|
2012-08-14 14:32:06 +00:00
|
|
|
when this limit is exceeded, transaction logging to /mars/
|
2012-01-23 17:40:15 +00:00
|
|
|
will stop. This affects not only write IO to /dev/mars/*,
|
2012-08-14 14:32:06 +00:00
|
|
|
but also logfile transfers etc. As a consequence, writes
|
|
|
|
on the primary will directly go to the device, and the secondaries
|
|
|
|
will be outdated.
|
2012-01-23 17:40:15 +00:00
|
|
|
In order to retain full operations, you _need_ to implement
|
|
|
|
your own monitoring which _must_ warn you long before this
|
2012-08-14 14:32:06 +00:00
|
|
|
hard limit catches you. If it already has caught you, it
|
|
|
|
will be too late: you have to recover by hand, e.g. by
|
|
|
|
starting a full sync.
|
2012-01-23 17:40:15 +00:00
|
|
|
|
|
|
|
config MARS_MIN_SPACE_PERCENT
|
|
|
|
int "free space in /mars/ (hard limit in percent)"
|
2012-03-06 11:56:48 +00:00
|
|
|
depends on MARS_MIN_SPACE
|
2012-01-23 17:40:15 +00:00
|
|
|
default 0
|
|
|
|
---help---
|
|
|
|
this limit is in addition to CONFIG_MARS_MIN_SPACE_BASE.
|
|
|
|
|
2012-03-06 11:56:48 +00:00
|
|
|
config MARS_LOGDELETE_AUTO
|
|
|
|
int "automatic log-delete when space in /mars/ gets short (in GB)"
|
|
|
|
depends on MARS_MIN_SPACE
|
|
|
|
default 8
|
|
|
|
---help---
|
|
|
|
This limit is in addition to CONFIG_MARS_MIN_SPACE_BASE
|
|
|
|
and CONFIG_MARS_MIN_SPACE_PERCENT.
|
|
|
|
You can switch this off by setting to 0.
|
|
|
|
When the limit is hit, MARS tries to delete the eldest logfile,
|
|
|
|
when possible, in order to free some space.
|
|
|
|
Notice: deleting logfiles on a primary which have not yet
|
|
|
|
been transferred to some secondary is possible, but as a
|
|
|
|
consequence the secondary may need a full-sync afterwards.
|
|
|
|
|
2011-11-14 13:12:33 +00:00
|
|
|
config MARS_PREFER_SIO
|
2011-12-09 13:32:40 +00:00
|
|
|
bool "prefer sio bricks instead of aio"
|
2011-11-14 13:12:33 +00:00
|
|
|
depends on MARS
|
2012-01-12 14:07:44 +00:00
|
|
|
default n
|
2011-11-14 13:12:33 +00:00
|
|
|
---help---
|
2012-01-12 14:07:44 +00:00
|
|
|
Normally OFF for production systems.
|
|
|
|
Only use as alternative for testing.
|
2011-12-09 13:32:40 +00:00
|
|
|
|
|
|
|
##### mostly obsolete
|
2011-03-07 18:36:08 +00:00
|
|
|
|
2010-06-14 14:27:40 +00:00
|
|
|
config MARS_DUMMY
|
|
|
|
tristate "MARS dummy brick"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-06-14 14:27:40 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2010-11-26 13:45:10 +00:00
|
|
|
config MARS_CHECK
|
|
|
|
tristate "MARS check brick"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-11-26 13:45:10 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2011-03-07 10:27:38 +00:00
|
|
|
config MARS_IF
|
2010-06-14 14:27:40 +00:00
|
|
|
tristate "interface to a linux device"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-06-14 14:27:40 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2011-03-18 13:15:40 +00:00
|
|
|
config MARS_BIO
|
|
|
|
tristate "interface to blkdev via kernel BIO"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2011-03-18 13:15:40 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2011-03-07 10:27:38 +00:00
|
|
|
config MARS_AIO
|
2011-07-28 11:41:06 +00:00
|
|
|
tristate "interface to a linux file (Asynchronous IO)"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-11-26 13:45:10 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2011-03-07 10:27:38 +00:00
|
|
|
config MARS_SIO
|
2011-07-28 11:41:06 +00:00
|
|
|
tristate "interface to a linux file, synchronous (currently unused)"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-06-14 14:27:40 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2010-07-07 14:09:16 +00:00
|
|
|
config MARS_BUF
|
2011-07-28 11:41:06 +00:00
|
|
|
tristate "buffer brick (currently unused)"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-07-07 14:09:16 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2010-11-26 13:45:10 +00:00
|
|
|
config MARS_USEBUF
|
2011-07-28 11:41:06 +00:00
|
|
|
tristate "usebuf brick (currently unused)"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-11-26 13:45:10 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2010-06-28 05:53:46 +00:00
|
|
|
config MARS_TRANS_LOGGER
|
|
|
|
tristate "transaction logger"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2010-06-28 05:53:46 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
2011-02-23 20:48:06 +00:00
|
|
|
config MARS_SERVER
|
|
|
|
tristate "server brick"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2011-02-23 20:48:06 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
|
|
|
config MARS_CLIENT
|
|
|
|
tristate "client brick"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2011-02-23 20:48:06 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
|
|
|
config MARS_COPY
|
|
|
|
tristate "copy brick"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2011-02-23 20:48:06 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
|
|
|
|
|
|
|
config MARS_LIGHT
|
2011-07-28 11:41:06 +00:00
|
|
|
tristate "MARS Light main (protoype, will be replaced)"
|
2011-08-25 10:16:32 +00:00
|
|
|
depends on MARS && MARS_BIGMODULE!=m
|
2011-02-23 20:48:06 +00:00
|
|
|
default m
|
|
|
|
---help---
|
|
|
|
Experimental storage System.
|
2011-08-25 10:16:32 +00:00
|
|
|
|
|
|
|
# the following is used as an internal proprocessor symbol
|
|
|
|
|
|
|
|
config MARS_HAVE_BIGMODULE
|
|
|
|
bool
|
|
|
|
|