| Philipp Reisner | b411b36 | 2009-09-25 16:07:19 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | drbd_limits.h | 
|  | 3 | This file is part of DRBD by Philipp Reisner and Lars Ellenberg. | 
|  | 4 | */ | 
|  | 5 |  | 
|  | 6 | /* | 
|  | 7 | * Our current limitations. | 
|  | 8 | * Some of them are hard limits, | 
|  | 9 | * some of them are arbitrary range limits, that make it easier to provide | 
|  | 10 | * feedback about nonsense settings for certain configurable values. | 
|  | 11 | */ | 
|  | 12 |  | 
|  | 13 | #ifndef DRBD_LIMITS_H | 
|  | 14 | #define DRBD_LIMITS_H 1 | 
|  | 15 |  | 
|  | 16 | #define DEBUG_RANGE_CHECK 0 | 
|  | 17 |  | 
|  | 18 | #define DRBD_MINOR_COUNT_MIN 1 | 
|  | 19 | #define DRBD_MINOR_COUNT_MAX 255 | 
|  | 20 |  | 
|  | 21 | #define DRBD_DIALOG_REFRESH_MIN 0 | 
|  | 22 | #define DRBD_DIALOG_REFRESH_MAX 600 | 
|  | 23 |  | 
|  | 24 | /* valid port number */ | 
|  | 25 | #define DRBD_PORT_MIN 1 | 
|  | 26 | #define DRBD_PORT_MAX 0xffff | 
|  | 27 |  | 
|  | 28 | /* startup { */ | 
|  | 29 | /* if you want more than 3.4 days, disable */ | 
|  | 30 | #define DRBD_WFC_TIMEOUT_MIN 0 | 
|  | 31 | #define DRBD_WFC_TIMEOUT_MAX 300000 | 
|  | 32 | #define DRBD_WFC_TIMEOUT_DEF 0 | 
|  | 33 |  | 
|  | 34 | #define DRBD_DEGR_WFC_TIMEOUT_MIN 0 | 
|  | 35 | #define DRBD_DEGR_WFC_TIMEOUT_MAX 300000 | 
|  | 36 | #define DRBD_DEGR_WFC_TIMEOUT_DEF 0 | 
|  | 37 |  | 
|  | 38 | #define DRBD_OUTDATED_WFC_TIMEOUT_MIN 0 | 
|  | 39 | #define DRBD_OUTDATED_WFC_TIMEOUT_MAX 300000 | 
|  | 40 | #define DRBD_OUTDATED_WFC_TIMEOUT_DEF 0 | 
|  | 41 | /* }*/ | 
|  | 42 |  | 
|  | 43 | /* net { */ | 
|  | 44 | /* timeout, unit centi seconds | 
|  | 45 | * more than one minute timeout is not usefull */ | 
|  | 46 | #define DRBD_TIMEOUT_MIN 1 | 
|  | 47 | #define DRBD_TIMEOUT_MAX 600 | 
|  | 48 | #define DRBD_TIMEOUT_DEF 60       /* 6 seconds */ | 
|  | 49 |  | 
|  | 50 | /* active connection retries when C_WF_CONNECTION */ | 
|  | 51 | #define DRBD_CONNECT_INT_MIN 1 | 
|  | 52 | #define DRBD_CONNECT_INT_MAX 120 | 
|  | 53 | #define DRBD_CONNECT_INT_DEF 10   /* seconds */ | 
|  | 54 |  | 
|  | 55 | /* keep-alive probes when idle */ | 
|  | 56 | #define DRBD_PING_INT_MIN 1 | 
|  | 57 | #define DRBD_PING_INT_MAX 120 | 
|  | 58 | #define DRBD_PING_INT_DEF 10 | 
|  | 59 |  | 
|  | 60 | /* timeout for the ping packets.*/ | 
|  | 61 | #define DRBD_PING_TIMEO_MIN  1 | 
|  | 62 | #define DRBD_PING_TIMEO_MAX  100 | 
|  | 63 | #define DRBD_PING_TIMEO_DEF  5 | 
|  | 64 |  | 
|  | 65 | /* max number of write requests between write barriers */ | 
|  | 66 | #define DRBD_MAX_EPOCH_SIZE_MIN 1 | 
|  | 67 | #define DRBD_MAX_EPOCH_SIZE_MAX 20000 | 
|  | 68 | #define DRBD_MAX_EPOCH_SIZE_DEF 2048 | 
|  | 69 |  | 
|  | 70 | /* I don't think that a tcp send buffer of more than 10M is usefull */ | 
|  | 71 | #define DRBD_SNDBUF_SIZE_MIN  0 | 
|  | 72 | #define DRBD_SNDBUF_SIZE_MAX  (10<<20) | 
| Lars Ellenberg | 89e1838 | 2009-09-21 10:46:22 +0200 | [diff] [blame] | 73 | #define DRBD_SNDBUF_SIZE_DEF  0 | 
| Philipp Reisner | b411b36 | 2009-09-25 16:07:19 -0700 | [diff] [blame] | 74 |  | 
|  | 75 | #define DRBD_RCVBUF_SIZE_MIN  0 | 
|  | 76 | #define DRBD_RCVBUF_SIZE_MAX  (10<<20) | 
| Lars Ellenberg | 89e1838 | 2009-09-21 10:46:22 +0200 | [diff] [blame] | 77 | #define DRBD_RCVBUF_SIZE_DEF  0 | 
| Philipp Reisner | b411b36 | 2009-09-25 16:07:19 -0700 | [diff] [blame] | 78 |  | 
|  | 79 | /* @4k PageSize -> 128kB - 512MB */ | 
|  | 80 | #define DRBD_MAX_BUFFERS_MIN  32 | 
|  | 81 | #define DRBD_MAX_BUFFERS_MAX  131072 | 
|  | 82 | #define DRBD_MAX_BUFFERS_DEF  2048 | 
|  | 83 |  | 
|  | 84 | /* @4k PageSize -> 4kB - 512MB */ | 
|  | 85 | #define DRBD_UNPLUG_WATERMARK_MIN  1 | 
|  | 86 | #define DRBD_UNPLUG_WATERMARK_MAX  131072 | 
|  | 87 | #define DRBD_UNPLUG_WATERMARK_DEF (DRBD_MAX_BUFFERS_DEF/16) | 
|  | 88 |  | 
|  | 89 | /* 0 is disabled. | 
|  | 90 | * 200 should be more than enough even for very short timeouts */ | 
|  | 91 | #define DRBD_KO_COUNT_MIN  0 | 
|  | 92 | #define DRBD_KO_COUNT_MAX  200 | 
|  | 93 | #define DRBD_KO_COUNT_DEF  0 | 
|  | 94 | /* } */ | 
|  | 95 |  | 
|  | 96 | /* syncer { */ | 
|  | 97 | /* FIXME allow rate to be zero? */ | 
|  | 98 | #define DRBD_RATE_MIN 1 | 
|  | 99 | /* channel bonding 10 GbE, or other hardware */ | 
|  | 100 | #define DRBD_RATE_MAX (4 << 20) | 
|  | 101 | #define DRBD_RATE_DEF 250  /* kb/second */ | 
|  | 102 |  | 
|  | 103 | /* less than 7 would hit performance unneccessarily. | 
|  | 104 | * 3833 is the largest prime that still does fit | 
|  | 105 | * into 64 sectors of activity log */ | 
|  | 106 | #define DRBD_AL_EXTENTS_MIN  7 | 
|  | 107 | #define DRBD_AL_EXTENTS_MAX  3833 | 
|  | 108 | #define DRBD_AL_EXTENTS_DEF  127 | 
|  | 109 |  | 
|  | 110 | #define DRBD_AFTER_MIN  -1 | 
|  | 111 | #define DRBD_AFTER_MAX  255 | 
|  | 112 | #define DRBD_AFTER_DEF  -1 | 
|  | 113 |  | 
|  | 114 | /* } */ | 
|  | 115 |  | 
|  | 116 | /* drbdsetup XY resize -d Z | 
|  | 117 | * you are free to reduce the device size to nothing, if you want to. | 
|  | 118 | * the upper limit with 64bit kernel, enough ram and flexible meta data | 
|  | 119 | * is 16 TB, currently. */ | 
|  | 120 | /* DRBD_MAX_SECTORS */ | 
|  | 121 | #define DRBD_DISK_SIZE_SECT_MIN  0 | 
|  | 122 | #define DRBD_DISK_SIZE_SECT_MAX  (16 * (2LLU << 30)) | 
|  | 123 | #define DRBD_DISK_SIZE_SECT_DEF  0 /* = disabled = no user size... */ | 
|  | 124 |  | 
|  | 125 | #define DRBD_ON_IO_ERROR_DEF EP_PASS_ON | 
|  | 126 | #define DRBD_FENCING_DEF FP_DONT_CARE | 
|  | 127 | #define DRBD_AFTER_SB_0P_DEF ASB_DISCONNECT | 
|  | 128 | #define DRBD_AFTER_SB_1P_DEF ASB_DISCONNECT | 
|  | 129 | #define DRBD_AFTER_SB_2P_DEF ASB_DISCONNECT | 
|  | 130 | #define DRBD_RR_CONFLICT_DEF ASB_DISCONNECT | 
|  | 131 |  | 
|  | 132 | #define DRBD_MAX_BIO_BVECS_MIN 0 | 
|  | 133 | #define DRBD_MAX_BIO_BVECS_MAX 128 | 
|  | 134 | #define DRBD_MAX_BIO_BVECS_DEF 0 | 
|  | 135 |  | 
| Philipp Reisner | 67c7ddd | 2010-05-04 11:12:00 +0200 | [diff] [blame] | 136 | #define DRBD_DP_VOLUME_MIN 4 | 
|  | 137 | #define DRBD_DP_VOLUME_MAX 1048576 | 
|  | 138 | #define DRBD_DP_VOLUME_DEF 16384 | 
|  | 139 |  | 
|  | 140 | #define DRBD_DP_INTERVAL_MIN 1 | 
|  | 141 | #define DRBD_DP_INTERVAL_MAX 600 | 
|  | 142 | #define DRBD_DP_INTERVAL_DEF 5 | 
|  | 143 |  | 
|  | 144 | #define DRBD_RS_THROTTLE_TH_MIN 1 | 
|  | 145 | #define DRBD_RS_THROTTLE_TH_MAX 600 | 
|  | 146 | #define DRBD_RS_THROTTLE_TH_DEF 20 | 
|  | 147 |  | 
|  | 148 | #define DRBD_RS_HOLD_OFF_TH_MIN 1 | 
|  | 149 | #define DRBD_RS_HOLD_OFF_TH_MAX 6000 | 
|  | 150 | #define DRBD_RS_HOLD_OFF_TH_DEF 100 | 
|  | 151 |  | 
| Philipp Reisner | b411b36 | 2009-09-25 16:07:19 -0700 | [diff] [blame] | 152 | #undef RANGE | 
|  | 153 | #endif |