Merge lp:~bkerensa/ubuntu/raring/drbd8/new-upstream-release into lp:ubuntu/raring/drbd8

Proposed by Benjamin Kerensa
Status: Work in progress
Proposed branch: lp:~bkerensa/ubuntu/raring/drbd8/new-upstream-release
Merge into: lp:ubuntu/raring/drbd8
Diff against target: 16816 lines (+3216/-5124)
56 files modified
.filelist (+129/-124)
ChangeLog (+65/-0)
configure (+109/-86)
configure.ac (+2/-2)
debian/changelog (+6/-0)
documentation/drbd.8 (+1/-1)
documentation/drbd.conf.5 (+30/-11)
documentation/drbd.conf.xml (+0/-1752)
documentation/drbdadm.8 (+16/-1)
documentation/drbdadm.xml (+0/-479)
documentation/drbddisk.8 (+1/-1)
documentation/drbdmeta.8 (+6/-2)
documentation/drbdmeta.xml (+0/-221)
documentation/drbdsetup.8 (+45/-12)
documentation/drbdsetup.xml (+0/-1723)
drbd-kernel.spec.in (+34/-11)
drbd-km.spec.in (+9/-0)
drbd.spec.in (+17/-6)
drbd/Makefile (+0/-5)
drbd/Makefile-2.6 (+1/-0)
drbd/compat/kobject.c (+75/-0)
drbd/drbd_actlog.c (+97/-37)
drbd/drbd_bitmap.c (+163/-66)
drbd/drbd_buildtag.c (+2/-2)
drbd/drbd_int.h (+190/-75)
drbd/drbd_main.c (+413/-143)
drbd/drbd_nl.c (+138/-61)
drbd/drbd_proc.c (+13/-5)
drbd/drbd_receiver.c (+193/-103)
drbd/drbd_req.c (+192/-96)
drbd/drbd_req.h (+12/-8)
drbd/drbd_sysfs.c (+90/-0)
drbd/drbd_tracing.c (+1/-1)
drbd/drbd_worker.c (+103/-32)
drbd/drbd_wrappers.h (+143/-8)
drbd/linux/drbd_config.h (+23/-2)
drbd/linux/drbd_limits.h (+5/-0)
drbd/linux/drbd_nl.h (+5/-1)
drbd/linux/drbd_tag_magic.h (+1/-1)
scripts/Makefile.in (+3/-0)
scripts/README.rhcs_fence (+86/-0)
scripts/adjust_drbd_config_h.sh (+61/-0)
scripts/crm-fence-peer.sh (+11/-1)
scripts/drbd (+1/-0)
scripts/drbd-overview.pl (+1/-1)
scripts/drbd.ocf (+19/-3)
scripts/drbd.rules (+1/-1)
scripts/get_uts_release.sh (+1/-1)
scripts/rhcs_fence (+544/-0)
scripts/snapshot-resync-target-lvm.sh (+43/-11)
scripts/stonith_admin-fence-peer.sh (+43/-0)
user/Makefile.in (+4/-3)
user/drbdadm_parser.c (+17/-4)
user/drbdadm_scanner.fl (+1/-0)
user/drbdmeta.c (+24/-2)
user/drbdsetup.c (+26/-19)
To merge this branch: bzr merge lp:~bkerensa/ubuntu/raring/drbd8/new-upstream-release
Reviewer Review Type Date Requested Status
James Page Needs Fixing
Ubuntu branches Pending
Review via email: mp+135552@code.launchpad.net

Description of the change

New Upstream Release

To post a comment you must log in.
Revision history for this message
James Page (james-page) wrote :

Hi Benjamin

Thanks for the merge proposal; I noticed that Andres has already re-synced this package from Debian (so its only a minor point release behind this MP).

The official packaging branch is out-of-date due to:

http://package-import.ubuntu.com/status/drbd8.html#2012-07-09%2005:37:49.954343

I've emailed <email address hidden> and asked them if this can be fixed up.

Hopefully this will get fixed up and then you can rebase your work; otherwise you could raise a bug and generate a debdiff for the new version.

Thanks!

review: Needs Fixing

Unmerged revisions

26. By Benjamin Kerensa

New Upstream Release

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.filelist'
2--- .filelist 2011-07-05 15:40:13 +0000
3+++ .filelist 2012-11-21 23:20:34 +0000
4@@ -1,124 +1,129 @@
5-drbd-8.3.11/.gitignore
6-drbd-8.3.11/COPYING
7-drbd-8.3.11/ChangeLog
8-drbd-8.3.11/Makefile.in
9-drbd-8.3.11/README
10-drbd-8.3.11/autogen.sh
11-drbd-8.3.11/benchmark/Makefile
12-drbd-8.3.11/benchmark/README
13-drbd-8.3.11/benchmark/dm.c
14-drbd-8.3.11/benchmark/io-latency-test.c
15-drbd-8.3.11/configure.ac
16-drbd-8.3.11/documentation/Makefile.in
17-drbd-8.3.11/documentation/Makefile.lang
18-drbd-8.3.11/documentation/aspell.en.per
19-drbd-8.3.11/documentation/drbd.conf.xml
20-drbd-8.3.11/documentation/drbd.xml
21-drbd-8.3.11/documentation/drbdadm.xml
22-drbd-8.3.11/documentation/drbddisk.xml
23-drbd-8.3.11/documentation/drbdmeta.xml
24-drbd-8.3.11/documentation/drbdsetup.xml
25-drbd-8.3.11/drbd-kernel.spec.in
26-drbd-8.3.11/drbd-km.spec.in
27-drbd-8.3.11/drbd.spec.in
28-drbd-8.3.11/drbd/Kconfig
29-drbd-8.3.11/drbd/Makefile
30-drbd-8.3.11/drbd/Makefile-2.6
31-drbd-8.3.11/drbd/cn_queue.c
32-drbd-8.3.11/drbd/compat/bitops.h
33-drbd-8.3.11/drbd/compat/linux/autoconf.h
34-drbd-8.3.11/drbd/compat/linux/connector.h
35-drbd-8.3.11/drbd/compat/linux/dynamic_debug.h
36-drbd-8.3.11/drbd/compat/linux/hardirq.h
37-drbd-8.3.11/drbd/compat/linux/memcontrol.h
38-drbd-8.3.11/drbd/compat/linux/mutex.h
39-drbd-8.3.11/drbd/compat/linux/tracepoint.h
40-drbd-8.3.11/drbd/connector.c
41-drbd-8.3.11/drbd/drbd_actlog.c
42-drbd-8.3.11/drbd/drbd_bitmap.c
43-drbd-8.3.11/drbd/drbd_int.h
44-drbd-8.3.11/drbd/drbd_main.c
45-drbd-8.3.11/drbd/drbd_nl.c
46-drbd-8.3.11/drbd/drbd_proc.c
47-drbd-8.3.11/drbd/drbd_receiver.c
48-drbd-8.3.11/drbd/drbd_req.c
49-drbd-8.3.11/drbd/drbd_req.h
50-drbd-8.3.11/drbd/drbd_strings.c
51-drbd-8.3.11/drbd/drbd_tracing.c
52-drbd-8.3.11/drbd/drbd_tracing.h
53-drbd-8.3.11/drbd/drbd_vli.h
54-drbd-8.3.11/drbd/drbd_worker.c
55-drbd-8.3.11/drbd/drbd_wrappers.h
56-drbd-8.3.11/drbd/filelist-redhat
57-drbd-8.3.11/drbd/filelist-suse
58-drbd-8.3.11/drbd/linux/drbd.h
59-drbd-8.3.11/drbd/linux/drbd_config.h
60-drbd-8.3.11/drbd/linux/drbd_limits.h
61-drbd-8.3.11/drbd/linux/drbd_nl.h
62-drbd-8.3.11/drbd/linux/drbd_tag_magic.h
63-drbd-8.3.11/drbd/linux/lru_cache.h
64-drbd-8.3.11/drbd/lru_cache.c
65-drbd-8.3.11/drbd/preamble
66-drbd-8.3.11/drbd/preamble-rhel5
67-drbd-8.3.11/drbd/preamble-sles10
68-drbd-8.3.11/drbd/preamble-sles11
69-drbd-8.3.11/rpm-macro-fixes/README
70-drbd-8.3.11/rpm-macro-fixes/kmodtool.rhel5.diff
71-drbd-8.3.11/rpm-macro-fixes/macros.kernel-source.sles11-sp1.diff
72-drbd-8.3.11/rpm-macro-fixes/macros.kernel-source.sles11.diff
73-drbd-8.3.11/rpm-macro-fixes/macros.rhel5.diff
74-drbd-8.3.11/rpm-macro-fixes/suse_macros.sles10.diff
75-drbd-8.3.11/rpm-macro-fixes/symset-table.diff
76-drbd-8.3.11/scripts/Makefile.in
77-drbd-8.3.11/scripts/README
78-drbd-8.3.11/scripts/adjust_drbd_config_h.sh
79-drbd-8.3.11/scripts/block-drbd
80-drbd-8.3.11/scripts/crm-fence-peer.sh
81-drbd-8.3.11/scripts/drbd
82-drbd-8.3.11/scripts/drbd-overview.pl
83-drbd-8.3.11/scripts/drbd.conf
84-drbd-8.3.11/scripts/drbd.conf.example
85-drbd-8.3.11/scripts/drbd.gentoo
86-drbd-8.3.11/scripts/drbd.metadata.rhcs
87-drbd-8.3.11/scripts/drbd.ocf
88-drbd-8.3.11/scripts/drbd.rules
89-drbd-8.3.11/scripts/drbd.sh.rhcs
90-drbd-8.3.11/scripts/drbdadm.bash_completion
91-drbd-8.3.11/scripts/drbddisk
92-drbd-8.3.11/scripts/drbdupper
93-drbd-8.3.11/scripts/get_uts_release.sh
94-drbd-8.3.11/scripts/global_common.conf
95-drbd-8.3.11/scripts/notify.sh
96-drbd-8.3.11/scripts/outdate-peer.sh
97-drbd-8.3.11/scripts/patch-kernel
98-drbd-8.3.11/scripts/pretty-proc-drbd.sh
99-drbd-8.3.11/scripts/snapshot-resync-target-lvm.sh
100-drbd-8.3.11/scripts/unsnapshot-resync-target-lvm.sh
101-drbd-8.3.11/user/Makefile.in
102-drbd-8.3.11/user/drbd_endian.h
103-drbd-8.3.11/user/drbdadm.h
104-drbd-8.3.11/user/drbdadm_adjust.c
105-drbd-8.3.11/user/drbdadm_main.c
106-drbd-8.3.11/user/drbdadm_minor_table.c
107-drbd-8.3.11/user/drbdadm_parser.c
108-drbd-8.3.11/user/drbdadm_parser.h
109-drbd-8.3.11/user/drbdadm_scanner.fl
110-drbd-8.3.11/user/drbdadm_usage_cnt.c
111-drbd-8.3.11/user/drbdmeta.c
112-drbd-8.3.11/user/drbdmeta_parser.h
113-drbd-8.3.11/user/drbdmeta_scanner.fl
114-drbd-8.3.11/user/drbdsetup.c
115-drbd-8.3.11/user/drbdtool_common.c
116-drbd-8.3.11/user/drbdtool_common.h
117-drbd-8.3.11/user/unaligned.h
118-drbd-8.3.11/documentation/drbdsetup.8
119-drbd-8.3.11/documentation/drbd.conf.5
120-drbd-8.3.11/documentation/drbd.8
121-drbd-8.3.11/documentation/drbdadm.8
122-drbd-8.3.11/documentation/drbdmeta.8
123-drbd-8.3.11/documentation/drbddisk.8
124-drbd-8.3.11/drbd_config.h
125-drbd-8.3.11/drbd/drbd_buildtag.c
126-drbd-8.3.11/.filelist
127-drbd-8.3.11/configure
128-drbd-8.3.11/user/config.h.in
129+drbd-8.3.14/.gitignore
130+drbd-8.3.14/COPYING
131+drbd-8.3.14/ChangeLog
132+drbd-8.3.14/Makefile.in
133+drbd-8.3.14/README
134+drbd-8.3.14/autogen.sh
135+drbd-8.3.14/benchmark/Makefile
136+drbd-8.3.14/benchmark/README
137+drbd-8.3.14/benchmark/dm.c
138+drbd-8.3.14/benchmark/io-latency-test.c
139+drbd-8.3.14/configure.ac
140+drbd-8.3.14/documentation/Makefile.in
141+drbd-8.3.14/documentation/Makefile.lang
142+drbd-8.3.14/documentation/aspell.en.per
143+drbd-8.3.14/documentation/drbd.conf.xml
144+drbd-8.3.14/documentation/drbd.xml
145+drbd-8.3.14/documentation/drbdadm.xml
146+drbd-8.3.14/documentation/drbddisk.xml
147+drbd-8.3.14/documentation/drbdmeta.xml
148+drbd-8.3.14/documentation/drbdsetup.xml
149+drbd-8.3.14/drbd-kernel.spec.in
150+drbd-8.3.14/drbd-km.spec.in
151+drbd-8.3.14/drbd.spec.in
152+drbd-8.3.14/drbd/Kconfig
153+drbd-8.3.14/drbd/Makefile
154+drbd-8.3.14/drbd/Makefile-2.6
155+drbd-8.3.14/drbd/cn_queue.c
156+drbd-8.3.14/drbd/compat/bitops.h
157+drbd-8.3.14/drbd/compat/kobject.c
158+drbd-8.3.14/drbd/compat/linux/autoconf.h
159+drbd-8.3.14/drbd/compat/linux/connector.h
160+drbd-8.3.14/drbd/compat/linux/dynamic_debug.h
161+drbd-8.3.14/drbd/compat/linux/hardirq.h
162+drbd-8.3.14/drbd/compat/linux/memcontrol.h
163+drbd-8.3.14/drbd/compat/linux/mutex.h
164+drbd-8.3.14/drbd/compat/linux/tracepoint.h
165+drbd-8.3.14/drbd/connector.c
166+drbd-8.3.14/drbd/drbd_actlog.c
167+drbd-8.3.14/drbd/drbd_bitmap.c
168+drbd-8.3.14/drbd/drbd_int.h
169+drbd-8.3.14/drbd/drbd_main.c
170+drbd-8.3.14/drbd/drbd_nl.c
171+drbd-8.3.14/drbd/drbd_proc.c
172+drbd-8.3.14/drbd/drbd_receiver.c
173+drbd-8.3.14/drbd/drbd_req.c
174+drbd-8.3.14/drbd/drbd_req.h
175+drbd-8.3.14/drbd/drbd_strings.c
176+drbd-8.3.14/drbd/drbd_sysfs.c
177+drbd-8.3.14/drbd/drbd_tracing.c
178+drbd-8.3.14/drbd/drbd_tracing.h
179+drbd-8.3.14/drbd/drbd_vli.h
180+drbd-8.3.14/drbd/drbd_worker.c
181+drbd-8.3.14/drbd/drbd_wrappers.h
182+drbd-8.3.14/drbd/filelist-redhat
183+drbd-8.3.14/drbd/filelist-suse
184+drbd-8.3.14/drbd/linux/drbd.h
185+drbd-8.3.14/drbd/linux/drbd_config.h
186+drbd-8.3.14/drbd/linux/drbd_limits.h
187+drbd-8.3.14/drbd/linux/drbd_nl.h
188+drbd-8.3.14/drbd/linux/drbd_tag_magic.h
189+drbd-8.3.14/drbd/linux/lru_cache.h
190+drbd-8.3.14/drbd/lru_cache.c
191+drbd-8.3.14/drbd/preamble
192+drbd-8.3.14/drbd/preamble-rhel5
193+drbd-8.3.14/drbd/preamble-sles10
194+drbd-8.3.14/drbd/preamble-sles11
195+drbd-8.3.14/rpm-macro-fixes/README
196+drbd-8.3.14/rpm-macro-fixes/kmodtool.rhel5.diff
197+drbd-8.3.14/rpm-macro-fixes/macros.kernel-source.sles11-sp1.diff
198+drbd-8.3.14/rpm-macro-fixes/macros.kernel-source.sles11.diff
199+drbd-8.3.14/rpm-macro-fixes/macros.rhel5.diff
200+drbd-8.3.14/rpm-macro-fixes/suse_macros.sles10.diff
201+drbd-8.3.14/rpm-macro-fixes/symset-table.diff
202+drbd-8.3.14/scripts/Makefile.in
203+drbd-8.3.14/scripts/README
204+drbd-8.3.14/scripts/README.rhcs_fence
205+drbd-8.3.14/scripts/adjust_drbd_config_h.sh
206+drbd-8.3.14/scripts/block-drbd
207+drbd-8.3.14/scripts/crm-fence-peer.sh
208+drbd-8.3.14/scripts/drbd
209+drbd-8.3.14/scripts/drbd-overview.pl
210+drbd-8.3.14/scripts/drbd.conf
211+drbd-8.3.14/scripts/drbd.conf.example
212+drbd-8.3.14/scripts/drbd.gentoo
213+drbd-8.3.14/scripts/drbd.metadata.rhcs
214+drbd-8.3.14/scripts/drbd.ocf
215+drbd-8.3.14/scripts/drbd.rules
216+drbd-8.3.14/scripts/drbd.sh.rhcs
217+drbd-8.3.14/scripts/drbdadm.bash_completion
218+drbd-8.3.14/scripts/drbddisk
219+drbd-8.3.14/scripts/drbdupper
220+drbd-8.3.14/scripts/get_uts_release.sh
221+drbd-8.3.14/scripts/global_common.conf
222+drbd-8.3.14/scripts/notify.sh
223+drbd-8.3.14/scripts/outdate-peer.sh
224+drbd-8.3.14/scripts/patch-kernel
225+drbd-8.3.14/scripts/pretty-proc-drbd.sh
226+drbd-8.3.14/scripts/rhcs_fence
227+drbd-8.3.14/scripts/snapshot-resync-target-lvm.sh
228+drbd-8.3.14/scripts/stonith_admin-fence-peer.sh
229+drbd-8.3.14/scripts/unsnapshot-resync-target-lvm.sh
230+drbd-8.3.14/user/Makefile.in
231+drbd-8.3.14/user/drbd_endian.h
232+drbd-8.3.14/user/drbdadm.h
233+drbd-8.3.14/user/drbdadm_adjust.c
234+drbd-8.3.14/user/drbdadm_main.c
235+drbd-8.3.14/user/drbdadm_minor_table.c
236+drbd-8.3.14/user/drbdadm_parser.c
237+drbd-8.3.14/user/drbdadm_parser.h
238+drbd-8.3.14/user/drbdadm_scanner.fl
239+drbd-8.3.14/user/drbdadm_usage_cnt.c
240+drbd-8.3.14/user/drbdmeta.c
241+drbd-8.3.14/user/drbdmeta_parser.h
242+drbd-8.3.14/user/drbdmeta_scanner.fl
243+drbd-8.3.14/user/drbdsetup.c
244+drbd-8.3.14/user/drbdtool_common.c
245+drbd-8.3.14/user/drbdtool_common.h
246+drbd-8.3.14/user/unaligned.h
247+drbd-8.3.14/documentation/drbdmeta.8
248+drbd-8.3.14/documentation/drbdsetup.8
249+drbd-8.3.14/documentation/drbd.conf.5
250+drbd-8.3.14/documentation/drbd.8
251+drbd-8.3.14/documentation/drbdadm.8
252+drbd-8.3.14/documentation/drbddisk.8
253+drbd-8.3.14/drbd_config.h
254+drbd-8.3.14/drbd/drbd_buildtag.c
255+drbd-8.3.14/.filelist
256+drbd-8.3.14/configure
257+drbd-8.3.14/user/config.h.in
258
259=== modified file 'ChangeLog'
260--- ChangeLog 2011-07-05 15:40:13 +0000
261+++ ChangeLog 2012-11-21 23:20:34 +0000
262@@ -2,6 +2,71 @@
263 ------
264 For even more detail, use "git log" or visit http://git.drbd.org/.
265
266+8.3.14 (api:88/proto:86-97)
267+--------
268+ * No longer support write-ordering "barrier" on kernels newer than 2.6.36
269+ (or RHEL's 2.6.32), since it is no longer supported by the kernel's IO-layer
270+ * Fixed the cause of the "ASSERT FAILED tl_hash..." messages
271+ * Fixed an OOPS in case a on-congestion policy was set and the node becomes
272+ disk less
273+ * Fixed a list corruption for read requests that complete with an error
274+ after they were aborted
275+ * Fixed a kernel panic if the device size was an exact multiple of 128MiB
276+ * Finish requests that completed while IO on DRBD was frozen. Before such
277+ requests where never completed by DRBD
278+ * Fixed a potential memory allocation during deadlock online resize
279+ * Online resize with internal meta data failed to write the bitmap to
280+ the new on-disk-location after the resize operation. This issue was
281+ introduced with 8.3.10
282+ * Do not go through NetworkFailure state during a regular disconnect
283+ * Improve the handling of read-errors: Make sure that sectors that had a
284+ read error are overwritten with data from the peer on the next resync
285+ * Expose the data-generation-uuids through /sys/block/drbdXX/drbd/
286+ * Add a stop-sector to the online verify feature
287+ * Support FLUSH/FUA for layers above DRBD
288+ * The new flag --peer-max-bio-size for drbdmeta create-md is of use
289+ if you plan to use the device for long time without peer
290+
291+8.3.13 (api:88/proto:86-96)
292+--------
293+ * Fixed a write ordering problem on SyncTarget nodes for a write
294+ to a block that gets resynced at the same time. The bug can
295+ only be triggered with a device that has a firmware that
296+ actually reorders writes to the same block
297+ * Fixed a race between disconnect and receive_state, that could cause
298+ a IO lockup
299+ * Fixed resend/resubmit for requests with disk or network timeout
300+ * Make sure that hard state changed do not disturb the connection
301+ establishing process (I.e. detach due to an IO error). When the
302+ bug was triggered it caused a retry in the connect process
303+ * Postpone soft state changes to no disturb the connection
304+ establishing process (I.e. becoming primary). When the bug
305+ was triggered it could cause both nodes going into SyncSource state
306+ * Fixed a refcount leak that could cause failures when trying to
307+ unload a protocol family modules, that was used by DRBD
308+ * Dedicated page pool for meta data IOs
309+ * Deny normal detach (as opposed to --forced) if the user tries
310+ to detach from the last UpToDate disk in the resource
311+ * Fixed a possible protocol error that could be caused by
312+ "unusual" BIOs.
313+ * Enforce the disk-timeout option also on meta-data IO operations
314+ * Implemented stable bitmap pages when we do a full write out of
315+ the bitmap
316+
317+8.3.12 (api:88/proto:86-96)
318+--------
319+ * Fixed a rare compatibility issue with DRBD's older than 8.3.7
320+ when negotiating the bio_size
321+ * Fixed a rare race condition where an empty resync could stall with
322+ if pause/unpause events happen in parallel
323+ * Made the re-establishing of connections quicker, if it got a broken pipe
324+ once. Previously there was a bug in the code caused it to waste the first
325+ successful established connection after a broken pipe event.
326+ * crm-fence-peer.sh: Can now deal with multiple DRBD instances being in
327+ a master/slave group
328+ * Allow detach from frozen backing devices with the new --force option;
329+ configurable timeout for backing devices by the new disk-timeout option
330+
331 8.3.11 (api:88/proto:86-96)
332 --------
333 * Added missing spinlock in compressed bitmap receive (regression introduced
334
335=== modified file 'configure'
336--- configure 2011-07-05 15:40:13 +0000
337+++ configure 2012-11-21 23:20:34 +0000
338@@ -1,6 +1,6 @@
339 #! /bin/sh
340 # Guess values for system-dependent variables and create Makefiles.
341-# Generated by GNU Autoconf 2.67 for DRBD 8.3.11.
342+# Generated by GNU Autoconf 2.68 for DRBD 8.3.14.
343 #
344 # Report bugs to <drbd-dev@lists.linbit.com>.
345 #
346@@ -91,6 +91,7 @@
347 IFS=" "" $as_nl"
348
349 # Find who we are. Look in the path if we contain no directory separator.
350+as_myself=
351 case $0 in #((
352 *[\\/]* ) as_myself=$0 ;;
353 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
354@@ -215,11 +216,18 @@
355 # We cannot yet assume a decent shell, so we have to provide a
356 # neutralization value for shells without unset; and this also
357 # works around shells that cannot unset nonexistent variables.
358+ # Preserve -v and -x to the replacement shell.
359 BASH_ENV=/dev/null
360 ENV=/dev/null
361 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
362 export CONFIG_SHELL
363- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
364+ case $- in # ((((
365+ *v*x* | *x*v* ) as_opts=-vx ;;
366+ *v* ) as_opts=-v ;;
367+ *x* ) as_opts=-x ;;
368+ * ) as_opts= ;;
369+ esac
370+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
371 fi
372
373 if test x$as_have_required = xno; then :
374@@ -551,8 +559,8 @@
375 # Identity of this package.
376 PACKAGE_NAME='DRBD'
377 PACKAGE_TARNAME='drbd'
378-PACKAGE_VERSION='8.3.11'
379-PACKAGE_STRING='DRBD 8.3.11'
380+PACKAGE_VERSION='8.3.14'
381+PACKAGE_STRING='DRBD 8.3.14'
382 PACKAGE_BUGREPORT='drbd-dev@lists.linbit.com'
383 PACKAGE_URL=''
384
385@@ -1066,7 +1074,7 @@
386 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
387 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
388 $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
389- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
390+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
391 ;;
392
393 esac
394@@ -1204,7 +1212,7 @@
395 # Omit some internal or obsolete options to make the list less imposing.
396 # This message is too long to be a string in the A/UX 3.1 sh.
397 cat <<_ACEOF
398-\`configure' configures DRBD 8.3.11 to adapt to many kinds of systems.
399+\`configure' configures DRBD 8.3.14 to adapt to many kinds of systems.
400
401 Usage: $0 [OPTION]... [VAR=VALUE]...
402
403@@ -1265,7 +1273,7 @@
404
405 if test -n "$ac_init_help"; then
406 case $ac_init_help in
407- short | recursive ) echo "Configuration of DRBD 8.3.11:";;
408+ short | recursive ) echo "Configuration of DRBD 8.3.14:";;
409 esac
410 cat <<\_ACEOF
411
412@@ -1371,8 +1379,8 @@
413 test -n "$ac_init_help" && exit $ac_status
414 if $ac_init_version; then
415 cat <<\_ACEOF
416-DRBD configure 8.3.11
417-generated by GNU Autoconf 2.67
418+DRBD configure 8.3.14
419+generated by GNU Autoconf 2.68
420
421 Copyright (C) 2010 Free Software Foundation, Inc.
422 This configure script is free software; the Free Software Foundation
423@@ -1418,7 +1426,7 @@
424
425 ac_retval=1
426 fi
427- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
428+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
429 as_fn_set_status $ac_retval
430
431 } # ac_fn_c_try_compile
432@@ -1426,8 +1434,8 @@
433 This file contains any messages produced by compilers while
434 running configure, to aid debugging if configure makes a mistake.
435
436-It was created by DRBD $as_me 8.3.11, which was
437-generated by GNU Autoconf 2.67. Invocation command line was
438+It was created by DRBD $as_me 8.3.14, which was
439+generated by GNU Autoconf 2.68. Invocation command line was
440
441 $ $0 $@
442
443@@ -1685,7 +1693,7 @@
444 || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
445 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
446 as_fn_error $? "failed to load site script $ac_site_file
447-See \`config.log' for more details" "$LINENO" 5 ; }
448+See \`config.log' for more details" "$LINENO" 5; }
449 fi
450 done
451
452@@ -1901,7 +1909,7 @@
453 set dummy ${ac_tool_prefix}gcc; ac_word=$2
454 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
455 $as_echo_n "checking for $ac_word... " >&6; }
456-if test "${ac_cv_prog_CC+set}" = set; then :
457+if ${ac_cv_prog_CC+:} false; then :
458 $as_echo_n "(cached) " >&6
459 else
460 if test -n "$CC"; then
461@@ -1941,7 +1949,7 @@
462 set dummy gcc; ac_word=$2
463 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
464 $as_echo_n "checking for $ac_word... " >&6; }
465-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
466+if ${ac_cv_prog_ac_ct_CC+:} false; then :
467 $as_echo_n "(cached) " >&6
468 else
469 if test -n "$ac_ct_CC"; then
470@@ -1994,7 +2002,7 @@
471 set dummy ${ac_tool_prefix}cc; ac_word=$2
472 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
473 $as_echo_n "checking for $ac_word... " >&6; }
474-if test "${ac_cv_prog_CC+set}" = set; then :
475+if ${ac_cv_prog_CC+:} false; then :
476 $as_echo_n "(cached) " >&6
477 else
478 if test -n "$CC"; then
479@@ -2034,7 +2042,7 @@
480 set dummy cc; ac_word=$2
481 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
482 $as_echo_n "checking for $ac_word... " >&6; }
483-if test "${ac_cv_prog_CC+set}" = set; then :
484+if ${ac_cv_prog_CC+:} false; then :
485 $as_echo_n "(cached) " >&6
486 else
487 if test -n "$CC"; then
488@@ -2093,7 +2101,7 @@
489 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
490 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
491 $as_echo_n "checking for $ac_word... " >&6; }
492-if test "${ac_cv_prog_CC+set}" = set; then :
493+if ${ac_cv_prog_CC+:} false; then :
494 $as_echo_n "(cached) " >&6
495 else
496 if test -n "$CC"; then
497@@ -2137,7 +2145,7 @@
498 set dummy $ac_prog; ac_word=$2
499 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
500 $as_echo_n "checking for $ac_word... " >&6; }
501-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
502+if ${ac_cv_prog_ac_ct_CC+:} false; then :
503 $as_echo_n "(cached) " >&6
504 else
505 if test -n "$ac_ct_CC"; then
506@@ -2192,7 +2200,7 @@
507 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
508 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
509 as_fn_error $? "no acceptable C compiler found in \$PATH
510-See \`config.log' for more details" "$LINENO" 5 ; }
511+See \`config.log' for more details" "$LINENO" 5; }
512
513 # Provide some information about the compiler.
514 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
515@@ -2307,7 +2315,7 @@
516 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
517 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
518 as_fn_error 77 "C compiler cannot create executables
519-See \`config.log' for more details" "$LINENO" 5 ; }
520+See \`config.log' for more details" "$LINENO" 5; }
521 else
522 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
523 $as_echo "yes" >&6; }
524@@ -2350,7 +2358,7 @@
525 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
526 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
527 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
528-See \`config.log' for more details" "$LINENO" 5 ; }
529+See \`config.log' for more details" "$LINENO" 5; }
530 fi
531 rm -f conftest conftest$ac_cv_exeext
532 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
533@@ -2409,7 +2417,7 @@
534 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
535 as_fn_error $? "cannot run C compiled programs.
536 If you meant to cross compile, use \`--host'.
537-See \`config.log' for more details" "$LINENO" 5 ; }
538+See \`config.log' for more details" "$LINENO" 5; }
539 fi
540 fi
541 fi
542@@ -2420,7 +2428,7 @@
543 ac_clean_files=$ac_clean_files_save
544 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
545 $as_echo_n "checking for suffix of object files... " >&6; }
546-if test "${ac_cv_objext+set}" = set; then :
547+if ${ac_cv_objext+:} false; then :
548 $as_echo_n "(cached) " >&6
549 else
550 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
551@@ -2461,7 +2469,7 @@
552 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
553 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
554 as_fn_error $? "cannot compute suffix of object files: cannot compile
555-See \`config.log' for more details" "$LINENO" 5 ; }
556+See \`config.log' for more details" "$LINENO" 5; }
557 fi
558 rm -f conftest.$ac_cv_objext conftest.$ac_ext
559 fi
560@@ -2471,7 +2479,7 @@
561 ac_objext=$OBJEXT
562 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
563 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
564-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
565+if ${ac_cv_c_compiler_gnu+:} false; then :
566 $as_echo_n "(cached) " >&6
567 else
568 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
569@@ -2508,7 +2516,7 @@
570 ac_save_CFLAGS=$CFLAGS
571 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
572 $as_echo_n "checking whether $CC accepts -g... " >&6; }
573-if test "${ac_cv_prog_cc_g+set}" = set; then :
574+if ${ac_cv_prog_cc_g+:} false; then :
575 $as_echo_n "(cached) " >&6
576 else
577 ac_save_c_werror_flag=$ac_c_werror_flag
578@@ -2586,7 +2594,7 @@
579 fi
580 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
581 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
582-if test "${ac_cv_prog_cc_c89+set}" = set; then :
583+if ${ac_cv_prog_cc_c89+:} false; then :
584 $as_echo_n "(cached) " >&6
585 else
586 ac_cv_prog_cc_c89=no
587@@ -2696,7 +2704,7 @@
588 set dummy sed; ac_word=$2
589 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
590 $as_echo_n "checking for $ac_word... " >&6; }
591-if test "${ac_cv_path_SED+set}" = set; then :
592+if ${ac_cv_path_SED+:} false; then :
593 $as_echo_n "(cached) " >&6
594 else
595 case $SED in
596@@ -2736,7 +2744,7 @@
597 set dummy grep; ac_word=$2
598 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
599 $as_echo_n "checking for $ac_word... " >&6; }
600-if test "${ac_cv_path_GREP+set}" = set; then :
601+if ${ac_cv_path_GREP+:} false; then :
602 $as_echo_n "(cached) " >&6
603 else
604 case $GREP in
605@@ -2776,7 +2784,7 @@
606 set dummy flex; ac_word=$2
607 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
608 $as_echo_n "checking for $ac_word... " >&6; }
609-if test "${ac_cv_path_FLEX+set}" = set; then :
610+if ${ac_cv_path_FLEX+:} false; then :
611 $as_echo_n "(cached) " >&6
612 else
613 case $FLEX in
614@@ -2816,7 +2824,7 @@
615 set dummy rpmbuild; ac_word=$2
616 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
617 $as_echo_n "checking for $ac_word... " >&6; }
618-if test "${ac_cv_path_RPMBUILD+set}" = set; then :
619+if ${ac_cv_path_RPMBUILD+:} false; then :
620 $as_echo_n "(cached) " >&6
621 else
622 case $RPMBUILD in
623@@ -2856,7 +2864,7 @@
624 set dummy xsltproc; ac_word=$2
625 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
626 $as_echo_n "checking for $ac_word... " >&6; }
627-if test "${ac_cv_path_XSLTPROC+set}" = set; then :
628+if ${ac_cv_path_XSLTPROC+:} false; then :
629 $as_echo_n "(cached) " >&6
630 else
631 case $XSLTPROC in
632@@ -2896,7 +2904,7 @@
633 set dummy tar; ac_word=$2
634 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
635 $as_echo_n "checking for $ac_word... " >&6; }
636-if test "${ac_cv_path_TAR+set}" = set; then :
637+if ${ac_cv_path_TAR+:} false; then :
638 $as_echo_n "(cached) " >&6
639 else
640 case $TAR in
641@@ -2936,7 +2944,7 @@
642 set dummy git; ac_word=$2
643 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
644 $as_echo_n "checking for $ac_word... " >&6; }
645-if test "${ac_cv_path_GIT+set}" = set; then :
646+if ${ac_cv_path_GIT+:} false; then :
647 $as_echo_n "(cached) " >&6
648 else
649 case $GIT in
650@@ -2976,7 +2984,7 @@
651 set dummy dpkg-buildpackage; ac_word=$2
652 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
653 $as_echo_n "checking for $ac_word... " >&6; }
654-if test "${ac_cv_path_DPKG_BUILDPACKAGE+set}" = set; then :
655+if ${ac_cv_path_DPKG_BUILDPACKAGE+:} false; then :
656 $as_echo_n "(cached) " >&6
657 else
658 case $DPKG_BUILDPACKAGE in
659@@ -3016,7 +3024,7 @@
660 set dummy udevadm; ac_word=$2
661 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
662 $as_echo_n "checking for $ac_word... " >&6; }
663-if test "${ac_cv_path_UDEVADM+set}" = set; then :
664+if ${ac_cv_path_UDEVADM+:} false; then :
665 $as_echo_n "(cached) " >&6
666 else
667 case $UDEVADM in
668@@ -3057,7 +3065,7 @@
669 set dummy udevinfo; ac_word=$2
670 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
671 $as_echo_n "checking for $ac_word... " >&6; }
672-if test "${ac_cv_path_UDEVINFO+set}" = set; then :
673+if ${ac_cv_path_UDEVINFO+:} false; then :
674 $as_echo_n "(cached) " >&6
675 else
676 case $UDEVINFO in
677@@ -3095,7 +3103,7 @@
678
679
680
681-if test -z $CC; then
682+if test -z "$CC"; then
683 if test "$WITH_UTILS" = "yes"; then
684 as_fn_error $? "Cannot build utils without a C compiler, either install a compiler or pass the --without-utils option." "$LINENO" 5
685 fi
686@@ -3157,7 +3165,7 @@
687 if test -z $DISTRO; then
688 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/gentoo-release" >&5
689 $as_echo_n "checking for /etc/gentoo-release... " >&6; }
690-if test "${ac_cv_file__etc_gentoo_release+set}" = set; then :
691+if ${ac_cv_file__etc_gentoo_release+:} false; then :
692 $as_echo_n "(cached) " >&6
693 else
694 test "$cross_compiling" = yes &&
695@@ -3170,13 +3178,13 @@
696 fi
697 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_gentoo_release" >&5
698 $as_echo "$ac_cv_file__etc_gentoo_release" >&6; }
699-if test "x$ac_cv_file__etc_gentoo_release" = x""yes; then :
700+if test "x$ac_cv_file__etc_gentoo_release" = xyes; then :
701 DISTRO="gentoo"
702 fi
703
704 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/redhat-release" >&5
705 $as_echo_n "checking for /etc/redhat-release... " >&6; }
706-if test "${ac_cv_file__etc_redhat_release+set}" = set; then :
707+if ${ac_cv_file__etc_redhat_release+:} false; then :
708 $as_echo_n "(cached) " >&6
709 else
710 test "$cross_compiling" = yes &&
711@@ -3189,13 +3197,13 @@
712 fi
713 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_redhat_release" >&5
714 $as_echo "$ac_cv_file__etc_redhat_release" >&6; }
715-if test "x$ac_cv_file__etc_redhat_release" = x""yes; then :
716+if test "x$ac_cv_file__etc_redhat_release" = xyes; then :
717 DISTRO="redhat"
718 fi
719
720 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/slackware-version" >&5
721 $as_echo_n "checking for /etc/slackware-version... " >&6; }
722-if test "${ac_cv_file__etc_slackware_version+set}" = set; then :
723+if ${ac_cv_file__etc_slackware_version+:} false; then :
724 $as_echo_n "(cached) " >&6
725 else
726 test "$cross_compiling" = yes &&
727@@ -3208,13 +3216,13 @@
728 fi
729 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_slackware_version" >&5
730 $as_echo "$ac_cv_file__etc_slackware_version" >&6; }
731-if test "x$ac_cv_file__etc_slackware_version" = x""yes; then :
732+if test "x$ac_cv_file__etc_slackware_version" = xyes; then :
733 DISTRO="slackware"
734 fi
735
736 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/debian_version" >&5
737 $as_echo_n "checking for /etc/debian_version... " >&6; }
738-if test "${ac_cv_file__etc_debian_version+set}" = set; then :
739+if ${ac_cv_file__etc_debian_version+:} false; then :
740 $as_echo_n "(cached) " >&6
741 else
742 test "$cross_compiling" = yes &&
743@@ -3227,13 +3235,13 @@
744 fi
745 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_debian_version" >&5
746 $as_echo "$ac_cv_file__etc_debian_version" >&6; }
747-if test "x$ac_cv_file__etc_debian_version" = x""yes; then :
748+if test "x$ac_cv_file__etc_debian_version" = xyes; then :
749 DISTRO="debian"
750 fi
751
752 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/SuSE-release" >&5
753 $as_echo_n "checking for /etc/SuSE-release... " >&6; }
754-if test "${ac_cv_file__etc_SuSE_release+set}" = set; then :
755+if ${ac_cv_file__etc_SuSE_release+:} false; then :
756 $as_echo_n "(cached) " >&6
757 else
758 test "$cross_compiling" = yes &&
759@@ -3246,7 +3254,7 @@
760 fi
761 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_SuSE_release" >&5
762 $as_echo "$ac_cv_file__etc_SuSE_release" >&6; }
763-if test "x$ac_cv_file__etc_SuSE_release" = x""yes; then :
764+if test "x$ac_cv_file__etc_SuSE_release" = xyes; then :
765 DISTRO="suse"
766 fi
767
768@@ -3269,7 +3277,7 @@
769
770 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /etc/fedora-release" >&5
771 $as_echo_n "checking for /etc/fedora-release... " >&6; }
772-if test "${ac_cv_file__etc_fedora_release+set}" = set; then :
773+if ${ac_cv_file__etc_fedora_release+:} false; then :
774 $as_echo_n "(cached) " >&6
775 else
776 test "$cross_compiling" = yes &&
777@@ -3282,7 +3290,7 @@
778 fi
779 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__etc_fedora_release" >&5
780 $as_echo "$ac_cv_file__etc_fedora_release" >&6; }
781-if test "x$ac_cv_file__etc_fedora_release" = x""yes; then :
782+if test "x$ac_cv_file__etc_fedora_release" = xyes; then :
783 SUB_DISTRO="fedora"
784 else
785 SUB_DISTRO="RHEL"
786@@ -3460,10 +3468,21 @@
787 :end' >>confcache
788 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
789 if test -w "$cache_file"; then
790- test "x$cache_file" != "x/dev/null" &&
791+ if test "x$cache_file" != "x/dev/null"; then
792 { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
793 $as_echo "$as_me: updating cache $cache_file" >&6;}
794- cat confcache >$cache_file
795+ if test ! -f "$cache_file" || test -h "$cache_file"; then
796+ cat confcache >"$cache_file"
797+ else
798+ case $cache_file in #(
799+ */* | ?:*)
800+ mv -f confcache "$cache_file"$$ &&
801+ mv -f "$cache_file"$$ "$cache_file" ;; #(
802+ *)
803+ mv -f confcache "$cache_file" ;;
804+ esac
805+ fi
806+ fi
807 else
808 { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
809 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
810@@ -3495,7 +3514,7 @@
811
812
813
814-: ${CONFIG_STATUS=./config.status}
815+: "${CONFIG_STATUS=./config.status}"
816 ac_write_fail=0
817 ac_clean_files_save=$ac_clean_files
818 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
819@@ -3596,6 +3615,7 @@
820 IFS=" "" $as_nl"
821
822 # Find who we are. Look in the path if we contain no directory separator.
823+as_myself=
824 case $0 in #((
825 *[\\/]* ) as_myself=$0 ;;
826 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
827@@ -3902,8 +3922,8 @@
828 # report actual input values of CONFIG_FILES etc. instead of their
829 # values after options handling.
830 ac_log="
831-This file was extended by DRBD $as_me 8.3.11, which was
832-generated by GNU Autoconf 2.67. Invocation command line was
833+This file was extended by DRBD $as_me 8.3.14, which was
834+generated by GNU Autoconf 2.68. Invocation command line was
835
836 CONFIG_FILES = $CONFIG_FILES
837 CONFIG_HEADERS = $CONFIG_HEADERS
838@@ -3964,8 +3984,8 @@
839 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
840 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
841 ac_cs_version="\\
842-DRBD config.status 8.3.11
843-configured by $0, generated by GNU Autoconf 2.67,
844+DRBD config.status 8.3.14
845+configured by $0, generated by GNU Autoconf 2.68,
846 with options \\"\$ac_cs_config\\"
847
848 Copyright (C) 2010 Free Software Foundation, Inc.
849@@ -4094,7 +4114,7 @@
850 "drbd-km.spec") CONFIG_FILES="$CONFIG_FILES drbd-km.spec" ;;
851 "drbd-kernel.spec") CONFIG_FILES="$CONFIG_FILES drbd-kernel.spec" ;;
852
853- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
854+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
855 esac
856 done
857
858@@ -4116,9 +4136,10 @@
859 # after its creation but before its name has been assigned to `$tmp'.
860 $debug ||
861 {
862- tmp=
863+ tmp= ac_tmp=
864 trap 'exit_status=$?
865- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
866+ : "${ac_tmp:=$tmp}"
867+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
868 ' 0
869 trap 'as_fn_exit 1' 1 2 13 15
870 }
871@@ -4126,12 +4147,13 @@
872
873 {
874 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
875- test -n "$tmp" && test -d "$tmp"
876+ test -d "$tmp"
877 } ||
878 {
879 tmp=./conf$$-$RANDOM
880 (umask 077 && mkdir "$tmp")
881 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
882+ac_tmp=$tmp
883
884 # Set up the scripts for CONFIG_FILES section.
885 # No need to generate them if there are no CONFIG_FILES.
886@@ -4153,7 +4175,7 @@
887 ac_cs_awk_cr=$ac_cr
888 fi
889
890-echo 'BEGIN {' >"$tmp/subs1.awk" &&
891+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
892 _ACEOF
893
894
895@@ -4181,7 +4203,7 @@
896 rm -f conf$$subs.sh
897
898 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
899-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
900+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
901 _ACEOF
902 sed -n '
903 h
904@@ -4229,7 +4251,7 @@
905 rm -f conf$$subs.awk
906 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
907 _ACAWK
908-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
909+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
910 for (key in S) S_is_set[key] = 1
911 FS = ""
912
913@@ -4261,7 +4283,7 @@
914 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
915 else
916 cat
917-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
918+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
919 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
920 _ACEOF
921
922@@ -4295,7 +4317,7 @@
923 # No need to generate them if there are no CONFIG_HEADERS.
924 # This happens for instance with `./config.status Makefile'.
925 if test -n "$CONFIG_HEADERS"; then
926-cat >"$tmp/defines.awk" <<\_ACAWK ||
927+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
928 BEGIN {
929 _ACEOF
930
931@@ -4307,8 +4329,8 @@
932 # handling of long lines.
933 ac_delim='%!_!# '
934 for ac_last_try in false false :; do
935- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
936- if test -z "$ac_t"; then
937+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
938+ if test -z "$ac_tt"; then
939 break
940 elif $ac_last_try; then
941 as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
942@@ -4409,7 +4431,7 @@
943 esac
944 case $ac_mode$ac_tag in
945 :[FHL]*:*);;
946- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
947+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
948 :[FH]-) ac_tag=-:-;;
949 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
950 esac
951@@ -4428,7 +4450,7 @@
952 for ac_f
953 do
954 case $ac_f in
955- -) ac_f="$tmp/stdin";;
956+ -) ac_f="$ac_tmp/stdin";;
957 *) # Look for the file first in the build tree, then in the source tree
958 # (if the path is not absolute). The absolute path cannot be DOS-style,
959 # because $ac_f cannot contain `:'.
960@@ -4437,7 +4459,7 @@
961 [\\/$]*) false;;
962 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
963 esac ||
964- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
965+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
966 esac
967 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
968 as_fn_append ac_file_inputs " '$ac_f'"
969@@ -4463,8 +4485,8 @@
970 esac
971
972 case $ac_tag in
973- *:-:* | *:-) cat >"$tmp/stdin" \
974- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
975+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
976+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
977 esac
978 ;;
979 esac
980@@ -4589,21 +4611,22 @@
981 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
982 $ac_datarootdir_hack
983 "
984-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
985- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
986+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
987+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
988
989 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
990- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
991- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
992+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
993+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
994+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
995 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
996 which seems to be undefined. Please make sure it is defined" >&5
997 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
998 which seems to be undefined. Please make sure it is defined" >&2;}
999
1000- rm -f "$tmp/stdin"
1001+ rm -f "$ac_tmp/stdin"
1002 case $ac_file in
1003- -) cat "$tmp/out" && rm -f "$tmp/out";;
1004- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
1005+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
1006+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
1007 esac \
1008 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
1009 ;;
1010@@ -4614,20 +4637,20 @@
1011 if test x"$ac_file" != x-; then
1012 {
1013 $as_echo "/* $configure_input */" \
1014- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
1015- } >"$tmp/config.h" \
1016+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
1017+ } >"$ac_tmp/config.h" \
1018 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
1019- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
1020+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
1021 { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
1022 $as_echo "$as_me: $ac_file is unchanged" >&6;}
1023 else
1024 rm -f "$ac_file"
1025- mv "$tmp/config.h" "$ac_file" \
1026+ mv "$ac_tmp/config.h" "$ac_file" \
1027 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
1028 fi
1029 else
1030 $as_echo "/* $configure_input */" \
1031- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
1032+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
1033 || as_fn_error $? "could not create -" "$LINENO" 5
1034 fi
1035 ;;
1036
1037=== modified file 'configure.ac'
1038--- configure.ac 2011-07-05 15:40:13 +0000
1039+++ configure.ac 2012-11-21 23:20:34 +0000
1040@@ -7,7 +7,7 @@
1041 AC_PREREQ(2.53)
1042
1043 dnl What we are, our version, who to bug in case of problems
1044-AC_INIT(DRBD, 8.3.11, [drbd-dev@lists.linbit.com])
1045+AC_INIT(DRBD, 8.3.14, [drbd-dev@lists.linbit.com])
1046
1047 dnl Sanitize $prefix. Autoconf does this by itself, but so late in the
1048 dnl generated configure script that the expansion does not occur until
1049@@ -124,7 +124,7 @@
1050 AC_PATH_PROG(UDEVADM, udevadm, [false], [/sbin$PATH_SEPARATOR$PATH])
1051 AC_PATH_PROG(UDEVINFO, udevinfo, [false], [/sbin$PATH_SEPARATOR$PATH])
1052
1053-if test -z $CC; then
1054+if test -z "$CC"; then
1055 if test "$WITH_UTILS" = "yes"; then
1056 AC_MSG_ERROR([Cannot build utils without a C compiler, either install a compiler or pass the --without-utils option.])
1057 fi
1058
1059=== modified file 'debian/changelog'
1060--- debian/changelog 2011-07-05 15:40:13 +0000
1061+++ debian/changelog 2012-11-21 23:20:34 +0000
1062@@ -1,3 +1,9 @@
1063+drbd8 (2:8.3.14-0ubuntu1) raring; urgency=low
1064+
1065+ * New upstream release.
1066+
1067+ -- Benjamin Kerensa <bkerensa@ubuntu.com> Wed, 21 Nov 2012 15:12:05 -0800
1068+
1069 drbd8 (2:8.3.11-0ubuntu1) oneiric; urgency=low
1070
1071 * New upstream release
1072
1073=== modified file 'documentation/drbd.8'
1074--- documentation/drbd.8 2011-01-24 15:36:33 +0000
1075+++ documentation/drbd.8 2012-11-21 23:20:34 +0000
1076@@ -1,7 +1,7 @@
1077 '\" t
1078 .\" Title: drbd
1079 .\" Author: [see the "Author" section]
1080-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
1081+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
1082 .\" Date: 15 Oct 2008
1083 .\" Manual: System Administration
1084 .\" Source: DRBD 8.3.2
1085
1086=== modified file 'documentation/drbd.conf.5'
1087--- documentation/drbd.conf.5 2011-07-05 15:40:13 +0000
1088+++ documentation/drbd.conf.5 2012-11-21 23:20:34 +0000
1089@@ -1,7 +1,7 @@
1090 '\" t
1091 .\" Title: drbd.conf
1092 .\" Author: [see the "Author" section]
1093-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
1094+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
1095 .\" Date: 5 Dec 2008
1096 .\" Manual: Configuration Files
1097 .\" Source: DRBD 8.3.2
1098@@ -228,7 +228,8 @@
1099 \fBno\-disk\-flushes\fR,
1100 \fBno\-disk\-drain\fR,
1101 \fBno\-md\-flushes\fR,
1102-\fBmax\-bio\-bvecs\fR\&.
1103+\fBmax\-bio\-bvecs\fR,
1104+\fBdisk\-timeout\fR\&.
1105 .RE
1106 .PP
1107 \fBnet\fR
1108@@ -541,12 +542,16 @@
1109 .PP
1110 \fBno\-disk\-barrier\fR, \fBno\-disk\-flushes\fR, \fBno\-disk\-drain\fR
1111 .RS 4
1112-.\" drbd.conf: no-disk-flushes
1113-.\" drbd.conf: no-disk-flushes
1114-.\" drbd.conf: no-disk-flushes
1115+.\" drbd.conf: no-disk-barrier
1116+.\" drbd.conf: no-disk-flushes
1117+.\" drbd.conf: no-disk-drain
1118 DRBD has four implementations to express write\-after\-write dependencies to its backing storage device\&. DRBD will use the first method that is supported by the backing storage device and that is not disabled by the user\&.
1119 .sp
1120-When selecting the method you should not only base your decision on the measurable performance\&. In case your backing storage device has a volatile write cache (plain disks, RAID of plain disks) you should use one of the first two\&. In case your backing storage device has battery\-backed write cache you may go with option 3 or 4\&. Option 4 will deliver the best performance on such devices\&.
1121+When selecting the method you should not only base your decision on the measurable performance\&. In case your backing storage device has a volatile write cache (plain disks, RAID of plain disks) you should use one of the first two\&. In case your backing storage device has battery\-backed write cache you may go with option 3\&. Option 4 (disable everything, use "none")
1122+\fIis dangerous\fR
1123+on most IO stacks, may result in write\-reordering, and if so, can theoretically be the reason for data corruption, or disturb the DRBD protocol, causing spurious disconnect/reconnect cycles\&.
1124+\fIDo not use\fR
1125+\fBno\-disk\-drain\fR\&.
1126 .sp
1127 Unfortunately device mapper (LVM) might not support barriers\&.
1128 .sp
1129@@ -560,7 +565,7 @@
1130 .RS 4
1131 The first requires that the driver of the backing storage device support barriers (called \*(Aqtagged command queuing\*(Aq in SCSI and \*(Aqnative command queuing\*(Aq in SATA speak)\&. The use of this method can be disabled by the
1132 \fBno\-disk\-barrier\fR
1133-option\&.
1134+option\&. Note: Since Linux\-2\&.6\&.36 (or RHEL\*(Aqs 2\&.6\&.32) this method is disabled\&.
1135 .RE
1136 .PP
1137 flush
1138@@ -572,14 +577,17 @@
1139 .PP
1140 drain
1141 .RS 4
1142-The third method is simply to let write requests drain before write requests of a new reordering domain are issued\&. This was the only implementation before 8\&.0\&.9\&. You can disable this method by using the
1143-\fBno\-disk\-drain\fR
1144-option\&.
1145+The third method is simply to let write requests drain before write requests of a new reordering domain are issued\&. This was the only implementation before 8\&.0\&.9\&.
1146 .RE
1147 .PP
1148 none
1149 .RS 4
1150-The fourth method is to not express write\-after\-write dependencies to the backing store at all\&.
1151+The fourth method is to not express write\-after\-write dependencies to the backing store at all, by also specifying
1152+\fBno\-disk\-drain\fR\&. This
1153+\fIis dangerous\fR
1154+on most IO stacks, may result in write\-reordering, and if so, can theoretically be the reason for data corruption, or disturb the DRBD protocol, causing spurious disconnect/reconnect cycles\&.
1155+\fIDo not use\fR
1156+\fBno\-disk\-drain\fR\&.
1157 .RE
1158 .RE
1159 .PP
1160@@ -603,6 +611,17 @@
1161 is 0, which means that there is no user imposed limitation\&.
1162 .RE
1163 .PP
1164+\fBdisk\-timeout\fR
1165+.RS 4
1166+.\" drbd.conf: disk-timeout
1167+If the driver of the
1168+\fIlower_device\fR
1169+does not finish an IO request within
1170+\fIdisk_timeout\fR, DRBD considers the disk as failed\&. If DRBD is connected to a remote host, it will reissue local pending IO requests to the peer, and ship all new IO requests to the peer only\&. The disk state advances to diskless, as soon as the backing block device has finished all IO requests\&.
1171+.sp
1172+The default value of is 0, which means that no timeout is enforced\&. The default unit is 100ms\&. This option is available since 8\&.3\&.12\&.
1173+.RE
1174+.PP
1175 \fBsndbuf\-size \fR\fB\fIsize\fR\fR
1176 .RS 4
1177 .\" drbd.conf: sndbuf-size\fIsize\fR
1178
1179=== added file 'documentation/drbd.conf.xml'
1180--- documentation/drbd.conf.xml 1970-01-01 00:00:00 +0000
1181+++ documentation/drbd.conf.xml 2012-11-21 23:20:34 +0000
1182@@ -0,0 +1,1785 @@
1183+<?xml version="1.0"?>
1184+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
1185+<refentry id="re-drbdconf">
1186+ <refentryinfo>
1187+ <date>5 Dec 2008</date>
1188+ <productname>DRBD</productname>
1189+ <productnumber>8.3.2</productnumber>
1190+ </refentryinfo>
1191+ <refmeta>
1192+ <refentrytitle>drbd.conf</refentrytitle>
1193+ <manvolnum>5</manvolnum>
1194+ <refmiscinfo class="manual">Configuration Files</refmiscinfo>
1195+ </refmeta>
1196+ <refnamediv>
1197+ <refname>drbd.conf</refname>
1198+ <refpurpose>Configuration file for DRBD's devices
1199+ <indexterm significance="normal">
1200+ <primary>drbd.conf</primary>
1201+ </indexterm>
1202+ </refpurpose>
1203+ </refnamediv>
1204+ <refsect1>
1205+ <title>Introduction</title>
1206+ <para> The file <option>/etc/drbd.conf</option> is read by
1207+ <option>drbdadm</option>.
1208+ </para>
1209+ <para> The file format was designed as to allow to have
1210+ a verbatim copy of the file on both nodes of the cluster.
1211+ It is highly recommended to do so in order to keep your configuration
1212+ manageable. The file <option>/etc/drbd.conf</option> should be the same on both nodes of the cluster. Changes to <option>/etc/drbd.conf</option> do not apply
1213+ immediately.
1214+<example><title>A small drbd.conf file</title><programlisting format="linespecific">global { usage-count yes; }
1215+common { syncer { rate 10M; } }
1216+resource r0 {
1217+ protocol C;
1218+ net {
1219+ cram-hmac-alg sha1;
1220+ shared-secret "FooFunFactory";
1221+ }
1222+ on alice {
1223+ device minor 1;
1224+ disk /dev/sda7;
1225+ address 10.1.1.31:7789;
1226+ meta-disk internal;
1227+ }
1228+ on bob {
1229+ device minor 1;
1230+ disk /dev/sda7;
1231+ address 10.1.1.32:7789;
1232+ meta-disk internal;
1233+ }
1234+}</programlisting></example>
1235+ In this example, there is a single DRBD resource (called r0) which uses
1236+ protocol C for the connection between its devices.
1237+ The device which runs
1238+ on host <replaceable>alice</replaceable> uses
1239+ <replaceable>/dev/drbd1</replaceable> as devices for its application, and
1240+ <replaceable>/dev/sda7</replaceable> as low-level storage for the data.
1241+ The IP addresses are used to specify the networking interfaces to be used.
1242+ An eventually running resync process should use about 10MByte/second of IO
1243+ bandwidth.
1244+ </para>
1245+ <para> There may be multiple resource sections in a single drbd.conf file.
1246+ For more examples, please have a look at the
1247+ <ulink url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>.
1248+ </para>
1249+ </refsect1>
1250+ <refsect1>
1251+ <title>File Format</title>
1252+ <para> The file consists of sections and parameters.
1253+ A section begins with a keyword, sometimes an additional name, and an
1254+ opening brace (<quote>{</quote>).
1255+ A section ends with a closing brace (<quote>}</quote>.
1256+ The braces enclose the parameters.
1257+ </para>
1258+ <para> section [name] { parameter value; [...] }
1259+ </para>
1260+ <para> A parameter starts with the identifier of the parameter followed
1261+ by whitespace. Every subsequent character
1262+ is considered
1263+ as part of the parameter's value. A special case are Boolean
1264+ parameters which consist only of the identifier.
1265+ Parameters are terminated by a semicolon (<quote>;</quote>).
1266+ </para>
1267+ <para>Some parameter values have default units which might be overruled
1268+ by K, M or G. These units are defined in the usual way (K = 2^10 = 1024,
1269+ M = 1024 K, G = 1024 M).
1270+ </para>
1271+ <para> Comments may be placed into the configuration file and must
1272+ begin with a hash sign (<quote>#</quote>). Subsequent characters are ignored
1273+ until the end of the line.
1274+ </para>
1275+ <refsect2>
1276+ <title>Sections</title>
1277+ <variablelist>
1278+ <varlistentry>
1279+ <term>
1280+ <option>skip</option>
1281+ </term>
1282+ <listitem>
1283+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>skip</secondary></indexterm>
1284+ Comments out chunks of text, even spanning more than one line.
1285+ Characters between the keyword <option>skip</option> and the opening
1286+ brace (<quote>{</quote>) are ignored. Everything enclosed by the braces
1287+ is skipped.
1288+ This comes in handy, if you just want to comment out
1289+ some '<option>resource [name] {...}</option>' section: just precede it with '<quote>skip</quote>'.
1290+ </para>
1291+ </listitem>
1292+ </varlistentry>
1293+ <varlistentry>
1294+ <term>
1295+ <option>global</option>
1296+ </term>
1297+ <listitem>
1298+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>global</secondary></indexterm>
1299+ Configures some global parameters. Currently only
1300+ <option>minor-count</option>, <option>dialog-refresh</option>,
1301+ <option>disable-ip-verification</option> and <option>usage-count</option>
1302+ are allowed here. You may only have one global section, preferably
1303+ as the first section.
1304+ </para>
1305+ </listitem>
1306+ </varlistentry>
1307+ <varlistentry>
1308+ <term>
1309+ <option>common</option>
1310+ </term>
1311+ <listitem>
1312+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>common</secondary></indexterm>
1313+ All resources inherit the options set in this section.
1314+ The common section might have
1315+ a <option>startup</option>,
1316+ a <option>syncer</option>,
1317+ a <option>handlers</option>,
1318+ a <option>net</option> and a <option>disk</option> section.
1319+ </para>
1320+ </listitem>
1321+ </varlistentry>
1322+ <varlistentry>
1323+ <term>
1324+ <option>resource <replaceable>name</replaceable></option>
1325+ </term>
1326+ <listitem>
1327+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>resource</secondary></indexterm>
1328+ Configures a DRBD resource.
1329+ Each resource section needs to have two (or more)
1330+ <option>on <replaceable>host</replaceable></option> sections
1331+ and may have
1332+ a <option>startup</option>,
1333+ a <option>syncer</option>,
1334+ a <option>handlers</option>,
1335+ a <option>net</option> and a <option>disk</option> section.
1336+ Required parameter in this section: <option>protocol</option>.
1337+ </para>
1338+ </listitem>
1339+ </varlistentry>
1340+ <varlistentry>
1341+ <term>
1342+ <option>on <replaceable>host-name</replaceable></option>
1343+ </term>
1344+ <listitem>
1345+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on</secondary></indexterm>
1346+ Carries the necessary configuration parameters for a DRBD
1347+ device of the enclosing resource.
1348+ <replaceable>host-name</replaceable> is mandatory and must match the
1349+ Linux host name (uname -n) of one of the nodes.
1350+ You may list more than one host name here, in case you want to use the same
1351+ parameters on several hosts (you'd have to move the IP around usually).
1352+ Or you may list more than two such sections.
1353+ <programlisting format="linespecific"> resource r1 {
1354+ protocol C;
1355+ device minor 1;
1356+ meta-disk internal;
1357+
1358+ on alice bob {
1359+ address 10.2.2.100:7801;
1360+ disk /dev/mapper/some-san;
1361+ }
1362+ on charlie {
1363+ address 10.2.2.101:7801;
1364+ disk /dev/mapper/other-san;
1365+ }
1366+ on daisy {
1367+ address 10.2.2.103:7801;
1368+ disk /dev/mapper/other-san-as-seen-from-daisy;
1369+ }
1370+ }
1371+ </programlisting>
1372+ See also the <option>floating</option> section keyword.
1373+ Required parameters in this section: <option>device</option>,
1374+ <option>disk</option>, <option>address</option>, <option>meta-disk</option>,
1375+ <option>flexible-meta-disk</option>.
1376+ </para>
1377+ </listitem>
1378+ </varlistentry>
1379+ <varlistentry>
1380+ <term>
1381+ <option>stacked-on-top-of <replaceable>resource</replaceable></option>
1382+ </term>
1383+ <listitem>
1384+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>stacked-on-top-of</secondary></indexterm>
1385+ For a stacked DRBD setup (3 or 4 nodes), a <option>stacked-on-top-of</option> is used
1386+ instead of an <option>on</option> section.
1387+ Required parameters in this section: <option>device</option> and
1388+ <option>address</option>.
1389+ </para>
1390+ </listitem>
1391+ </varlistentry>
1392+ <varlistentry>
1393+ <term>
1394+ <option>floating <replaceable>AF addr:port</replaceable></option>
1395+ </term>
1396+ <listitem>
1397+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on</secondary></indexterm>
1398+ Carries the necessary configuration parameters for a DRBD
1399+ device of the enclosing resource.
1400+ This section is very similar to the <option>on</option> section.
1401+ The difference to the <option>on</option> section is that
1402+ the matching of the host sections to machines is done by the IP-address
1403+ instead of the node name.
1404+ Required parameters in this section: <option>device</option>,
1405+ <option>disk</option>, <option>meta-disk</option>,
1406+ <option>flexible-meta-disk</option>, all of which <emphasis>may</emphasis> be
1407+ inherited from the resource section, in which case you may shorten this section
1408+ down to just the address identifier.
1409+ <programlisting format="linespecific"> resource r2 {
1410+ protocol C;
1411+ device minor 2;
1412+ disk /dev/sda7;
1413+ meta-disk internal;
1414+
1415+ # short form, device, disk and meta-disk inherited
1416+ floating 10.1.1.31:7802;
1417+
1418+ # longer form, only device inherited
1419+ floating 10.1.1.32:7802 {
1420+ disk /dev/sdb;
1421+ meta-disk /dev/sdc8;
1422+ }
1423+ }
1424+ </programlisting>
1425+ </para>
1426+ </listitem>
1427+ </varlistentry>
1428+ <varlistentry>
1429+ <term>
1430+ <option>disk</option>
1431+ </term>
1432+ <listitem>
1433+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>disk</secondary></indexterm>
1434+ This section is used to fine tune DRBD's properties
1435+ in respect to the low level storage. Please
1436+ refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for detailed description of
1437+ the parameters.
1438+ Optional parameters: <option>on-io-error</option>,
1439+ <option>size</option>, <option>fencing</option>, <option>use-bmbv</option>,
1440+ <option>no-disk-barrier</option>, <option>no-disk-flushes</option>,
1441+ <option>no-disk-drain</option>, <option>no-md-flushes</option>,
1442+ <option>max-bio-bvecs</option>, <option>disk-timeout</option>.
1443+ </para>
1444+ </listitem>
1445+ </varlistentry>
1446+ <varlistentry>
1447+ <term>
1448+ <option>net</option>
1449+ </term>
1450+ <listitem>
1451+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>net</secondary></indexterm>
1452+ This section is used to fine tune DRBD's properties. Please
1453+ refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
1454+ of this section's parameters.
1455+ Optional parameters:
1456+ <option>sndbuf-size</option>, <option>rcvbuf-size</option>,
1457+ <option>timeout</option>,
1458+ <option>connect-int</option>, <option>ping-int</option>,
1459+ <option>ping-timeout</option>,
1460+ <option>max-buffers</option>, <option>max-epoch-size</option>,
1461+ <option>ko-count</option>, <option>allow-two-primaries</option>,
1462+ <option>cram-hmac-alg</option>, <option>shared-secret</option>,
1463+ <option>after-sb-0pri</option>, <option>after-sb-1pri</option>,
1464+ <option>after-sb-2pri</option>, <option>data-integrity-alg</option>,
1465+ <option>no-tcp-cork</option>, <option>on-congestion</option>,
1466+ <option>congestion-fill</option>, <option>congestion-extents</option>
1467+ </para>
1468+ </listitem>
1469+ </varlistentry>
1470+ <varlistentry>
1471+ <term>
1472+ <option>startup</option>
1473+ </term>
1474+ <listitem>
1475+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>startup</secondary></indexterm>
1476+ This section is used to fine tune DRBD's properties. Please
1477+ refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
1478+ of this section's parameters.
1479+ Optional parameters:
1480+ <option>wfc-timeout</option>, <option>degr-wfc-timeout</option>,
1481+ <option>outdated-wfc-timeout</option>,
1482+ <option>wait-after-sb</option>, <option>stacked-timeouts</option>
1483+ and <option>become-primary-on</option>.
1484+ </para>
1485+ </listitem>
1486+ </varlistentry>
1487+ <varlistentry>
1488+ <term>
1489+ <option>syncer</option>
1490+ </term>
1491+ <listitem>
1492+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>syncer</secondary></indexterm>
1493+ This section is used to fine tune the synchronization daemon
1494+ for the device. Please
1495+ refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
1496+ of this section's parameters.
1497+ Optional parameters:
1498+ <option>rate</option>, <option>after</option>, <option>al-extents</option>,
1499+ <option>use-rle</option>,
1500+ <option>cpu-mask</option>, <option>verify-alg</option>, <option>csums-alg</option>,
1501+ <option>c-plan-ahead</option>, <option>c-fill-target</option>,
1502+ <option>c-delay-target</option>, <option>c-max-rate</option>,
1503+ <option>c-min-rate</option>
1504+ and <option>on-no-data-accessible</option>.
1505+ </para>
1506+ </listitem>
1507+ </varlistentry>
1508+ <varlistentry>
1509+ <term>
1510+ <option>handlers</option>
1511+ </term>
1512+ <listitem>
1513+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>handlers</secondary></indexterm>
1514+ In this section you can define handlers (executables) that are started
1515+ by the DRBD system in response to certain events.
1516+ Optional parameters:
1517+ <option>pri-on-incon-degr</option>, <option>pri-lost-after-sb</option>,
1518+ <option>pri-lost</option>, <option>fence-peer</option> (formerly oudate-peer),
1519+ <option>local-io-error</option>, <option>initial-split-brain</option>, <option>split-brain</option>,
1520+ <option>before-resync-target</option>, <option>after-resync-target</option>.
1521+ </para>
1522+ <para>
1523+ The interface is done via environment variables:
1524+ <variablelist>
1525+ <varlistentry>
1526+ <term><option>DRBD_RESOURCE</option></term>
1527+ <listitem><para>is the name of the resource</para></listitem>
1528+ </varlistentry>
1529+ <varlistentry>
1530+ <term><option>DRBD_MINOR</option></term>
1531+ <listitem><para>is the minor number of the DRBD device, in decimal.</para></listitem>
1532+ </varlistentry>
1533+ <varlistentry>
1534+ <term><option>DRBD_CONF</option></term>
1535+ <listitem><para>
1536+ is the path to the primary configuration file; if you
1537+ split your configuration into multiple files (e.g. in <option>/etc/drbd.conf.d/</option>),
1538+ this will not be helpful.
1539+ </para></listitem>
1540+ </varlistentry>
1541+ <varlistentry>
1542+ <term><option>DRBD_PEER_AF</option>,
1543+ <option>DRBD_PEER_ADDRESS</option>,
1544+ <option>DRBD_PEERS</option></term>
1545+ <listitem><para>
1546+ are the address family (e.g. <option>ipv6</option>),
1547+ the peer's address and hostnames.
1548+ </para></listitem>
1549+ </varlistentry>
1550+ </variablelist>
1551+ <option>DRBD_PEER</option> (note the singular form) is deprecated, and superseeded by DRBD_PEERS.
1552+ </para>
1553+ <para>
1554+ Please note that not all of these might be set for all handlers, and that some values might not be useable for a <option>floating</option> definition.
1555+ </para>
1556+ </listitem>
1557+ </varlistentry>
1558+ </variablelist>
1559+ </refsect2>
1560+ <refsect2>
1561+ <title>Parameters</title>
1562+ <variablelist>
1563+ <varlistentry>
1564+ <term>
1565+ <option>minor-count <replaceable>count</replaceable></option>
1566+ </term>
1567+ <listitem>
1568+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>minor-count </secondary></indexterm><replaceable>count</replaceable> may be a number from 1 to 255.
1569+ </para>
1570+ <para>Use <replaceable>minor-count</replaceable>
1571+ if you want to define massively more resources later without reloading
1572+ the DRBD kernel
1573+ module. Per default the module loads with 11 more resources than you have currently
1574+ in your config but at least 32.</para>
1575+ </listitem>
1576+ </varlistentry>
1577+ <varlistentry>
1578+ <term>
1579+ <option>dialog-refresh <replaceable>time</replaceable></option>
1580+ </term>
1581+ <listitem>
1582+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>dialog-refresh </secondary></indexterm><replaceable>time</replaceable> may be 0 or a positive number.
1583+ </para>
1584+ <para>The user dialog redraws the second count every
1585+ <replaceable>time</replaceable> seconds (or does no redraws if
1586+ <replaceable>time</replaceable> is 0). The default value is 1.</para>
1587+ </listitem>
1588+ </varlistentry>
1589+ <varlistentry>
1590+ <term>
1591+ <option>disable-ip-verification</option>
1592+ </term>
1593+ <listitem>
1594+ <indexterm significance="normal">
1595+ <primary>drbd.conf</primary>
1596+ <secondary>disable-ip-verification</secondary>
1597+ </indexterm>
1598+ <para>Use <replaceable>disable-ip-verification</replaceable>
1599+ if, for some obscure reasons, drbdadm can/might not use <option>ip</option> or <option>ifconfig</option>
1600+ to do a sanity check for the IP address. You can disable the IP verification with
1601+ this option.
1602+ </para>
1603+ </listitem>
1604+ </varlistentry>
1605+ <varlistentry>
1606+ <term>
1607+ <option>usage-count <replaceable>val</replaceable></option>
1608+ </term>
1609+ <listitem>
1610+ <indexterm significance="normal">
1611+ <primary>drbd.conf</primary>
1612+ <secondary>usage-count </secondary>
1613+ </indexterm>
1614+ <para>Please participate in
1615+ <ulink url="http://usage.drbd.org"><citetitle>DRBD's online usage counter</citetitle></ulink>.
1616+ The most convenient way to do so
1617+ is to set this option to <option>yes</option>. Valid options are:
1618+ <option>yes</option>, <option>no</option> and <option>ask</option>.
1619+ </para>
1620+ </listitem>
1621+ </varlistentry>
1622+ <varlistentry>
1623+ <term>
1624+ <option>protocol <replaceable>prot-id</replaceable></option>
1625+ </term>
1626+ <listitem>
1627+ <indexterm significance="normal">
1628+ <primary>drbd.conf</primary>
1629+ <secondary>protocol</secondary>
1630+ </indexterm>
1631+ <para>On the TCP/IP link the specified <replaceable>protocol</replaceable>
1632+ is used. Valid protocol specifiers are A, B, and C.</para>
1633+ <para>Protocol A: write IO is reported as completed, if it has
1634+ reached local disk and local TCP send buffer.</para>
1635+ <para>Protocol B: write IO is reported as completed, if it has reached
1636+ local disk and remote buffer cache.</para>
1637+ <para>Protocol C: write IO is reported as completed, if it has
1638+ reached both local and remote disk.</para>
1639+ </listitem>
1640+ </varlistentry>
1641+ <varlistentry>
1642+ <term>
1643+ <option>device <replaceable>name</replaceable> minor <replaceable>nr</replaceable></option>
1644+ </term>
1645+ <listitem>
1646+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>device</secondary></indexterm>
1647+ The name of the block device node of the resource being described.
1648+ You must use this device with your application (file system) and
1649+ you must not use the low level block device which is specified with the
1650+ <option>disk</option> parameter.
1651+ </para>
1652+ <para> One can ether omit the <replaceable>name</replaceable> or <option>minor</option>
1653+ and the <replaceable>minor number</replaceable>. If you omit the <replaceable>name</replaceable>
1654+ a default of /dev/drbd<replaceable>minor</replaceable> will be used.
1655+ </para>
1656+ <para> Udev will create additional symlinks in /dev/drbd/by-res and /dev/drbd/by-disk.
1657+ </para>
1658+ </listitem>
1659+ </varlistentry>
1660+ <varlistentry>
1661+ <term>
1662+ <option>disk <replaceable>name</replaceable></option>
1663+ </term>
1664+ <listitem>
1665+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>disk</secondary></indexterm>
1666+ DRBD uses this block device to actually store and retrieve the data.
1667+ Never access such a device while DRBD is running on top of it. This
1668+ also holds true for <citerefentry><refentrytitle>dumpe2fs</refentrytitle><manvolnum>8</manvolnum></citerefentry> and similar commands.
1669+ </para>
1670+ </listitem>
1671+ </varlistentry>
1672+ <varlistentry>
1673+ <term>
1674+ <option>address <replaceable>AF addr:port</replaceable></option>
1675+ </term>
1676+ <listitem>
1677+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>address</secondary></indexterm>
1678+ A resource needs one <replaceable>IP</replaceable> address per device,
1679+ which is used to wait for incoming connections from the partner device
1680+ respectively to reach the partner device. <replaceable>AF</replaceable>
1681+ must be one of <option>ipv4</option>, <option>ipv6</option>, <option>ssocks</option>
1682+ or <option>sdp</option>
1683+ (for compatibility reasons <option>sci</option> is an alias for <option>ssocks</option>).
1684+ It may be omited for IPv4 addresses. The actual IPv6 address that follows
1685+ the <option>ipv6</option> keyword must be placed inside brackets:
1686+ <literal moreinfo="none">ipv6 [fd01:2345:6789:abcd::1]:7800</literal>.
1687+ </para>
1688+ <para> Each DRBD resource needs a TCP <replaceable>port</replaceable>
1689+ which is used to connect to the node's partner device.
1690+ Two different DRBD resources may not use the same
1691+ <replaceable>addr:port</replaceable> combination on the same node.
1692+ </para>
1693+ </listitem>
1694+ </varlistentry>
1695+ <varlistentry>
1696+ <term>
1697+ <option>meta-disk <replaceable>internal</replaceable></option>
1698+ </term>
1699+ <term>
1700+ <option>flexible-meta-disk <replaceable>internal</replaceable></option>
1701+ </term>
1702+ <term>
1703+ <option>meta-disk <replaceable>device [index]</replaceable></option>
1704+ </term>
1705+ <term>
1706+ <option>flexible-meta-disk <replaceable>device </replaceable></option>
1707+ </term>
1708+ <listitem>
1709+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>meta-disk</secondary></indexterm><indexterm significance="normal"><primary>drbd.conf</primary><secondary>flexible-meta-disk</secondary></indexterm>
1710+ Internal means that the last part of the backing device is used to store
1711+ the meta-data. You must not use <replaceable>[index]</replaceable> with
1712+ internal. Note: Regardless of whether you use the <option>meta-disk</option> or
1713+ the <option>flexible-meta-disk</option> keyword, it will always be of
1714+ the size needed for the remaining storage size.
1715+ </para>
1716+ <para> You can use a single block <replaceable>device</replaceable> to store
1717+ meta-data of multiple DRBD devices.
1718+ E.g. use meta-disk /dev/sde6[0]; and meta-disk /dev/sde6[1];
1719+ for two different resources. In this case the meta-disk
1720+ would need to be at least 256 MB in size.
1721+ </para>
1722+ <para> With the <option>flexible-meta-disk</option> keyword you specify
1723+ a block device as meta-data storage. You usually use this with LVM,
1724+ which allows you to have many variable sized block devices.
1725+ The required size of the meta-disk block device is
1726+ 36kB + Backing-Storage-size / 32k. Round this number to the next 4kb
1727+ boundary up and you have the exact size.
1728+ Rule of the thumb: 32kByte per 1GByte of storage, round up to the next
1729+ MB.</para>
1730+ </listitem>
1731+ </varlistentry>
1732+ <varlistentry>
1733+ <term>
1734+ <option>on-io-error <replaceable>handler</replaceable></option>
1735+ </term>
1736+ <listitem>
1737+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on-io-error</secondary></indexterm><replaceable>handler</replaceable> is taken, if the lower level
1738+ device reports io-errors to the upper layers.
1739+ </para>
1740+ <para><replaceable>handler</replaceable> may be <option>pass_on</option>, <option>call-local-io-error</option>
1741+ or <option>detach.</option>
1742+ </para>
1743+ <para><option>pass_on</option>: The node downgrades the disk status to inconsistent, marks the
1744+ erroneous block as inconsistent in the bitmap and retries the IO on the remote node.</para>
1745+ <para><option>call-local-io-error</option>: Call the handler script
1746+ <option>local-io-error</option>.</para>
1747+ <para><option>detach</option>: The node drops its low level device, and continues in diskless mode.</para>
1748+ </listitem>
1749+ </varlistentry>
1750+ <varlistentry>
1751+ <term>
1752+ <option>fencing <replaceable>fencing_policy</replaceable></option>
1753+ </term>
1754+ <listitem>
1755+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>fencing</secondary></indexterm>
1756+ By <option>fencing</option> we understand preventive
1757+ measures to avoid situations where both nodes are primary
1758+ and disconnected (AKA split brain).
1759+ </para>
1760+ <para>Valid fencing policies are:</para>
1761+ <variablelist>
1762+ <varlistentry>
1763+ <term>
1764+ <option>dont-care</option>
1765+ </term>
1766+ <listitem>
1767+ <para> This is the default policy. No fencing actions are taken.
1768+ </para>
1769+ </listitem>
1770+ </varlistentry>
1771+ <varlistentry>
1772+ <term>
1773+ <option>resource-only</option>
1774+ </term>
1775+ <listitem>
1776+ <para> If a node becomes a disconnected primary, it tries to fence
1777+ the peer's disk. This is done by calling the <option>fence-peer</option>
1778+ handler. The handler is supposed to reach the other node over
1779+ alternative communication paths and call '<option>drbdadm outdate
1780+ res</option>' there.
1781+ </para>
1782+ </listitem>
1783+ </varlistentry>
1784+ <varlistentry>
1785+ <term>
1786+ <option>resource-and-stonith</option>
1787+ </term>
1788+ <listitem>
1789+ <para> If a node becomes a disconnected primary, it freezes all
1790+ its IO operations and calls its fence-peer handler. The
1791+ fence-peer handler is supposed to reach the peer over
1792+ alternative communication paths and call 'drbdadm outdate
1793+ res' there. In case it cannot reach the peer it should
1794+ stonith the peer. IO is resumed as soon as the situation
1795+ is resolved. In case your handler fails, you can resume
1796+ IO with the <option>resume-io</option> command.
1797+ </para>
1798+ </listitem>
1799+ </varlistentry>
1800+ </variablelist>
1801+ </listitem>
1802+ </varlistentry>
1803+ <varlistentry>
1804+ <term>
1805+ <option>use-bmbv</option>
1806+ </term>
1807+ <listitem>
1808+ <indexterm significance="normal">
1809+ <primary>drbd.conf</primary>
1810+ <secondary>use-bmbv</secondary>
1811+ </indexterm>
1812+ <para> In case the backing storage's driver has a merge_bvec_fn() function,
1813+ DRBD has to pretend that it can only process IO requests in
1814+ units not larger than 4KiB. (At the time of writing the only known drivers which have such a function
1815+ are: md (software raid driver), dm (device mapper - LVM) and DRBD
1816+ itself).</para>
1817+ <para> To get the best performance out of DRBD on top of software RAID (or any
1818+ other driver with a merge_bvec_fn() function) you might enable this
1819+ function, if you know for sure that the merge_bvec_fn() function will
1820+ deliver the same results on all nodes of your cluster. I.e. the
1821+ physical disks of the software RAID are of exactly the same
1822+ type. <emphasis>Use this option only if you know what you are
1823+ doing.</emphasis>
1824+ </para>
1825+ </listitem>
1826+ </varlistentry>
1827+ <varlistentry>
1828+ <term>
1829+ <option>no-disk-barrier</option>
1830+ </term>
1831+ <term>
1832+ <option>no-disk-flushes</option>
1833+ </term>
1834+ <term>
1835+ <option>no-disk-drain</option>
1836+ </term>
1837+ <listitem>
1838+ <indexterm significance="normal">
1839+ <primary>drbd.conf</primary>
1840+ <secondary>no-disk-barrier</secondary>
1841+ </indexterm>
1842+ <indexterm significance="normal">
1843+ <primary>drbd.conf</primary>
1844+ <secondary>no-disk-flushes</secondary>
1845+ </indexterm>
1846+ <indexterm significance="normal">
1847+ <primary>drbd.conf</primary>
1848+ <secondary>no-disk-drain</secondary>
1849+ </indexterm>
1850+ <para> DRBD has four implementations to express write-after-write dependencies to
1851+ its backing storage device. DRBD will use the first method that is
1852+ supported by the backing storage device and that is not disabled by the user.
1853+ </para>
1854+ <para> When selecting the method you should not only base your decision on the
1855+ measurable performance. In case your backing storage device has a volatile
1856+ write cache (plain disks, RAID of plain disks) you should use one
1857+ of the first two. In case your backing storage device has battery-backed
1858+ write cache you may go with option 3.
1859+ Option 4 (disable everything, use "none") <emphasis>is dangerous</emphasis>
1860+ on most IO stacks, may result in write-reordering, and if so,
1861+ can theoretically be the reason for data corruption, or disturb
1862+ the DRBD protocol, causing spurious disconnect/reconnect cycles.
1863+ <emphasis>Do not use</emphasis> <option>no-disk-drain</option>.
1864+ </para>
1865+ <para> Unfortunately device mapper (LVM) might not support barriers.
1866+ </para>
1867+ <para> The letter after "wo:" in /proc/drbd indicates with method is currently in
1868+ use for a device: <option>b</option>, <option>f</option>, <option>d</option>, <option>n</option>. The implementations are:
1869+ </para>
1870+ <variablelist>
1871+ <varlistentry>
1872+ <term>barrier</term>
1873+ <listitem>
1874+ <para> The first requires that the driver of the
1875+ backing storage device support barriers (called 'tagged command queuing' in
1876+ SCSI and 'native command queuing' in SATA speak). The use of this
1877+ method can be disabled by the <option>no-disk-barrier</option> option.
1878+ Note: Since Linux-2.6.36 (or RHEL's 2.6.32) this method is disabled.
1879+ </para>
1880+ </listitem>
1881+ </varlistentry>
1882+ <varlistentry>
1883+ <term>flush</term>
1884+ <listitem>
1885+ <para> The second requires that the backing device support disk flushes (called
1886+ 'force unit access' in the drive vendors speak). The use of this method
1887+ can be disabled using the <option>no-disk-flushes</option> option.
1888+ </para>
1889+ </listitem>
1890+ </varlistentry>
1891+ <varlistentry>
1892+ <term>drain</term>
1893+ <listitem>
1894+ <para> The third method is simply to let write requests drain before
1895+ write requests of a new reordering domain are issued. This was the
1896+ only implementation before 8.0.9.
1897+ </para>
1898+ </listitem>
1899+ </varlistentry>
1900+ <varlistentry>
1901+ <term>none</term>
1902+ <listitem>
1903+ <para> The fourth method is to not express write-after-write dependencies to
1904+ the backing store at all, by also specifying <option>no-disk-drain</option>.
1905+ This <emphasis>is dangerous</emphasis>
1906+ on most IO stacks, may result in write-reordering, and if so,
1907+ can theoretically be the reason for data corruption, or disturb
1908+ the DRBD protocol, causing spurious disconnect/reconnect cycles.
1909+ <emphasis>Do not use</emphasis> <option>no-disk-drain</option>.
1910+ </para>
1911+ </listitem>
1912+ </varlistentry>
1913+ </variablelist>
1914+ </listitem>
1915+ </varlistentry>
1916+ <varlistentry>
1917+ <term>
1918+ <option>no-md-flushes</option>
1919+ </term>
1920+ <listitem>
1921+ <indexterm significance="normal">
1922+ <primary>drbd.conf</primary>
1923+ <secondary>no-md-flushes</secondary>
1924+ </indexterm>
1925+ <para> Disables the use of disk flushes and barrier BIOs when accessing
1926+ the meta data device. See the notes on <option>no-disk-flushes</option>.
1927+ </para>
1928+ </listitem>
1929+ </varlistentry>
1930+ <varlistentry>
1931+ <term>
1932+ <option>max-bio-bvecs</option>
1933+ </term>
1934+ <listitem>
1935+ <indexterm significance="normal">
1936+ <primary>drbd.conf</primary>
1937+ <secondary>max-bio-bvecs</secondary>
1938+ </indexterm>
1939+ <para> In some special circumstances the device mapper stack manages to
1940+ pass BIOs to DRBD that violate the constraints that are set forth
1941+ by DRBD's merge_bvec() function and which have more than one bvec.
1942+ A known example is:
1943+ phys-disk -&gt; DRBD -&gt; LVM -&gt; Xen -&gt; misaligned partition (63) -&gt; DomU FS.
1944+ Then you might see "bio would need to, but cannot, be split:" in
1945+ the Dom0's kernel log. </para>
1946+ <para> The best workaround is to proper align the partition within
1947+ the VM (E.g. start it at sector 1024). This costs 480 KiB of storage.
1948+ Unfortunately the default of most Linux partitioning tools is
1949+ to start the first partition at an odd number (63). Therefore
1950+ most distribution's install helpers for virtual linux machines will
1951+ end up with misaligned partitions.
1952+ The second best workaround is to limit DRBD's max bvecs per BIO
1953+ (= <option>max-bio-bvecs</option>) to 1, but that might cost performance.</para>
1954+ <para> The default value of <option>max-bio-bvecs</option> is 0, which means that
1955+ there is no user imposed limitation.
1956+ </para>
1957+ </listitem>
1958+ </varlistentry>
1959+
1960+ <varlistentry>
1961+ <term>
1962+ <option>disk-timeout</option>
1963+ </term>
1964+ <listitem>
1965+ <indexterm significance="normal">
1966+ <primary>drbd.conf</primary>
1967+ <secondary>disk-timeout</secondary>
1968+ </indexterm>
1969+ <para>
1970+ If the driver of the <replaceable>lower_device</replaceable>
1971+ does not finish an IO request within <replaceable>disk_timeout</replaceable>,
1972+ DRBD considers the disk as failed. If DRBD is connected to a remote host,
1973+ it will reissue local pending IO requests to the peer, and ship all new
1974+ IO requests to the peer only. The disk state advances to diskless, as soon
1975+ as the backing block device has finished all IO requests.</para>
1976+ <para> The default value of is 0, which means that no timeout is enforced.
1977+ The default unit is 100ms. This option is available since 8.3.12.
1978+ </para>
1979+ </listitem>
1980+ </varlistentry>
1981+
1982+
1983+ <varlistentry>
1984+ <term>
1985+ <option>sndbuf-size <replaceable>size</replaceable></option>
1986+ </term>
1987+ <listitem>
1988+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>sndbuf-size </secondary></indexterm><replaceable>size</replaceable> is the size of the TCP socket send buffer.
1989+ The default value is 0, i.e. autotune. You can specify smaller or larger values. Larger values
1990+ are appropriate for reasonable write throughput with protocol A over high
1991+ latency networks. Values
1992+ below 32K do not make sense. Since 8.0.13 resp. 8.2.7, setting the <replaceable>size</replaceable>
1993+ value to 0 means that the kernel should autotune this.
1994+ </para>
1995+ </listitem>
1996+ </varlistentry>
1997+ <varlistentry>
1998+ <term>
1999+ <option>rcvbuf-size <replaceable>size</replaceable></option>
2000+ </term>
2001+ <listitem>
2002+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>rcvbuf-size </secondary></indexterm><replaceable>size</replaceable> is the size of the TCP socket receive buffer.
2003+ The default value is 0, i.e. autotune. You can specify smaller or larger values.
2004+ Usually this should be left at its default. Setting the <replaceable>size</replaceable>
2005+ value to 0 means that the kernel should autotune this.
2006+ </para>
2007+ </listitem>
2008+ </varlistentry>
2009+ <varlistentry>
2010+ <term>
2011+ <option>timeout <replaceable>time</replaceable></option>
2012+ </term>
2013+ <listitem>
2014+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>timeout</secondary></indexterm>
2015+If the partner node fails to send an expected response packet within
2016+<replaceable>time</replaceable> tenths
2017+of a second, the partner node
2018+is considered dead and therefore the TCP/IP connection is abandoned. This must be lower than <replaceable>connect-int</replaceable> and <replaceable>ping-int</replaceable>.
2019+The default value is 60 = 6 seconds, the unit 0.1 seconds.
2020+ </para>
2021+ </listitem>
2022+ </varlistentry>
2023+ <varlistentry>
2024+ <term>
2025+ <option>connect-int <replaceable>time</replaceable></option>
2026+ </term>
2027+ <listitem>
2028+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>connect-int</secondary></indexterm>
2029+In case it is not possible to connect to the remote DRBD device immediately,
2030+DRBD keeps on trying to connect. With this option you can set the time
2031+between two retries. The default value is 10 seconds, the unit is 1 second.
2032+ </para>
2033+ </listitem>
2034+ </varlistentry>
2035+ <varlistentry>
2036+ <term>
2037+ <option>ping-int <replaceable>time</replaceable></option>
2038+ </term>
2039+ <listitem>
2040+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ping-int</secondary></indexterm>
2041+If the TCP/IP connection linking a DRBD device pair is idle for more than
2042+<replaceable>time</replaceable> seconds, DRBD will generate a keep-alive
2043+packet to check if its partner is still alive. The default is 10 seconds,
2044+the unit is 1 second.
2045+ </para>
2046+ </listitem>
2047+ </varlistentry>
2048+ <varlistentry>
2049+ <term>
2050+ <option>ping-timeout <replaceable>time</replaceable></option>
2051+ </term>
2052+ <listitem>
2053+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ping-timeout</secondary></indexterm>
2054+ The time the peer has time to answer to a keep-alive packet. In case
2055+ the peer's reply is not received within this time period, it is
2056+ considered as dead. The default value is 500ms, the default unit are tenths of a second.
2057+ </para>
2058+ </listitem>
2059+ </varlistentry>
2060+ <varlistentry>
2061+ <term>
2062+ <option>max-buffers <replaceable>number</replaceable></option>
2063+ </term>
2064+ <listitem>
2065+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>max-buffers </secondary></indexterm>
2066+ Maximum number of requests to be allocated by DRBD. Unit is PAGE_SIZE,
2067+ which is 4 KiB on most systems.
2068+ The minimum is hard coded to 32 (=128 KiB).
2069+ For high-performance installations it might help if you
2070+ increase that number. These buffers are used to hold
2071+ data blocks while they are written to disk.
2072+ </para>
2073+ </listitem>
2074+ </varlistentry>
2075+ <varlistentry>
2076+ <term>
2077+ <option>ko-count <replaceable>number</replaceable></option>
2078+ </term>
2079+ <listitem>
2080+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ko-count </secondary></indexterm>
2081+ In case the secondary node fails to complete a single write
2082+ request for <replaceable>count</replaceable> times the
2083+ <replaceable>timeout</replaceable>, it is expelled from the
2084+ cluster. (I.e. the primary node goes into <option>StandAlone</option> mode.)
2085+ The default value is 0, which disables this feature.
2086+ </para>
2087+ </listitem>
2088+ </varlistentry>
2089+ <varlistentry>
2090+ <term>
2091+ <option>max-epoch-size <replaceable>number</replaceable></option>
2092+ </term>
2093+ <listitem>
2094+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>max-epoch-size </secondary></indexterm>
2095+ The highest number of data blocks between two write barriers.
2096+ If you set this smaller than 10, you might decrease your performance.
2097+ </para>
2098+ </listitem>
2099+ </varlistentry>
2100+ <varlistentry>
2101+ <term>
2102+ <option>allow-two-primaries</option>
2103+ </term>
2104+ <listitem>
2105+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>allow-two-primaries</secondary></indexterm>
2106+ With this option set you may assign the primary role to both nodes. You only should
2107+ use this option if you use a shared storage file system on top of
2108+ DRBD. At the time of writing the only ones are: OCFS2 and GFS. If you
2109+ use this option with any other file system, you are going to crash your
2110+ nodes and to corrupt your data!
2111+ </para>
2112+ </listitem>
2113+ </varlistentry>
2114+ <varlistentry>
2115+ <term>
2116+ <option>unplug-watermark <replaceable>number</replaceable></option>
2117+ </term>
2118+ <listitem>
2119+ <indexterm significance="normal">
2120+ <primary>drbd.conf</primary>
2121+ <secondary>unplug-watermark </secondary>
2122+ </indexterm>
2123+ <para> When the number of pending write requests on the standby
2124+ (secondary) node exceeds the <option>unplug-watermark</option>, we trigger
2125+ the request processing of our backing storage device.
2126+ Some storage controllers deliver better performance with small
2127+ values, others deliver best performance when the value is set to
2128+ the same value as max-buffers. Minimum 16, default 128, maximum
2129+ 131072.
2130+ </para>
2131+ </listitem>
2132+ </varlistentry>
2133+ <varlistentry>
2134+ <term>
2135+ <option>cram-hmac-alg</option>
2136+ </term>
2137+ <listitem>
2138+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>cram-hmac-alg</secondary></indexterm>
2139+ You need to specify the HMAC algorithm to enable peer authentication
2140+ at all. You are strongly encouraged to use peer authentication. The HMAC
2141+ algorithm will be used for the challenge response authentication
2142+ of the peer. You may specify any digest algorithm that is named in
2143+ <option>/proc/crypto</option>.
2144+ </para>
2145+ </listitem>
2146+ </varlistentry>
2147+ <varlistentry>
2148+ <term>
2149+ <option>shared-secret</option>
2150+ </term>
2151+ <listitem>
2152+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>shared-secret</secondary></indexterm>
2153+ The shared secret used in peer authentication. May be up to 64 characters.
2154+ Note that peer authentication is disabled as long as no <option>cram-hmac-alg</option>
2155+ (see above) is specified.
2156+ </para>
2157+ </listitem>
2158+ </varlistentry>
2159+ <varlistentry>
2160+ <term>
2161+ <option>after-sb-0pri </option>
2162+ <replaceable>policy</replaceable>
2163+ </term>
2164+ <listitem>
2165+ <indexterm significance="normal">
2166+ <primary>drbd.conf</primary>
2167+ <secondary>after-sb-0pri </secondary>
2168+ </indexterm>
2169+ <para> possible policies are:
2170+ </para>
2171+ <variablelist>
2172+ <varlistentry>
2173+ <term>
2174+ <option>disconnect</option>
2175+ </term>
2176+ <listitem>
2177+ <para> No automatic resynchronization, simply disconnect.
2178+ </para>
2179+ </listitem>
2180+ </varlistentry>
2181+ <varlistentry>
2182+ <term>
2183+ <option>discard-younger-primary</option>
2184+ </term>
2185+ <listitem>
2186+ <para> Auto sync from the node that was primary before the split-brain situation happened.
2187+ </para>
2188+ </listitem>
2189+ </varlistentry>
2190+ <varlistentry>
2191+ <term>
2192+ <option>discard-older-primary</option>
2193+ </term>
2194+ <listitem>
2195+ <para> Auto sync from the node that became primary as second during
2196+ the split-brain situation.
2197+ </para>
2198+ </listitem>
2199+ </varlistentry>
2200+ <varlistentry>
2201+ <term>
2202+ <option>discard-zero-changes</option>
2203+ </term>
2204+ <listitem>
2205+ <para> In case one node did not write anything since the split
2206+ brain became evident, sync from the node that wrote something
2207+ to the node that did not write anything. In case none wrote
2208+ anything this policy uses a random decision to perform
2209+ a "resync" of 0 blocks. In case both have written something
2210+ this policy disconnects the nodes.
2211+ </para>
2212+ </listitem>
2213+ </varlistentry>
2214+ <varlistentry>
2215+ <term>
2216+ <option>discard-least-changes</option>
2217+ </term>
2218+ <listitem>
2219+ <para> Auto sync from the node that touched more blocks during the
2220+ split brain situation.
2221+ </para>
2222+ </listitem>
2223+ </varlistentry>
2224+ <varlistentry>
2225+ <term>
2226+ <option>discard-node-NODENAME</option>
2227+ </term>
2228+ <listitem>
2229+ <para> Auto sync to the named node.
2230+ </para>
2231+ </listitem>
2232+ </varlistentry>
2233+ </variablelist>
2234+ </listitem>
2235+ </varlistentry>
2236+ <varlistentry>
2237+ <term>
2238+ <option>after-sb-1pri </option>
2239+ <replaceable>policy</replaceable>
2240+ </term>
2241+ <listitem>
2242+ <indexterm significance="normal">
2243+ <primary>drbd.conf</primary>
2244+ <secondary>after-sb-1pri </secondary>
2245+ </indexterm>
2246+ <para> possible policies are:
2247+ </para>
2248+ <variablelist>
2249+ <varlistentry>
2250+ <term>
2251+ <option>disconnect</option>
2252+ </term>
2253+ <listitem>
2254+ <para> No automatic resynchronization, simply disconnect.
2255+ </para>
2256+ </listitem>
2257+ </varlistentry>
2258+ <varlistentry>
2259+ <term>
2260+ <option>consensus</option>
2261+ </term>
2262+ <listitem>
2263+ <para> Discard the version of the secondary if the outcome
2264+ of the <option>after-sb-0pri</option> algorithm would also
2265+ destroy the current secondary's data. Otherwise disconnect.
2266+ </para>
2267+ </listitem>
2268+ </varlistentry>
2269+ <varlistentry>
2270+ <term>
2271+ <option>violently-as0p</option>
2272+ </term>
2273+ <listitem>
2274+ <para> Always take the decision of the <option>after-sb-0pri</option>
2275+ algorithm, even if that causes an erratic change of
2276+ the primary's view of the data. This is only useful if
2277+ you use a one-node FS (i.e. not OCFS2 or GFS) with the
2278+ <option>allow-two-primaries</option> flag, <emphasis>AND</emphasis> if you really know what you
2279+ are doing. This is <emphasis>DANGEROUS and MAY CRASH YOUR MACHINE</emphasis>
2280+ if you have an FS mounted on the primary node.
2281+ </para>
2282+ </listitem>
2283+ </varlistentry>
2284+ <varlistentry>
2285+ <term>
2286+ <option>discard-secondary</option>
2287+ </term>
2288+ <listitem>
2289+ <para> Discard the secondary's version.
2290+ </para>
2291+ </listitem>
2292+ </varlistentry>
2293+ <varlistentry>
2294+ <term>
2295+ <option>call-pri-lost-after-sb</option>
2296+ </term>
2297+ <listitem>
2298+ <para> Always honor the outcome of the <option>after-sb-0pri
2299+ </option> algorithm. In case it decides the current
2300+ secondary has the right data, it calls the "pri-lost-after-sb"
2301+ handler on the current primary.
2302+ </para>
2303+ </listitem>
2304+ </varlistentry>
2305+ </variablelist>
2306+ </listitem>
2307+ </varlistentry>
2308+ <varlistentry>
2309+ <term>
2310+ <option>after-sb-2pri </option>
2311+ <replaceable>policy</replaceable>
2312+ </term>
2313+ <listitem>
2314+ <indexterm significance="normal">
2315+ <primary>drbd.conf</primary>
2316+ <secondary>after-sb-2pri </secondary>
2317+ </indexterm>
2318+ <para> possible policies are:
2319+ </para>
2320+ <variablelist>
2321+ <varlistentry>
2322+ <term>
2323+ <option>disconnect</option>
2324+ </term>
2325+ <listitem>
2326+ <para> No automatic resynchronization, simply disconnect.
2327+ </para>
2328+ </listitem>
2329+ </varlistentry>
2330+ <varlistentry>
2331+ <term>
2332+ <option>violently-as0p</option>
2333+ </term>
2334+ <listitem>
2335+ <para> Always take the decision of the <option>after-sb-0pri</option>
2336+ algorithm, even if that causes an erratic change of
2337+ the primary's view of the data. This is only useful if
2338+ you use a one-node FS (i.e. not OCFS2 or GFS) with the
2339+ <option>allow-two-primaries</option> flag, <emphasis>AND</emphasis> if you really know what you
2340+ are doing. This is <emphasis>DANGEROUS and MAY CRASH YOUR MACHINE</emphasis>
2341+ if you have an FS mounted on the primary node.
2342+ </para>
2343+ </listitem>
2344+ </varlistentry>
2345+ <varlistentry>
2346+ <term>
2347+ <option>call-pri-lost-after-sb</option>
2348+ </term>
2349+ <listitem>
2350+ <para> Call the "pri-lost-after-sb" helper program on one of the
2351+ machines. This program is expected to reboot the
2352+ machine, i.e. make it secondary.
2353+ </para>
2354+ </listitem>
2355+ </varlistentry>
2356+ </variablelist>
2357+ </listitem>
2358+ </varlistentry>
2359+ <varlistentry>
2360+ <term>
2361+ <option>always-asbp</option>
2362+ </term>
2363+ <listitem>
2364+ <para> Normally the automatic after-split-brain policies are only
2365+ used if current states of the UUIDs do not indicate the
2366+ presence of a third node.
2367+ </para>
2368+ <para> With this option you request that the automatic
2369+ after-split-brain policies are used as long as the data
2370+ sets of the nodes are somehow related. This might cause
2371+ a full sync, if the UUIDs indicate the presence of a third
2372+ node. (Or double faults led to strange UUID sets.)
2373+ </para>
2374+ </listitem>
2375+ </varlistentry>
2376+ <varlistentry>
2377+ <term>
2378+ <option>rr-conflict </option>
2379+ <replaceable>policy</replaceable>
2380+ </term>
2381+ <listitem>
2382+ <indexterm significance="normal">
2383+ <primary>drbd.conf</primary>
2384+ <secondary>rr-conflict </secondary>
2385+ </indexterm>
2386+ <para> This option helps to solve the cases when the outcome of the resync decision is
2387+ incompatible with the current role assignment in the cluster.
2388+ </para>
2389+ <variablelist>
2390+ <varlistentry>
2391+ <term>
2392+ <option>disconnect</option>
2393+ </term>
2394+ <listitem>
2395+ <para> No automatic resynchronization, simply disconnect.
2396+ </para>
2397+ </listitem>
2398+ </varlistentry>
2399+ <varlistentry>
2400+ <term>
2401+ <option>violently</option>
2402+ </term>
2403+ <listitem>
2404+ <para> Sync to the primary node is allowed, violating the
2405+ assumption that data on a block device are stable for one
2406+ of the nodes. <emphasis>Dangerous, do not use.</emphasis>
2407+ </para>
2408+ </listitem>
2409+ </varlistentry>
2410+ <varlistentry>
2411+ <term>
2412+ <option>call-pri-lost</option>
2413+ </term>
2414+ <listitem>
2415+ <para> Call the "pri-lost" helper program on one of the
2416+ machines. This program is expected to reboot the
2417+ machine, i.e. make it secondary.
2418+ </para>
2419+ </listitem>
2420+ </varlistentry>
2421+ </variablelist>
2422+ </listitem>
2423+ </varlistentry>
2424+ <varlistentry>
2425+ <term>
2426+ <option>data-integrity-alg </option>
2427+ <replaceable>alg</replaceable>
2428+ </term>
2429+ <listitem>
2430+ <indexterm significance="normal">
2431+ <primary>drbd.conf</primary>
2432+ <secondary>data-integrity-alg</secondary>
2433+ </indexterm>
2434+ <para> DRBD can ensure the data integrity of the user's data on the network
2435+ by comparing hash values. Normally this is ensured by the 16 bit checksums
2436+ in the headers of TCP/IP packets.</para>
2437+ <para>This option can be set to any of the kernel's data digest algorithms.
2438+ In a typical kernel configuration you should have
2439+ at least one of <option>md5</option>, <option>sha1</option>, and <option>crc32c</option>
2440+ available. By default this is not enabled.</para>
2441+ <para>See also the notes on data integrity.</para>
2442+ </listitem>
2443+ </varlistentry>
2444+ <varlistentry>
2445+ <term>
2446+ <option>no-tcp-cork</option>
2447+ </term>
2448+ <listitem>
2449+ <indexterm significance="normal">
2450+ <primary>drbd.conf</primary>
2451+ <secondary>no-tcp-cork</secondary>
2452+ </indexterm>
2453+ <para> DRBD usually uses the TCP socket option TCP_CORK to hint to the network
2454+ stack when it can expect more data, and when it should flush out what it
2455+ has in its send queue. It turned out that there is at least one network
2456+ stack that performs worse when one uses this hinting method. Therefore
2457+ we introducted this option, which disables the setting and clearing of
2458+ the TCP_CORK socket option by DRBD.</para>
2459+ </listitem>
2460+ </varlistentry>
2461+ <varlistentry>
2462+ <term>
2463+ <option>on-congestion <replaceable>congestion_policy</replaceable></option>
2464+ </term>
2465+ <term>
2466+ <option>congestion-fill <replaceable>fill_threshold</replaceable></option>
2467+ </term>
2468+ <term>
2469+ <option>congestion-extents <replaceable>active_extents_threshold</replaceable></option>
2470+ </term>
2471+ <listitem>
2472+ <para>By default DRBD blocks when the available TCP send queue becomes full.
2473+ That means it will slow down the application that generates the write
2474+ requests that cause DRBD to send more data down that TCP connection.
2475+ </para>
2476+ <para>When DRBD is deployed with DRBD-proxy it might be more desirable that
2477+ DRBD goes into AHEAD/BEHIND mode shortly before the send queue becomes full.
2478+ In AHEAD/BEHIND mode DRBD does no longer replicate data, but still keeps
2479+ the connection open.</para>
2480+ <para>The advantage of the AHEAD/BEHIND mode is that the
2481+ application is not slowed down, even if DRBD-proxy's buffer is
2482+ not sufficient to buffer all write requests. The downside is that
2483+ the peer node falls behind, and that a resync will be necessary to
2484+ bring it back into sync. During that resync the peer node will have
2485+ an inconsistent disk. </para>
2486+ <para>Available <replaceable>congestion_policy</replaceable>s are <option>block</option>
2487+ and <option>pull-ahead</option>. The default is <option>block</option>.
2488+ <replaceable>Fill_threshold</replaceable> might be in the range of 0 to 10GiBytes. The
2489+ default is 0 which disables the check. <replaceable>Active_extents_threshold</replaceable>
2490+ has the same limits as <option>al-extents</option>.</para>
2491+ <para>The AHEAD/BEHIND mode and its settings are available since DRBD 8.3.10.</para>
2492+ </listitem>
2493+ </varlistentry>
2494+ <varlistentry>
2495+ <term>
2496+ <option>wfc-timeout <replaceable>time</replaceable></option>
2497+ </term>
2498+ <listitem>
2499+ <para>Wait for connection timeout.
2500+ <indexterm significance="normal"><primary>drbd.conf</primary><secondary>wfc-timeout </secondary></indexterm>
2501+ The init script <citerefentry><refentrytitle>drbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> blocks the boot process
2502+ until the DRBD resources are connected.
2503+ When the cluster manager starts later,
2504+ it does not see a resource with internal split-brain.
2505+ In case you want to limit the wait time, do it here.
2506+ Default is 0, which means unlimited. The unit is seconds.
2507+ </para>
2508+ </listitem>
2509+ </varlistentry>
2510+ <varlistentry>
2511+ <term>
2512+ <option>degr-wfc-timeout <replaceable>time</replaceable></option>
2513+ </term>
2514+ <listitem>
2515+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>degr-wfc-timeout </secondary></indexterm>
2516+ Wait for connection timeout, if this node was a degraded cluster.
2517+ In case a degraded cluster (= cluster with only one node left)
2518+ is rebooted, this timeout value is used instead of wfc-timeout,
2519+ because the peer is less likely to show up in time,
2520+ if it had been dead before. Value 0 means unlimited.
2521+ </para>
2522+ </listitem>
2523+ </varlistentry>
2524+ <varlistentry>
2525+ <term>
2526+ <option>outdated-wfc-timeout <replaceable>time</replaceable></option>
2527+ </term>
2528+ <listitem>
2529+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>outdated-wfc-timeout </secondary></indexterm>
2530+ Wait for connection timeout, if the peer was outdated.
2531+ In case a degraded cluster (= cluster with only one node left)
2532+ with an outdated peer disk is rebooted, this timeout value is used instead of wfc-timeout,
2533+ because the peer is not allowed to become primary in the meantime.
2534+ Value 0 means unlimited.
2535+ </para>
2536+ </listitem>
2537+ </varlistentry>
2538+ <varlistentry>
2539+ <term>
2540+ <option>wait-after-sb</option>
2541+ </term>
2542+ <listitem>
2543+ <para> By setting this option you can make the init script to continue
2544+ to wait even if the device pair had a split brain situation
2545+ and therefore refuses to connect.
2546+ </para>
2547+ </listitem>
2548+ </varlistentry>
2549+ <varlistentry>
2550+ <term>
2551+ <option>become-primary-on <replaceable>node-name</replaceable></option>
2552+ </term>
2553+ <listitem>
2554+ <para> Sets on which node the device should be promoted to primary role by
2555+ the init script. The <replaceable>node-name</replaceable> might either
2556+ be a host name or the keyword <option>both</option>. When this option is
2557+ not set the devices stay in secondary role on both nodes. Usually
2558+ one delegates the role assignment to a cluster manager (e.g. heartbeat).
2559+ </para>
2560+ </listitem>
2561+ </varlistentry>
2562+ <varlistentry>
2563+ <term>
2564+ <option>stacked-timeouts</option>
2565+ </term>
2566+ <listitem>
2567+ <para> Usually <option>wfc-timeout</option> and <option>degr-wfc-timeout</option> are
2568+ ignored for stacked devices, instead twice the amount of <option>connect-int</option>
2569+ is used for the connection timeouts.
2570+ With the <option>stacked-timeouts</option> keyword you disable this, and force
2571+ DRBD to mind the <option>wfc-timeout</option> and <option>degr-wfc-timeout</option>
2572+ statements. Only do that if the peer of the stacked resource is usually not
2573+ available or will usually not become primary.
2574+ By using this option incorrectly, you run the risk of causing unexpected split brain.
2575+ </para>
2576+ </listitem>
2577+ </varlistentry>
2578+ <varlistentry>
2579+ <term>
2580+ <option>rate <replaceable>rate</replaceable></option>
2581+ </term>
2582+ <listitem>
2583+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>rate </secondary></indexterm>
2584+ To ensure a smooth operation of the application on top of DRBD,
2585+ it is possible to limit the bandwidth which may be used by
2586+ background synchronizations. The default is 250 KB/sec, the
2587+ default unit is KB/sec. Optional suffixes K, M, G are allowed.
2588+ </para>
2589+ </listitem>
2590+ </varlistentry>
2591+ <varlistentry>
2592+ <term>
2593+ <option>use-rle</option>
2594+ </term>
2595+ <listitem>
2596+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>use-rle </secondary></indexterm>
2597+ During resync-handshake, the dirty-bitmaps of the nodes are exchanged and
2598+ merged (using bit-or), so the nodes will have the same understanding of
2599+ which blocks are dirty. On large devices, the fine grained dirty-bitmap can
2600+ become large as well, and the bitmap exchange can take quite some time on
2601+ low-bandwidth links.
2602+ </para>
2603+ <para> Because the bitmap typically contains compact areas where
2604+ all bits are unset (clean) or set (dirty), a simple run-length
2605+ encoding scheme can considerably reduce the network traffic
2606+ necessary for the bitmap exchange.
2607+ </para>
2608+ <para> For backward compatibilty reasons, and because on fast
2609+ links this possibly does not improve transfer time but
2610+ consumes cpu cycles, this defaults to off.
2611+ </para>
2612+ </listitem>
2613+ </varlistentry>
2614+ <varlistentry>
2615+ <term>
2616+ <option>after <replaceable>res-name</replaceable></option>
2617+ </term>
2618+ <listitem>
2619+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>after </secondary></indexterm>
2620+ By default, resynchronization of all devices would run in parallel.
2621+ By defining a sync-after dependency, the resynchronization of this
2622+ resource will start only if the resource <replaceable>res-name</replaceable>
2623+ is already in connected state (i.e., has finished its resynchronization).
2624+ </para>
2625+ </listitem>
2626+ </varlistentry>
2627+ <varlistentry>
2628+ <term>
2629+ <option>al-extents <replaceable>extents</replaceable></option>
2630+ </term>
2631+ <listitem>
2632+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>al-extents </secondary></indexterm>
2633+ DRBD automatically performs hot area detection. With this
2634+ parameter you control how big the hot area (= active set) can
2635+ get. Each extent marks 4M of the backing storage (= low-level device).
2636+ In case a primary node leaves the cluster unexpectedly, the areas covered
2637+ by the active set must be resynced upon rejoining of the failed
2638+ node. The data structure is stored in the meta-data area, therefore each
2639+ change of the active set is a write operation
2640+ to the meta-data device. A higher number of extents gives
2641+ longer resync times but less updates to the meta-data. The
2642+ default number of <replaceable>extents</replaceable> is
2643+ 127. (Minimum: 7, Maximum: 3843)
2644+ </para>
2645+ </listitem>
2646+ </varlistentry>
2647+ <varlistentry>
2648+ <term>
2649+ <option>verify-alg <replaceable>hash-alg</replaceable></option>
2650+ </term>
2651+ <listitem>
2652+ <para>During online verification (as initiated by the
2653+ <command moreinfo="none">verify</command> sub-command),
2654+ rather than doing a bit-wise comparison, DRBD applies a hash function
2655+ to the contents of every block being verified, and compares that
2656+ hash with the peer. This option defines the hash algorithm being
2657+ used for that purpose. It can be set to any of the kernel's data
2658+ digest algorithms. In a typical kernel configuration you should have
2659+ at least one of <option>md5</option>, <option>sha1</option>, and <option>crc32c</option>
2660+ available. By default this is not enabled; you must set this
2661+ option explicitly in order to be able to use on-line device verification.</para>
2662+ <para>See also the notes on data integrity.</para>
2663+ </listitem>
2664+ </varlistentry>
2665+ <varlistentry>
2666+ <term>
2667+ <option>csums-alg <replaceable>hash-alg</replaceable></option>
2668+ </term>
2669+ <listitem>
2670+ <para>A resync process sends all marked data blocks from the source to
2671+ the destination node, as long as no <option>csums-alg</option> is
2672+ given. When one is specified the resync process exchanges hash values of all
2673+ marked blocks first, and sends only those data blocks that have different
2674+ hash values.</para>
2675+ <para>This setting is useful for DRBD setups with low bandwidth links.
2676+ During the restart of a crashed primary node, all blocks covered by the
2677+ activity log are marked for resync. But a large part of those will actually
2678+ be still in sync, therefore using <option>csums-alg</option> will lower
2679+ the required bandwidth in exchange for CPU cycles.</para>
2680+ </listitem>
2681+ </varlistentry>
2682+ <varlistentry>
2683+ <term>
2684+ <option>c-plan-ahead <replaceable>plan_time</replaceable></option>
2685+ </term>
2686+ <term>
2687+ <option>c-fill-target <replaceable>fill_target</replaceable></option>
2688+ </term>
2689+ <term>
2690+ <option>c-delay-target <replaceable>delay_target</replaceable></option>
2691+ </term>
2692+ <term>
2693+ <option>c-max-rate <replaceable>max_rate</replaceable></option>
2694+ </term>
2695+ <listitem>
2696+ <para>The dynamic resync speed controller gets enabled with setting
2697+ <replaceable>plan_time</replaceable> to a positive value. It aims to
2698+ fill the buffers along the data path with either a constant amount of data
2699+ <replaceable>fill_target</replaceable>, or aims to have a constant
2700+ delay time of <replaceable>delay_target</replaceable> along the
2701+ path. The controller has an upper bound of <replaceable>max_rate</replaceable>.
2702+ </para>
2703+ <para>
2704+ By <replaceable>plan_time</replaceable> the agility of the controller is configured.
2705+ Higher values yield for slower/lower responses of the controller to deviation
2706+ from the target value. It should be at least 5 times RTT.
2707+ For regular data paths a <replaceable>fill_target</replaceable>
2708+ in the area of 4k to 100k is appropriate. For a setup that contains drbd-proxy
2709+ it is advisable to use <replaceable>delay_target</replaceable> instead.
2710+ Only when <replaceable>fill_target</replaceable> is set to 0 the controller
2711+ will use <replaceable>delay_target</replaceable>. 5 times RTT is a reasonable
2712+ starting value. <replaceable>Max_rate</replaceable> should be set to the
2713+ bandwidth available between the DRBD-hosts and the machines hosting
2714+ DRBD-proxy, or to the available disk-bandwidth.
2715+ </para>
2716+ <para>
2717+ The default value of <replaceable>plan_time</replaceable> is 0, the default unit is
2718+ 0.1 seconds. <replaceable>Fill_target</replaceable> has 0 and sectors as default unit.
2719+ <replaceable>Delay_target</replaceable> has 1 (100ms) and 0.1 as default unit.
2720+ <replaceable>Max_rate</replaceable> has 10240 (100MiB/s) and KiB/s as default unit.
2721+ </para>
2722+ <para>
2723+ The dynamic resync speed controller and its settings are available since DRBD 8.3.9.
2724+ </para>
2725+ </listitem>
2726+ </varlistentry>
2727+ <varlistentry>
2728+ <term>
2729+ <option>c-min-rate <replaceable>min_rate</replaceable></option>
2730+ </term>
2731+ <listitem>
2732+ <para>A node that is primary and sync-source has to schedule application
2733+ IO requests and resync IO requests. The <replaceable>min_rate</replaceable>
2734+ tells DRBD use only up to min_rate for resync IO and to dedicate all
2735+ other available IO bandwidth to application requests.</para>
2736+ <para>Note: The value 0 has a special meaning. It disables the limitation
2737+ of resync IO completely, which might slow down application IO considerably.
2738+ Set it to a value of 1, if you prefer that resync IO never slows down
2739+ application IO.
2740+ </para>
2741+ <para>Note: Although the name might suggest that it is a lower bound for the
2742+ dynamic resync speed controller, it is not. If the DRBD-proxy buffer is full,
2743+ the dynamic resync speed controller is free to lower the resync speed down
2744+ to 0, completely independent of the <option>c-min-rate</option> setting.
2745+ </para>
2746+ <para>
2747+ <replaceable>Min_rate</replaceable> has 4096 (4MiB/s) and KiB/s as default unit.
2748+ </para>
2749+ </listitem>
2750+ </varlistentry>
2751+ <varlistentry>
2752+ <term>
2753+ <option>on-no-data-accessible <replaceable>ond-policy</replaceable></option>
2754+ </term>
2755+ <listitem>
2756+ <para>This setting controls what happens to IO requests on a degraded, disk less node
2757+ (I.e. no data store is reachable). The available policies are <option>io-error</option>
2758+ and <option>suspend-io</option>.</para>
2759+ <para>
2760+ If <replaceable>ond-policy</replaceable> is set to <option>suspend-io</option> you
2761+ can either resume IO by attaching/connecting the last lost data storage, or by
2762+ the <command moreinfo="none">drbdadm resume-io <replaceable>res</replaceable></command>
2763+ command. The latter will result in IO errors of course.
2764+ </para>
2765+ <para>
2766+ The default is <option>io-error</option>. This setting is available since DRBD 8.3.9.
2767+ </para>
2768+ </listitem>
2769+ </varlistentry>
2770+ <varlistentry>
2771+ <term>
2772+ <option>cpu-mask <replaceable>cpu-mask</replaceable></option>
2773+ </term>
2774+ <listitem>
2775+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>cpu-mask </secondary></indexterm>
2776+ Sets the cpu-affinity-mask for DRBD's kernel threads of this device. The
2777+ default value of <replaceable>cpu-mask</replaceable> is 0, which means
2778+ that DRBD's kernel threads should be spread over all CPUs of the machine.
2779+ This value must be given in hexadecimal notation. If it is too big it will
2780+ be truncated.
2781+ </para>
2782+ </listitem>
2783+ </varlistentry>
2784+ <varlistentry>
2785+ <term>
2786+ <option>pri-on-incon-degr <replaceable>cmd</replaceable></option>
2787+ </term>
2788+ <listitem>
2789+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-on-incon-degr </secondary></indexterm>
2790+ This handler is called if the node is primary, degraded
2791+ and if the local copy of the data is inconsistent.</para>
2792+ </listitem>
2793+ </varlistentry>
2794+ <varlistentry>
2795+ <term>
2796+ <option>pri-lost-after-sb <replaceable>cmd</replaceable></option>
2797+ </term>
2798+ <listitem>
2799+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-lost-after-sb </secondary></indexterm>
2800+ The node is currently primary, but lost the after-split-brain
2801+ auto recovery procedure. As as consequence, it should be abandoned.
2802+ </para>
2803+ </listitem>
2804+ </varlistentry>
2805+ <varlistentry>
2806+ <term>
2807+ <option>pri-lost <replaceable>cmd</replaceable></option>
2808+ </term>
2809+ <listitem>
2810+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-lost </secondary></indexterm>
2811+ The node is currently primary, but DRBD's algorithm
2812+ thinks that it should become sync target. As a consequence it should
2813+ give up its primary role.
2814+ </para>
2815+ </listitem>
2816+ </varlistentry>
2817+ <varlistentry>
2818+ <term>
2819+ <option>fence-peer <replaceable>cmd</replaceable></option>
2820+ </term>
2821+ <listitem>
2822+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>fence-peer </secondary></indexterm>
2823+ The handler is part of the <option>fencing</option>
2824+ mechanism. This handler is called in case the node needs to fence the
2825+ peer's disk. It should use other communication paths than DRBD's network
2826+ link. </para>
2827+ </listitem>
2828+ </varlistentry>
2829+ <varlistentry>
2830+ <term>
2831+ <option>local-io-error <replaceable>cmd</replaceable></option>
2832+ </term>
2833+ <listitem>
2834+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>local-io-error </secondary></indexterm>
2835+ DRBD got an IO error from the local IO subsystem.
2836+ </para>
2837+ </listitem>
2838+ </varlistentry>
2839+ <varlistentry>
2840+ <term>
2841+ <option>initial-split-brain <replaceable>cmd</replaceable></option>
2842+ </term>
2843+ <listitem>
2844+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>initial-split-brain </secondary></indexterm>
2845+ DRBD has connected and detected a split brain situation.
2846+ This handler can alert someone in all cases of split brain, not just
2847+ those that go unresolved.
2848+ </para>
2849+ </listitem>
2850+ </varlistentry>
2851+ <varlistentry>
2852+ <term>
2853+ <option>split-brain <replaceable>cmd</replaceable></option>
2854+ </term>
2855+ <listitem>
2856+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>split-brain </secondary></indexterm>
2857+ DRBD detected a split brain situation but remains unresolved.
2858+ Manual recovery is necessary. This handler should alert someone on duty.
2859+ </para>
2860+ </listitem>
2861+ </varlistentry>
2862+ <varlistentry>
2863+ <term>
2864+ <option>before-resync-target <replaceable>cmd</replaceable></option>
2865+ </term>
2866+ <listitem>
2867+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>before-resync-target </secondary></indexterm>
2868+ DRBD calls this handler just before a resync begins on the node
2869+ that becomes resync target. It might be used to take a snapshot of the
2870+ backing block device.
2871+ </para>
2872+ </listitem>
2873+ </varlistentry>
2874+ <varlistentry>
2875+ <term>
2876+ <option>after-resync-target <replaceable>cmd</replaceable></option>
2877+ </term>
2878+ <listitem>
2879+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>after-resync-target </secondary></indexterm>
2880+ DRBD calls this handler just after a resync operation finished on the
2881+ node whose disk just became consistent after being inconsistent for the
2882+ duration of the resync. It might be used to remove a snapshot of the backing device
2883+ that was created by the <option>before-resync-target</option> handler.
2884+ </para>
2885+ </listitem>
2886+ </varlistentry>
2887+ </variablelist>
2888+ </refsect2>
2889+ <refsect2>
2890+ <title>Other Keywords</title>
2891+ <variablelist>
2892+ <varlistentry>
2893+ <term>
2894+ <option>include <replaceable>file-pattern</replaceable></option>
2895+ </term>
2896+ <listitem>
2897+ <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>include</secondary></indexterm>
2898+ Include all files matching the wildcard pattern <replaceable>file-pattern</replaceable>.
2899+ The <option>include</option> statement
2900+ is only allowed on the top level, i.e. it is not allowed inside any section.
2901+ </para>
2902+ </listitem>
2903+ </varlistentry>
2904+ </variablelist>
2905+ </refsect2>
2906+ </refsect1>
2907+ <refsect1 id="data-integrity">
2908+ <title>Notes on data integrity</title>
2909+ <para>There are two independent methods in DRBD to ensure the integrity of
2910+the mirrored data. The online-verify mechanism and the <option>data-integrity-alg</option>
2911+of the <option>network</option> section.</para>
2912+ <para>Both mechanisms might deliver false positives if the user of DRBD modifies the
2913+data which gets written to disk while the transfer goes on. This may happen for
2914+swap, or for certain append while global sync, or truncate/rewrite workloads,
2915+and not necessarily poses a problem for the integrity of the data.
2916+Usually when the initiator of the data transfer does this, it already knows that
2917+that data block will not be part of an on disk data structure, or will be resubmitted
2918+with correct data soon enough.</para>
2919+<para>The <option>data-integrity-alg</option> causes the receiving side to log
2920+an error about "Digest integrity check FAILED: Ns +x\n", where N is the sector
2921+offset, and x is the size of the requst in bytes. It will then disconnect, and
2922+reconnect, thus causing a quick resync. If the sending side at the same time
2923+detected a modification, it warns about "Digest mismatch, buffer modified by
2924+upper layers during write: Ns +x\n", which shows that this was a false positive.
2925+The sending side may detect these buffer modifications immediately after the
2926+unmodified data has been copied to the tcp buffers, in which case the receiving
2927+side won't notice it.</para>
2928+ <para>The most recent (2007) example of systematic corruption was an
2929+issue with the TCP offloading engine and the driver of a certain type
2930+of GBit NIC. The actual corruption happened on the DMA transfer from
2931+core memory to the card. Since the TCP checksum gets calculated on the card,
2932+this type of corruption stays undetected as long as you do not use
2933+either the online <option>verify</option> or the <option>data-integrity-alg</option>.</para>
2934+ <para>We suggest to use the <option>data-integrity-alg</option> only during a
2935+pre-production phase due to its CPU costs. Further we suggest to do online
2936+<option>verify</option> runs regularly e.g. once a month during a low load period.</para>
2937+ </refsect1>
2938+ <refsect1>
2939+ <title>Version</title>
2940+ <simpara>This document was revised for version 8.3.2 of the DRBD distribution.</simpara>
2941+ </refsect1>
2942+ <refsect1>
2943+ <title>Author</title>
2944+ <simpara>Written by Philipp Reisner <email>philipp.reisner@linbit.com</email>
2945+ and Lars Ellenberg <email>lars.ellenberg@linbit.com</email>.</simpara>
2946+ </refsect1>
2947+ <refsect1>
2948+ <title>Reporting Bugs</title>
2949+ <simpara>Report bugs to <email>drbd-user@lists.linbit.com</email>.</simpara>
2950+ </refsect1>
2951+ <refsect1>
2952+ <title>Copyright</title>
2953+ <simpara>Copyright 2001-2008 LINBIT Information Technologies,
2954+Philipp Reisner, Lars Ellenberg. This is free software;
2955+see the source for copying conditions. There is NO warranty;
2956+not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</simpara>
2957+ </refsect1>
2958+ <refsect1>
2959+ <title>See Also</title>
2960+ <para><citerefentry><refentrytitle>drbd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
2961+ <citerefentry><refentrytitle>drbddisk</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
2962+ <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
2963+ <citerefentry><refentrytitle>drbdadm</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
2964+ <ulink url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>,
2965+ <ulink url="http://www.drbd.org/"><citetitle>DRBD web site</citetitle></ulink></para>
2966+ </refsect1>
2967+</refentry>
2968
2969=== removed file 'documentation/drbd.conf.xml'
2970--- documentation/drbd.conf.xml 2011-07-05 15:40:13 +0000
2971+++ documentation/drbd.conf.xml 1970-01-01 00:00:00 +0000
2972@@ -1,1752 +0,0 @@
2973-<?xml version="1.0"?>
2974-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
2975-<refentry id="re-drbdconf">
2976- <refentryinfo>
2977- <date>5 Dec 2008</date>
2978- <productname>DRBD</productname>
2979- <productnumber>8.3.2</productnumber>
2980- </refentryinfo>
2981- <refmeta>
2982- <refentrytitle>drbd.conf</refentrytitle>
2983- <manvolnum>5</manvolnum>
2984- <refmiscinfo class="manual">Configuration Files</refmiscinfo>
2985- </refmeta>
2986- <refnamediv>
2987- <refname>drbd.conf</refname>
2988- <refpurpose>Configuration file for DRBD's devices
2989- <indexterm significance="normal">
2990- <primary>drbd.conf</primary>
2991- </indexterm>
2992- </refpurpose>
2993- </refnamediv>
2994- <refsect1>
2995- <title>Introduction</title>
2996- <para> The file <option>/etc/drbd.conf</option> is read by
2997- <option>drbdadm</option>.
2998- </para>
2999- <para> The file format was designed as to allow to have
3000- a verbatim copy of the file on both nodes of the cluster.
3001- It is highly recommended to do so in order to keep your configuration
3002- manageable. The file <option>/etc/drbd.conf</option> should be the same on both nodes of the cluster. Changes to <option>/etc/drbd.conf</option> do not apply
3003- immediately.
3004-<example><title>A small drbd.conf file</title><programlisting format="linespecific">global { usage-count yes; }
3005-common { syncer { rate 10M; } }
3006-resource r0 {
3007- protocol C;
3008- net {
3009- cram-hmac-alg sha1;
3010- shared-secret "FooFunFactory";
3011- }
3012- on alice {
3013- device minor 1;
3014- disk /dev/sda7;
3015- address 10.1.1.31:7789;
3016- meta-disk internal;
3017- }
3018- on bob {
3019- device minor 1;
3020- disk /dev/sda7;
3021- address 10.1.1.32:7789;
3022- meta-disk internal;
3023- }
3024-}</programlisting></example>
3025- In this example, there is a single DRBD resource (called r0) which uses
3026- protocol C for the connection between its devices.
3027- The device which runs
3028- on host <replaceable>alice</replaceable> uses
3029- <replaceable>/dev/drbd1</replaceable> as devices for its application, and
3030- <replaceable>/dev/sda7</replaceable> as low-level storage for the data.
3031- The IP addresses are used to specify the networking interfaces to be used.
3032- An eventually running resync process should use about 10MByte/second of IO
3033- bandwidth.
3034- </para>
3035- <para> There may be multiple resource sections in a single drbd.conf file.
3036- For more examples, please have a look at the
3037- <ulink url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>.
3038- </para>
3039- </refsect1>
3040- <refsect1>
3041- <title>File Format</title>
3042- <para> The file consists of sections and parameters.
3043- A section begins with a keyword, sometimes an additional name, and an
3044- opening brace (<quote>{</quote>).
3045- A section ends with a closing brace (<quote>}</quote>.
3046- The braces enclose the parameters.
3047- </para>
3048- <para> section [name] { parameter value; [...] }
3049- </para>
3050- <para> A parameter starts with the identifier of the parameter followed
3051- by whitespace. Every subsequent character
3052- is considered
3053- as part of the parameter's value. A special case are Boolean
3054- parameters which consist only of the identifier.
3055- Parameters are terminated by a semicolon (<quote>;</quote>).
3056- </para>
3057- <para>Some parameter values have default units which might be overruled
3058- by K, M or G. These units are defined in the usual way (K = 2^10 = 1024,
3059- M = 1024 K, G = 1024 M).
3060- </para>
3061- <para> Comments may be placed into the configuration file and must
3062- begin with a hash sign (<quote>#</quote>). Subsequent characters are ignored
3063- until the end of the line.
3064- </para>
3065- <refsect2>
3066- <title>Sections</title>
3067- <variablelist>
3068- <varlistentry>
3069- <term>
3070- <option>skip</option>
3071- </term>
3072- <listitem>
3073- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>skip</secondary></indexterm>
3074- Comments out chunks of text, even spanning more than one line.
3075- Characters between the keyword <option>skip</option> and the opening
3076- brace (<quote>{</quote>) are ignored. Everything enclosed by the braces
3077- is skipped.
3078- This comes in handy, if you just want to comment out
3079- some '<option>resource [name] {...}</option>' section: just precede it with '<quote>skip</quote>'.
3080- </para>
3081- </listitem>
3082- </varlistentry>
3083- <varlistentry>
3084- <term>
3085- <option>global</option>
3086- </term>
3087- <listitem>
3088- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>global</secondary></indexterm>
3089- Configures some global parameters. Currently only
3090- <option>minor-count</option>, <option>dialog-refresh</option>,
3091- <option>disable-ip-verification</option> and <option>usage-count</option>
3092- are allowed here. You may only have one global section, preferably
3093- as the first section.
3094- </para>
3095- </listitem>
3096- </varlistentry>
3097- <varlistentry>
3098- <term>
3099- <option>common</option>
3100- </term>
3101- <listitem>
3102- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>common</secondary></indexterm>
3103- All resources inherit the options set in this section.
3104- The common section might have
3105- a <option>startup</option>,
3106- a <option>syncer</option>,
3107- a <option>handlers</option>,
3108- a <option>net</option> and a <option>disk</option> section.
3109- </para>
3110- </listitem>
3111- </varlistentry>
3112- <varlistentry>
3113- <term>
3114- <option>resource <replaceable>name</replaceable></option>
3115- </term>
3116- <listitem>
3117- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>resource</secondary></indexterm>
3118- Configures a DRBD resource.
3119- Each resource section needs to have two (or more)
3120- <option>on <replaceable>host</replaceable></option> sections
3121- and may have
3122- a <option>startup</option>,
3123- a <option>syncer</option>,
3124- a <option>handlers</option>,
3125- a <option>net</option> and a <option>disk</option> section.
3126- Required parameter in this section: <option>protocol</option>.
3127- </para>
3128- </listitem>
3129- </varlistentry>
3130- <varlistentry>
3131- <term>
3132- <option>on <replaceable>host-name</replaceable></option>
3133- </term>
3134- <listitem>
3135- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on</secondary></indexterm>
3136- Carries the necessary configuration parameters for a DRBD
3137- device of the enclosing resource.
3138- <replaceable>host-name</replaceable> is mandatory and must match the
3139- Linux host name (uname -n) of one of the nodes.
3140- You may list more than one host name here, in case you want to use the same
3141- parameters on several hosts (you'd have to move the IP around usually).
3142- Or you may list more than two such sections.
3143- <programlisting format="linespecific"> resource r1 {
3144- protocol C;
3145- device minor 1;
3146- meta-disk internal;
3147-
3148- on alice bob {
3149- address 10.2.2.100:7801;
3150- disk /dev/mapper/some-san;
3151- }
3152- on charlie {
3153- address 10.2.2.101:7801;
3154- disk /dev/mapper/other-san;
3155- }
3156- on daisy {
3157- address 10.2.2.103:7801;
3158- disk /dev/mapper/other-san-as-seen-from-daisy;
3159- }
3160- }
3161- </programlisting>
3162- See also the <option>floating</option> section keyword.
3163- Required parameters in this section: <option>device</option>,
3164- <option>disk</option>, <option>address</option>, <option>meta-disk</option>,
3165- <option>flexible-meta-disk</option>.
3166- </para>
3167- </listitem>
3168- </varlistentry>
3169- <varlistentry>
3170- <term>
3171- <option>stacked-on-top-of <replaceable>resource</replaceable></option>
3172- </term>
3173- <listitem>
3174- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>stacked-on-top-of</secondary></indexterm>
3175- For a stacked DRBD setup (3 or 4 nodes), a <option>stacked-on-top-of</option> is used
3176- instead of an <option>on</option> section.
3177- Required parameters in this section: <option>device</option> and
3178- <option>address</option>.
3179- </para>
3180- </listitem>
3181- </varlistentry>
3182- <varlistentry>
3183- <term>
3184- <option>floating <replaceable>AF addr:port</replaceable></option>
3185- </term>
3186- <listitem>
3187- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on</secondary></indexterm>
3188- Carries the necessary configuration parameters for a DRBD
3189- device of the enclosing resource.
3190- This section is very similar to the <option>on</option> section.
3191- The difference to the <option>on</option> section is that
3192- the matching of the host sections to machines is done by the IP-address
3193- instead of the node name.
3194- Required parameters in this section: <option>device</option>,
3195- <option>disk</option>, <option>meta-disk</option>,
3196- <option>flexible-meta-disk</option>, all of which <emphasis>may</emphasis> be
3197- inherited from the resource section, in which case you may shorten this section
3198- down to just the address identifier.
3199- <programlisting format="linespecific"> resource r2 {
3200- protocol C;
3201- device minor 2;
3202- disk /dev/sda7;
3203- meta-disk internal;
3204-
3205- # short form, device, disk and meta-disk inherited
3206- floating 10.1.1.31:7802;
3207-
3208- # longer form, only device inherited
3209- floating 10.1.1.32:7802 {
3210- disk /dev/sdb;
3211- meta-disk /dev/sdc8;
3212- }
3213- }
3214- </programlisting>
3215- </para>
3216- </listitem>
3217- </varlistentry>
3218- <varlistentry>
3219- <term>
3220- <option>disk</option>
3221- </term>
3222- <listitem>
3223- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>disk</secondary></indexterm>
3224- This section is used to fine tune DRBD's properties
3225- in respect to the low level storage. Please
3226- refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for detailed description of
3227- the parameters.
3228- Optional parameters: <option>on-io-error</option>,
3229- <option>size</option>, <option>fencing</option>, <option>use-bmbv</option>,
3230- <option>no-disk-barrier</option>, <option>no-disk-flushes</option>,
3231- <option>no-disk-drain</option>, <option>no-md-flushes</option>,
3232- <option>max-bio-bvecs</option>.
3233- </para>
3234- </listitem>
3235- </varlistentry>
3236- <varlistentry>
3237- <term>
3238- <option>net</option>
3239- </term>
3240- <listitem>
3241- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>net</secondary></indexterm>
3242- This section is used to fine tune DRBD's properties. Please
3243- refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
3244- of this section's parameters.
3245- Optional parameters:
3246- <option>sndbuf-size</option>, <option>rcvbuf-size</option>,
3247- <option>timeout</option>,
3248- <option>connect-int</option>, <option>ping-int</option>,
3249- <option>ping-timeout</option>,
3250- <option>max-buffers</option>, <option>max-epoch-size</option>,
3251- <option>ko-count</option>, <option>allow-two-primaries</option>,
3252- <option>cram-hmac-alg</option>, <option>shared-secret</option>,
3253- <option>after-sb-0pri</option>, <option>after-sb-1pri</option>,
3254- <option>after-sb-2pri</option>, <option>data-integrity-alg</option>,
3255- <option>no-tcp-cork</option>, <option>on-congestion</option>,
3256- <option>congestion-fill</option>, <option>congestion-extents</option>
3257- </para>
3258- </listitem>
3259- </varlistentry>
3260- <varlistentry>
3261- <term>
3262- <option>startup</option>
3263- </term>
3264- <listitem>
3265- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>startup</secondary></indexterm>
3266- This section is used to fine tune DRBD's properties. Please
3267- refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
3268- of this section's parameters.
3269- Optional parameters:
3270- <option>wfc-timeout</option>, <option>degr-wfc-timeout</option>,
3271- <option>outdated-wfc-timeout</option>,
3272- <option>wait-after-sb</option>, <option>stacked-timeouts</option>
3273- and <option>become-primary-on</option>.
3274- </para>
3275- </listitem>
3276- </varlistentry>
3277- <varlistentry>
3278- <term>
3279- <option>syncer</option>
3280- </term>
3281- <listitem>
3282- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>syncer</secondary></indexterm>
3283- This section is used to fine tune the synchronization daemon
3284- for the device. Please
3285- refer to <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry> for a detailed description
3286- of this section's parameters.
3287- Optional parameters:
3288- <option>rate</option>, <option>after</option>, <option>al-extents</option>,
3289- <option>use-rle</option>,
3290- <option>cpu-mask</option>, <option>verify-alg</option>, <option>csums-alg</option>,
3291- <option>c-plan-ahead</option>, <option>c-fill-target</option>,
3292- <option>c-delay-target</option>, <option>c-max-rate</option>,
3293- <option>c-min-rate</option>
3294- and <option>on-no-data-accessible</option>.
3295- </para>
3296- </listitem>
3297- </varlistentry>
3298- <varlistentry>
3299- <term>
3300- <option>handlers</option>
3301- </term>
3302- <listitem>
3303- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>handlers</secondary></indexterm>
3304- In this section you can define handlers (executables) that are started
3305- by the DRBD system in response to certain events.
3306- Optional parameters:
3307- <option>pri-on-incon-degr</option>, <option>pri-lost-after-sb</option>,
3308- <option>pri-lost</option>, <option>fence-peer</option> (formerly oudate-peer),
3309- <option>local-io-error</option>, <option>initial-split-brain</option>, <option>split-brain</option>,
3310- <option>before-resync-target</option>, <option>after-resync-target</option>.
3311- </para>
3312- <para>
3313- The interface is done via environment variables:
3314- <variablelist>
3315- <varlistentry>
3316- <term><option>DRBD_RESOURCE</option></term>
3317- <listitem><para>is the name of the resource</para></listitem>
3318- </varlistentry>
3319- <varlistentry>
3320- <term><option>DRBD_MINOR</option></term>
3321- <listitem><para>is the minor number of the DRBD device, in decimal.</para></listitem>
3322- </varlistentry>
3323- <varlistentry>
3324- <term><option>DRBD_CONF</option></term>
3325- <listitem><para>
3326- is the path to the primary configuration file; if you
3327- split your configuration into multiple files (e.g. in <option>/etc/drbd.conf.d/</option>),
3328- this will not be helpful.
3329- </para></listitem>
3330- </varlistentry>
3331- <varlistentry>
3332- <term><option>DRBD_PEER_AF</option>,
3333- <option>DRBD_PEER_ADDRESS</option>,
3334- <option>DRBD_PEERS</option></term>
3335- <listitem><para>
3336- are the address family (e.g. <option>ipv6</option>),
3337- the peer's address and hostnames.
3338- </para></listitem>
3339- </varlistentry>
3340- </variablelist>
3341- <option>DRBD_PEER</option> (note the singular form) is deprecated, and superseeded by DRBD_PEERS.
3342- </para>
3343- <para>
3344- Please note that not all of these might be set for all handlers, and that some values might not be useable for a <option>floating</option> definition.
3345- </para>
3346- </listitem>
3347- </varlistentry>
3348- </variablelist>
3349- </refsect2>
3350- <refsect2>
3351- <title>Parameters</title>
3352- <variablelist>
3353- <varlistentry>
3354- <term>
3355- <option>minor-count <replaceable>count</replaceable></option>
3356- </term>
3357- <listitem>
3358- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>minor-count </secondary></indexterm><replaceable>count</replaceable> may be a number from 1 to 255.
3359- </para>
3360- <para>Use <replaceable>minor-count</replaceable>
3361- if you want to define massively more resources later without reloading
3362- the DRBD kernel
3363- module. Per default the module loads with 11 more resources than you have currently
3364- in your config but at least 32.</para>
3365- </listitem>
3366- </varlistentry>
3367- <varlistentry>
3368- <term>
3369- <option>dialog-refresh <replaceable>time</replaceable></option>
3370- </term>
3371- <listitem>
3372- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>dialog-refresh </secondary></indexterm><replaceable>time</replaceable> may be 0 or a positive number.
3373- </para>
3374- <para>The user dialog redraws the second count every
3375- <replaceable>time</replaceable> seconds (or does no redraws if
3376- <replaceable>time</replaceable> is 0). The default value is 1.</para>
3377- </listitem>
3378- </varlistentry>
3379- <varlistentry>
3380- <term>
3381- <option>disable-ip-verification</option>
3382- </term>
3383- <listitem>
3384- <indexterm significance="normal">
3385- <primary>drbd.conf</primary>
3386- <secondary>disable-ip-verification</secondary>
3387- </indexterm>
3388- <para>Use <replaceable>disable-ip-verification</replaceable>
3389- if, for some obscure reasons, drbdadm can/might not use <option>ip</option> or <option>ifconfig</option>
3390- to do a sanity check for the IP address. You can disable the IP verification with
3391- this option.
3392- </para>
3393- </listitem>
3394- </varlistentry>
3395- <varlistentry>
3396- <term>
3397- <option>usage-count <replaceable>val</replaceable></option>
3398- </term>
3399- <listitem>
3400- <indexterm significance="normal">
3401- <primary>drbd.conf</primary>
3402- <secondary>usage-count </secondary>
3403- </indexterm>
3404- <para>Please participate in
3405- <ulink url="http://usage.drbd.org"><citetitle>DRBD's online usage counter</citetitle></ulink>.
3406- The most convenient way to do so
3407- is to set this option to <option>yes</option>. Valid options are:
3408- <option>yes</option>, <option>no</option> and <option>ask</option>.
3409- </para>
3410- </listitem>
3411- </varlistentry>
3412- <varlistentry>
3413- <term>
3414- <option>protocol <replaceable>prot-id</replaceable></option>
3415- </term>
3416- <listitem>
3417- <indexterm significance="normal">
3418- <primary>drbd.conf</primary>
3419- <secondary>protocol</secondary>
3420- </indexterm>
3421- <para>On the TCP/IP link the specified <replaceable>protocol</replaceable>
3422- is used. Valid protocol specifiers are A, B, and C.</para>
3423- <para>Protocol A: write IO is reported as completed, if it has
3424- reached local disk and local TCP send buffer.</para>
3425- <para>Protocol B: write IO is reported as completed, if it has reached
3426- local disk and remote buffer cache.</para>
3427- <para>Protocol C: write IO is reported as completed, if it has
3428- reached both local and remote disk.</para>
3429- </listitem>
3430- </varlistentry>
3431- <varlistentry>
3432- <term>
3433- <option>device <replaceable>name</replaceable> minor <replaceable>nr</replaceable></option>
3434- </term>
3435- <listitem>
3436- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>device</secondary></indexterm>
3437- The name of the block device node of the resource being described.
3438- You must use this device with your application (file system) and
3439- you must not use the low level block device which is specified with the
3440- <option>disk</option> parameter.
3441- </para>
3442- <para> One can ether omit the <replaceable>name</replaceable> or <option>minor</option>
3443- and the <replaceable>minor number</replaceable>. If you omit the <replaceable>name</replaceable>
3444- a default of /dev/drbd<replaceable>minor</replaceable> will be used.
3445- </para>
3446- <para> Udev will create additional symlinks in /dev/drbd/by-res and /dev/drbd/by-disk.
3447- </para>
3448- </listitem>
3449- </varlistentry>
3450- <varlistentry>
3451- <term>
3452- <option>disk <replaceable>name</replaceable></option>
3453- </term>
3454- <listitem>
3455- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>disk</secondary></indexterm>
3456- DRBD uses this block device to actually store and retrieve the data.
3457- Never access such a device while DRBD is running on top of it. This
3458- also holds true for <citerefentry><refentrytitle>dumpe2fs</refentrytitle><manvolnum>8</manvolnum></citerefentry> and similar commands.
3459- </para>
3460- </listitem>
3461- </varlistentry>
3462- <varlistentry>
3463- <term>
3464- <option>address <replaceable>AF addr:port</replaceable></option>
3465- </term>
3466- <listitem>
3467- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>address</secondary></indexterm>
3468- A resource needs one <replaceable>IP</replaceable> address per device,
3469- which is used to wait for incoming connections from the partner device
3470- respectively to reach the partner device. <replaceable>AF</replaceable>
3471- must be one of <option>ipv4</option>, <option>ipv6</option>, <option>ssocks</option>
3472- or <option>sdp</option>
3473- (for compatibility reasons <option>sci</option> is an alias for <option>ssocks</option>).
3474- It may be omited for IPv4 addresses. The actual IPv6 address that follows
3475- the <option>ipv6</option> keyword must be placed inside brackets:
3476- <literal moreinfo="none">ipv6 [fd01:2345:6789:abcd::1]:7800</literal>.
3477- </para>
3478- <para> Each DRBD resource needs a TCP <replaceable>port</replaceable>
3479- which is used to connect to the node's partner device.
3480- Two different DRBD resources may not use the same
3481- <replaceable>addr:port</replaceable> combination on the same node.
3482- </para>
3483- </listitem>
3484- </varlistentry>
3485- <varlistentry>
3486- <term>
3487- <option>meta-disk <replaceable>internal</replaceable></option>
3488- </term>
3489- <term>
3490- <option>flexible-meta-disk <replaceable>internal</replaceable></option>
3491- </term>
3492- <term>
3493- <option>meta-disk <replaceable>device [index]</replaceable></option>
3494- </term>
3495- <term>
3496- <option>flexible-meta-disk <replaceable>device </replaceable></option>
3497- </term>
3498- <listitem>
3499- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>meta-disk</secondary></indexterm><indexterm significance="normal"><primary>drbd.conf</primary><secondary>flexible-meta-disk</secondary></indexterm>
3500- Internal means that the last part of the backing device is used to store
3501- the meta-data. You must not use <replaceable>[index]</replaceable> with
3502- internal. Note: Regardless of whether you use the <option>meta-disk</option> or
3503- the <option>flexible-meta-disk</option> keyword, it will always be of
3504- the size needed for the remaining storage size.
3505- </para>
3506- <para> You can use a single block <replaceable>device</replaceable> to store
3507- meta-data of multiple DRBD devices.
3508- E.g. use meta-disk /dev/sde6[0]; and meta-disk /dev/sde6[1];
3509- for two different resources. In this case the meta-disk
3510- would need to be at least 256 MB in size.
3511- </para>
3512- <para> With the <option>flexible-meta-disk</option> keyword you specify
3513- a block device as meta-data storage. You usually use this with LVM,
3514- which allows you to have many variable sized block devices.
3515- The required size of the meta-disk block device is
3516- 36kB + Backing-Storage-size / 32k. Round this number to the next 4kb
3517- boundary up and you have the exact size.
3518- Rule of the thumb: 32kByte per 1GByte of storage, round up to the next
3519- MB.</para>
3520- </listitem>
3521- </varlistentry>
3522- <varlistentry>
3523- <term>
3524- <option>on-io-error <replaceable>handler</replaceable></option>
3525- </term>
3526- <listitem>
3527- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>on-io-error</secondary></indexterm><replaceable>handler</replaceable> is taken, if the lower level
3528- device reports io-errors to the upper layers.
3529- </para>
3530- <para><replaceable>handler</replaceable> may be <option>pass_on</option>, <option>call-local-io-error</option>
3531- or <option>detach.</option>
3532- </para>
3533- <para><option>pass_on</option>: The node downgrades the disk status to inconsistent, marks the
3534- erroneous block as inconsistent in the bitmap and retries the IO on the remote node.</para>
3535- <para><option>call-local-io-error</option>: Call the handler script
3536- <option>local-io-error</option>.</para>
3537- <para><option>detach</option>: The node drops its low level device, and continues in diskless mode.</para>
3538- </listitem>
3539- </varlistentry>
3540- <varlistentry>
3541- <term>
3542- <option>fencing <replaceable>fencing_policy</replaceable></option>
3543- </term>
3544- <listitem>
3545- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>fencing</secondary></indexterm>
3546- By <option>fencing</option> we understand preventive
3547- measures to avoid situations where both nodes are primary
3548- and disconnected (AKA split brain).
3549- </para>
3550- <para>Valid fencing policies are:</para>
3551- <variablelist>
3552- <varlistentry>
3553- <term>
3554- <option>dont-care</option>
3555- </term>
3556- <listitem>
3557- <para> This is the default policy. No fencing actions are taken.
3558- </para>
3559- </listitem>
3560- </varlistentry>
3561- <varlistentry>
3562- <term>
3563- <option>resource-only</option>
3564- </term>
3565- <listitem>
3566- <para> If a node becomes a disconnected primary, it tries to fence
3567- the peer's disk. This is done by calling the <option>fence-peer</option>
3568- handler. The handler is supposed to reach the other node over
3569- alternative communication paths and call '<option>drbdadm outdate
3570- res</option>' there.
3571- </para>
3572- </listitem>
3573- </varlistentry>
3574- <varlistentry>
3575- <term>
3576- <option>resource-and-stonith</option>
3577- </term>
3578- <listitem>
3579- <para> If a node becomes a disconnected primary, it freezes all
3580- its IO operations and calls its fence-peer handler. The
3581- fence-peer handler is supposed to reach the peer over
3582- alternative communication paths and call 'drbdadm outdate
3583- res' there. In case it cannot reach the peer it should
3584- stonith the peer. IO is resumed as soon as the situation
3585- is resolved. In case your handler fails, you can resume
3586- IO with the <option>resume-io</option> command.
3587- </para>
3588- </listitem>
3589- </varlistentry>
3590- </variablelist>
3591- </listitem>
3592- </varlistentry>
3593- <varlistentry>
3594- <term>
3595- <option>use-bmbv</option>
3596- </term>
3597- <listitem>
3598- <indexterm significance="normal">
3599- <primary>drbd.conf</primary>
3600- <secondary>use-bmbv</secondary>
3601- </indexterm>
3602- <para> In case the backing storage's driver has a merge_bvec_fn() function,
3603- DRBD has to pretend that it can only process IO requests in
3604- units not larger than 4KiB. (At the time of writing the only known drivers which have such a function
3605- are: md (software raid driver), dm (device mapper - LVM) and DRBD
3606- itself).</para>
3607- <para> To get the best performance out of DRBD on top of software RAID (or any
3608- other driver with a merge_bvec_fn() function) you might enable this
3609- function, if you know for sure that the merge_bvec_fn() function will
3610- deliver the same results on all nodes of your cluster. I.e. the
3611- physical disks of the software RAID are of exactly the same
3612- type. <emphasis>Use this option only if you know what you are
3613- doing.</emphasis>
3614- </para>
3615- </listitem>
3616- </varlistentry>
3617- <varlistentry>
3618- <term>
3619- <option>no-disk-barrier</option>
3620- </term>
3621- <term>
3622- <option>no-disk-flushes</option>
3623- </term>
3624- <term>
3625- <option>no-disk-drain</option>
3626- </term>
3627- <listitem>
3628- <indexterm significance="normal">
3629- <primary>drbd.conf</primary>
3630- <secondary>no-disk-flushes</secondary>
3631- </indexterm>
3632- <indexterm significance="normal">
3633- <primary>drbd.conf</primary>
3634- <secondary>no-disk-flushes</secondary>
3635- </indexterm>
3636- <indexterm significance="normal">
3637- <primary>drbd.conf</primary>
3638- <secondary>no-disk-flushes</secondary>
3639- </indexterm>
3640- <para> DRBD has four implementations to express write-after-write dependencies to
3641- its backing storage device. DRBD will use the first method that is
3642- supported by the backing storage device and that is not disabled by the user.
3643- </para>
3644- <para> When selecting the method you should not only base your decision on the
3645- measurable performance. In case your backing storage device has a volatile
3646- write cache (plain disks, RAID of plain disks) you should use one
3647- of the first two. In case your backing storage device has battery-backed
3648- write cache you may go with option 3 or 4. Option 4 will deliver the
3649- best performance on such devices.
3650- </para>
3651- <para> Unfortunately device mapper (LVM) might not support barriers.
3652- </para>
3653- <para> The letter after "wo:" in /proc/drbd indicates with method is currently in
3654- use for a device: <option>b</option>, <option>f</option>, <option>d</option>, <option>n</option>. The implementations are:
3655- </para>
3656- <variablelist>
3657- <varlistentry>
3658- <term>barrier</term>
3659- <listitem>
3660- <para> The first requires that the driver of the
3661- backing storage device support barriers (called 'tagged command queuing' in
3662- SCSI and 'native command queuing' in SATA speak). The use of this
3663- method can be disabled by the <option>no-disk-barrier</option> option.
3664- </para>
3665- </listitem>
3666- </varlistentry>
3667- <varlistentry>
3668- <term>flush</term>
3669- <listitem>
3670- <para> The second requires that the backing device support disk flushes (called
3671- 'force unit access' in the drive vendors speak). The use of this method
3672- can be disabled using the <option>no-disk-flushes</option> option.
3673- </para>
3674- </listitem>
3675- </varlistentry>
3676- <varlistentry>
3677- <term>drain</term>
3678- <listitem>
3679- <para> The third method is simply to let write requests drain before
3680- write requests of a new reordering domain are issued. This was the
3681- only implementation before 8.0.9. You can disable this
3682- method by using the <option>no-disk-drain</option> option.
3683- </para>
3684- </listitem>
3685- </varlistentry>
3686- <varlistentry>
3687- <term>none</term>
3688- <listitem>
3689- <para> The fourth method is to not express write-after-write dependencies to
3690- the backing store at all.
3691- </para>
3692- </listitem>
3693- </varlistentry>
3694- </variablelist>
3695- </listitem>
3696- </varlistentry>
3697- <varlistentry>
3698- <term>
3699- <option>no-md-flushes</option>
3700- </term>
3701- <listitem>
3702- <indexterm significance="normal">
3703- <primary>drbd.conf</primary>
3704- <secondary>no-md-flushes</secondary>
3705- </indexterm>
3706- <para> Disables the use of disk flushes and barrier BIOs when accessing
3707- the meta data device. See the notes on <option>no-disk-flushes</option>.
3708- </para>
3709- </listitem>
3710- </varlistentry>
3711- <varlistentry>
3712- <term>
3713- <option>max-bio-bvecs</option>
3714- </term>
3715- <listitem>
3716- <indexterm significance="normal">
3717- <primary>drbd.conf</primary>
3718- <secondary>max-bio-bvecs</secondary>
3719- </indexterm>
3720- <para> In some special circumstances the device mapper stack manages to
3721- pass BIOs to DRBD that violate the constraints that are set forth
3722- by DRBD's merge_bvec() function and which have more than one bvec.
3723- A known example is:
3724- phys-disk -&gt; DRBD -&gt; LVM -&gt; Xen -&gt; misaligned partition (63) -&gt; DomU FS.
3725- Then you might see "bio would need to, but cannot, be split:" in
3726- the Dom0's kernel log. </para>
3727- <para> The best workaround is to proper align the partition within
3728- the VM (E.g. start it at sector 1024). This costs 480 KiB of storage.
3729- Unfortunately the default of most Linux partitioning tools is
3730- to start the first partition at an odd number (63). Therefore
3731- most distribution's install helpers for virtual linux machines will
3732- end up with misaligned partitions.
3733- The second best workaround is to limit DRBD's max bvecs per BIO
3734- (= <option>max-bio-bvecs</option>) to 1, but that might cost performance.</para>
3735- <para> The default value of <option>max-bio-bvecs</option> is 0, which means that
3736- there is no user imposed limitation.
3737- </para>
3738- </listitem>
3739- </varlistentry>
3740- <varlistentry>
3741- <term>
3742- <option>sndbuf-size <replaceable>size</replaceable></option>
3743- </term>
3744- <listitem>
3745- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>sndbuf-size </secondary></indexterm><replaceable>size</replaceable> is the size of the TCP socket send buffer.
3746- The default value is 0, i.e. autotune. You can specify smaller or larger values. Larger values
3747- are appropriate for reasonable write throughput with protocol A over high
3748- latency networks. Values
3749- below 32K do not make sense. Since 8.0.13 resp. 8.2.7, setting the <replaceable>size</replaceable>
3750- value to 0 means that the kernel should autotune this.
3751- </para>
3752- </listitem>
3753- </varlistentry>
3754- <varlistentry>
3755- <term>
3756- <option>rcvbuf-size <replaceable>size</replaceable></option>
3757- </term>
3758- <listitem>
3759- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>rcvbuf-size </secondary></indexterm><replaceable>size</replaceable> is the size of the TCP socket receive buffer.
3760- The default value is 0, i.e. autotune. You can specify smaller or larger values.
3761- Usually this should be left at its default. Setting the <replaceable>size</replaceable>
3762- value to 0 means that the kernel should autotune this.
3763- </para>
3764- </listitem>
3765- </varlistentry>
3766- <varlistentry>
3767- <term>
3768- <option>timeout <replaceable>time</replaceable></option>
3769- </term>
3770- <listitem>
3771- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>timeout</secondary></indexterm>
3772-If the partner node fails to send an expected response packet within
3773-<replaceable>time</replaceable> tenths
3774-of a second, the partner node
3775-is considered dead and therefore the TCP/IP connection is abandoned. This must be lower than <replaceable>connect-int</replaceable> and <replaceable>ping-int</replaceable>.
3776-The default value is 60 = 6 seconds, the unit 0.1 seconds.
3777- </para>
3778- </listitem>
3779- </varlistentry>
3780- <varlistentry>
3781- <term>
3782- <option>connect-int <replaceable>time</replaceable></option>
3783- </term>
3784- <listitem>
3785- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>connect-int</secondary></indexterm>
3786-In case it is not possible to connect to the remote DRBD device immediately,
3787-DRBD keeps on trying to connect. With this option you can set the time
3788-between two retries. The default value is 10 seconds, the unit is 1 second.
3789- </para>
3790- </listitem>
3791- </varlistentry>
3792- <varlistentry>
3793- <term>
3794- <option>ping-int <replaceable>time</replaceable></option>
3795- </term>
3796- <listitem>
3797- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ping-int</secondary></indexterm>
3798-If the TCP/IP connection linking a DRBD device pair is idle for more than
3799-<replaceable>time</replaceable> seconds, DRBD will generate a keep-alive
3800-packet to check if its partner is still alive. The default is 10 seconds,
3801-the unit is 1 second.
3802- </para>
3803- </listitem>
3804- </varlistentry>
3805- <varlistentry>
3806- <term>
3807- <option>ping-timeout <replaceable>time</replaceable></option>
3808- </term>
3809- <listitem>
3810- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ping-timeout</secondary></indexterm>
3811- The time the peer has time to answer to a keep-alive packet. In case
3812- the peer's reply is not received within this time period, it is
3813- considered as dead. The default value is 500ms, the default unit are tenths of a second.
3814- </para>
3815- </listitem>
3816- </varlistentry>
3817- <varlistentry>
3818- <term>
3819- <option>max-buffers <replaceable>number</replaceable></option>
3820- </term>
3821- <listitem>
3822- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>max-buffers </secondary></indexterm>
3823- Maximum number of requests to be allocated by DRBD. Unit is PAGE_SIZE,
3824- which is 4 KiB on most systems.
3825- The minimum is hard coded to 32 (=128 KiB).
3826- For high-performance installations it might help if you
3827- increase that number. These buffers are used to hold
3828- data blocks while they are written to disk.
3829- </para>
3830- </listitem>
3831- </varlistentry>
3832- <varlistentry>
3833- <term>
3834- <option>ko-count <replaceable>number</replaceable></option>
3835- </term>
3836- <listitem>
3837- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>ko-count </secondary></indexterm>
3838- In case the secondary node fails to complete a single write
3839- request for <replaceable>count</replaceable> times the
3840- <replaceable>timeout</replaceable>, it is expelled from the
3841- cluster. (I.e. the primary node goes into <option>StandAlone</option> mode.)
3842- The default value is 0, which disables this feature.
3843- </para>
3844- </listitem>
3845- </varlistentry>
3846- <varlistentry>
3847- <term>
3848- <option>max-epoch-size <replaceable>number</replaceable></option>
3849- </term>
3850- <listitem>
3851- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>max-epoch-size </secondary></indexterm>
3852- The highest number of data blocks between two write barriers.
3853- If you set this smaller than 10, you might decrease your performance.
3854- </para>
3855- </listitem>
3856- </varlistentry>
3857- <varlistentry>
3858- <term>
3859- <option>allow-two-primaries</option>
3860- </term>
3861- <listitem>
3862- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>allow-two-primaries</secondary></indexterm>
3863- With this option set you may assign the primary role to both nodes. You only should
3864- use this option if you use a shared storage file system on top of
3865- DRBD. At the time of writing the only ones are: OCFS2 and GFS. If you
3866- use this option with any other file system, you are going to crash your
3867- nodes and to corrupt your data!
3868- </para>
3869- </listitem>
3870- </varlistentry>
3871- <varlistentry>
3872- <term>
3873- <option>unplug-watermark <replaceable>number</replaceable></option>
3874- </term>
3875- <listitem>
3876- <indexterm significance="normal">
3877- <primary>drbd.conf</primary>
3878- <secondary>unplug-watermark </secondary>
3879- </indexterm>
3880- <para> When the number of pending write requests on the standby
3881- (secondary) node exceeds the <option>unplug-watermark</option>, we trigger
3882- the request processing of our backing storage device.
3883- Some storage controllers deliver better performance with small
3884- values, others deliver best performance when the value is set to
3885- the same value as max-buffers. Minimum 16, default 128, maximum
3886- 131072.
3887- </para>
3888- </listitem>
3889- </varlistentry>
3890- <varlistentry>
3891- <term>
3892- <option>cram-hmac-alg</option>
3893- </term>
3894- <listitem>
3895- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>cram-hmac-alg</secondary></indexterm>
3896- You need to specify the HMAC algorithm to enable peer authentication
3897- at all. You are strongly encouraged to use peer authentication. The HMAC
3898- algorithm will be used for the challenge response authentication
3899- of the peer. You may specify any digest algorithm that is named in
3900- <option>/proc/crypto</option>.
3901- </para>
3902- </listitem>
3903- </varlistentry>
3904- <varlistentry>
3905- <term>
3906- <option>shared-secret</option>
3907- </term>
3908- <listitem>
3909- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>shared-secret</secondary></indexterm>
3910- The shared secret used in peer authentication. May be up to 64 characters.
3911- Note that peer authentication is disabled as long as no <option>cram-hmac-alg</option>
3912- (see above) is specified.
3913- </para>
3914- </listitem>
3915- </varlistentry>
3916- <varlistentry>
3917- <term>
3918- <option>after-sb-0pri </option>
3919- <replaceable>policy</replaceable>
3920- </term>
3921- <listitem>
3922- <indexterm significance="normal">
3923- <primary>drbd.conf</primary>
3924- <secondary>after-sb-0pri </secondary>
3925- </indexterm>
3926- <para> possible policies are:
3927- </para>
3928- <variablelist>
3929- <varlistentry>
3930- <term>
3931- <option>disconnect</option>
3932- </term>
3933- <listitem>
3934- <para> No automatic resynchronization, simply disconnect.
3935- </para>
3936- </listitem>
3937- </varlistentry>
3938- <varlistentry>
3939- <term>
3940- <option>discard-younger-primary</option>
3941- </term>
3942- <listitem>
3943- <para> Auto sync from the node that was primary before the split-brain situation happened.
3944- </para>
3945- </listitem>
3946- </varlistentry>
3947- <varlistentry>
3948- <term>
3949- <option>discard-older-primary</option>
3950- </term>
3951- <listitem>
3952- <para> Auto sync from the node that became primary as second during
3953- the split-brain situation.
3954- </para>
3955- </listitem>
3956- </varlistentry>
3957- <varlistentry>
3958- <term>
3959- <option>discard-zero-changes</option>
3960- </term>
3961- <listitem>
3962- <para> In case one node did not write anything since the split
3963- brain became evident, sync from the node that wrote something
3964- to the node that did not write anything. In case none wrote
3965- anything this policy uses a random decision to perform
3966- a "resync" of 0 blocks. In case both have written something
3967- this policy disconnects the nodes.
3968- </para>
3969- </listitem>
3970- </varlistentry>
3971- <varlistentry>
3972- <term>
3973- <option>discard-least-changes</option>
3974- </term>
3975- <listitem>
3976- <para> Auto sync from the node that touched more blocks during the
3977- split brain situation.
3978- </para>
3979- </listitem>
3980- </varlistentry>
3981- <varlistentry>
3982- <term>
3983- <option>discard-node-NODENAME</option>
3984- </term>
3985- <listitem>
3986- <para> Auto sync to the named node.
3987- </para>
3988- </listitem>
3989- </varlistentry>
3990- </variablelist>
3991- </listitem>
3992- </varlistentry>
3993- <varlistentry>
3994- <term>
3995- <option>after-sb-1pri </option>
3996- <replaceable>policy</replaceable>
3997- </term>
3998- <listitem>
3999- <indexterm significance="normal">
4000- <primary>drbd.conf</primary>
4001- <secondary>after-sb-1pri </secondary>
4002- </indexterm>
4003- <para> possible policies are:
4004- </para>
4005- <variablelist>
4006- <varlistentry>
4007- <term>
4008- <option>disconnect</option>
4009- </term>
4010- <listitem>
4011- <para> No automatic resynchronization, simply disconnect.
4012- </para>
4013- </listitem>
4014- </varlistentry>
4015- <varlistentry>
4016- <term>
4017- <option>consensus</option>
4018- </term>
4019- <listitem>
4020- <para> Discard the version of the secondary if the outcome
4021- of the <option>after-sb-0pri</option> algorithm would also
4022- destroy the current secondary's data. Otherwise disconnect.
4023- </para>
4024- </listitem>
4025- </varlistentry>
4026- <varlistentry>
4027- <term>
4028- <option>violently-as0p</option>
4029- </term>
4030- <listitem>
4031- <para> Always take the decision of the <option>after-sb-0pri</option>
4032- algorithm, even if that causes an erratic change of
4033- the primary's view of the data. This is only useful if
4034- you use a one-node FS (i.e. not OCFS2 or GFS) with the
4035- <option>allow-two-primaries</option> flag, <emphasis>AND</emphasis> if you really know what you
4036- are doing. This is <emphasis>DANGEROUS and MAY CRASH YOUR MACHINE</emphasis>
4037- if you have an FS mounted on the primary node.
4038- </para>
4039- </listitem>
4040- </varlistentry>
4041- <varlistentry>
4042- <term>
4043- <option>discard-secondary</option>
4044- </term>
4045- <listitem>
4046- <para> Discard the secondary's version.
4047- </para>
4048- </listitem>
4049- </varlistentry>
4050- <varlistentry>
4051- <term>
4052- <option>call-pri-lost-after-sb</option>
4053- </term>
4054- <listitem>
4055- <para> Always honor the outcome of the <option>after-sb-0pri
4056- </option> algorithm. In case it decides the current
4057- secondary has the right data, it calls the "pri-lost-after-sb"
4058- handler on the current primary.
4059- </para>
4060- </listitem>
4061- </varlistentry>
4062- </variablelist>
4063- </listitem>
4064- </varlistentry>
4065- <varlistentry>
4066- <term>
4067- <option>after-sb-2pri </option>
4068- <replaceable>policy</replaceable>
4069- </term>
4070- <listitem>
4071- <indexterm significance="normal">
4072- <primary>drbd.conf</primary>
4073- <secondary>after-sb-2pri </secondary>
4074- </indexterm>
4075- <para> possible policies are:
4076- </para>
4077- <variablelist>
4078- <varlistentry>
4079- <term>
4080- <option>disconnect</option>
4081- </term>
4082- <listitem>
4083- <para> No automatic resynchronization, simply disconnect.
4084- </para>
4085- </listitem>
4086- </varlistentry>
4087- <varlistentry>
4088- <term>
4089- <option>violently-as0p</option>
4090- </term>
4091- <listitem>
4092- <para> Always take the decision of the <option>after-sb-0pri</option>
4093- algorithm, even if that causes an erratic change of
4094- the primary's view of the data. This is only useful if
4095- you use a one-node FS (i.e. not OCFS2 or GFS) with the
4096- <option>allow-two-primaries</option> flag, <emphasis>AND</emphasis> if you really know what you
4097- are doing. This is <emphasis>DANGEROUS and MAY CRASH YOUR MACHINE</emphasis>
4098- if you have an FS mounted on the primary node.
4099- </para>
4100- </listitem>
4101- </varlistentry>
4102- <varlistentry>
4103- <term>
4104- <option>call-pri-lost-after-sb</option>
4105- </term>
4106- <listitem>
4107- <para> Call the "pri-lost-after-sb" helper program on one of the
4108- machines. This program is expected to reboot the
4109- machine, i.e. make it secondary.
4110- </para>
4111- </listitem>
4112- </varlistentry>
4113- </variablelist>
4114- </listitem>
4115- </varlistentry>
4116- <varlistentry>
4117- <term>
4118- <option>always-asbp</option>
4119- </term>
4120- <listitem>
4121- <para> Normally the automatic after-split-brain policies are only
4122- used if current states of the UUIDs do not indicate the
4123- presence of a third node.
4124- </para>
4125- <para> With this option you request that the automatic
4126- after-split-brain policies are used as long as the data
4127- sets of the nodes are somehow related. This might cause
4128- a full sync, if the UUIDs indicate the presence of a third
4129- node. (Or double faults led to strange UUID sets.)
4130- </para>
4131- </listitem>
4132- </varlistentry>
4133- <varlistentry>
4134- <term>
4135- <option>rr-conflict </option>
4136- <replaceable>policy</replaceable>
4137- </term>
4138- <listitem>
4139- <indexterm significance="normal">
4140- <primary>drbd.conf</primary>
4141- <secondary>rr-conflict </secondary>
4142- </indexterm>
4143- <para> This option helps to solve the cases when the outcome of the resync decision is
4144- incompatible with the current role assignment in the cluster.
4145- </para>
4146- <variablelist>
4147- <varlistentry>
4148- <term>
4149- <option>disconnect</option>
4150- </term>
4151- <listitem>
4152- <para> No automatic resynchronization, simply disconnect.
4153- </para>
4154- </listitem>
4155- </varlistentry>
4156- <varlistentry>
4157- <term>
4158- <option>violently</option>
4159- </term>
4160- <listitem>
4161- <para> Sync to the primary node is allowed, violating the
4162- assumption that data on a block device are stable for one
4163- of the nodes. <emphasis>Dangerous, do not use.</emphasis>
4164- </para>
4165- </listitem>
4166- </varlistentry>
4167- <varlistentry>
4168- <term>
4169- <option>call-pri-lost</option>
4170- </term>
4171- <listitem>
4172- <para> Call the "pri-lost" helper program on one of the
4173- machines. This program is expected to reboot the
4174- machine, i.e. make it secondary.
4175- </para>
4176- </listitem>
4177- </varlistentry>
4178- </variablelist>
4179- </listitem>
4180- </varlistentry>
4181- <varlistentry>
4182- <term>
4183- <option>data-integrity-alg </option>
4184- <replaceable>alg</replaceable>
4185- </term>
4186- <listitem>
4187- <indexterm significance="normal">
4188- <primary>drbd.conf</primary>
4189- <secondary>data-integrity-alg</secondary>
4190- </indexterm>
4191- <para> DRBD can ensure the data integrity of the user's data on the network
4192- by comparing hash values. Normally this is ensured by the 16 bit checksums
4193- in the headers of TCP/IP packets.</para>
4194- <para>This option can be set to any of the kernel's data digest algorithms.
4195- In a typical kernel configuration you should have
4196- at least one of <option>md5</option>, <option>sha1</option>, and <option>crc32c</option>
4197- available. By default this is not enabled.</para>
4198- <para>See also the notes on data integrity.</para>
4199- </listitem>
4200- </varlistentry>
4201- <varlistentry>
4202- <term>
4203- <option>no-tcp-cork</option>
4204- </term>
4205- <listitem>
4206- <indexterm significance="normal">
4207- <primary>drbd.conf</primary>
4208- <secondary>no-tcp-cork</secondary>
4209- </indexterm>
4210- <para> DRBD usually uses the TCP socket option TCP_CORK to hint to the network
4211- stack when it can expect more data, and when it should flush out what it
4212- has in its send queue. It turned out that there is at least one network
4213- stack that performs worse when one uses this hinting method. Therefore
4214- we introducted this option, which disables the setting and clearing of
4215- the TCP_CORK socket option by DRBD.</para>
4216- </listitem>
4217- </varlistentry>
4218- <varlistentry>
4219- <term>
4220- <option>on-congestion <replaceable>congestion_policy</replaceable></option>
4221- </term>
4222- <term>
4223- <option>congestion-fill <replaceable>fill_threshold</replaceable></option>
4224- </term>
4225- <term>
4226- <option>congestion-extents <replaceable>active_extents_threshold</replaceable></option>
4227- </term>
4228- <listitem>
4229- <para>By default DRBD blocks when the available TCP send queue becomes full.
4230- That means it will slow down the application that generates the write
4231- requests that cause DRBD to send more data down that TCP connection.
4232- </para>
4233- <para>When DRBD is deployed with DRBD-proxy it might be more desirable that
4234- DRBD goes into AHEAD/BEHIND mode shortly before the send queue becomes full.
4235- In AHEAD/BEHIND mode DRBD does no longer replicate data, but still keeps
4236- the connection open.</para>
4237- <para>The advantage of the AHEAD/BEHIND mode is that the
4238- application is not slowed down, even if DRBD-proxy's buffer is
4239- not sufficient to buffer all write requests. The downside is that
4240- the peer node falls behind, and that a resync will be necessary to
4241- bring it back into sync. During that resync the peer node will have
4242- an inconsistent disk. </para>
4243- <para>Available <replaceable>congestion_policy</replaceable>s are <option>block</option>
4244- and <option>pull-ahead</option>. The default is <option>block</option>.
4245- <replaceable>Fill_threshold</replaceable> might be in the range of 0 to 10GiBytes. The
4246- default is 0 which disables the check. <replaceable>Active_extents_threshold</replaceable>
4247- has the same limits as <option>al-extents</option>.</para>
4248- <para>The AHEAD/BEHIND mode and its settings are available since DRBD 8.3.10.</para>
4249- </listitem>
4250- </varlistentry>
4251- <varlistentry>
4252- <term>
4253- <option>wfc-timeout <replaceable>time</replaceable></option>
4254- </term>
4255- <listitem>
4256- <para>Wait for connection timeout.
4257- <indexterm significance="normal"><primary>drbd.conf</primary><secondary>wfc-timeout </secondary></indexterm>
4258- The init script <citerefentry><refentrytitle>drbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> blocks the boot process
4259- until the DRBD resources are connected.
4260- When the cluster manager starts later,
4261- it does not see a resource with internal split-brain.
4262- In case you want to limit the wait time, do it here.
4263- Default is 0, which means unlimited. The unit is seconds.
4264- </para>
4265- </listitem>
4266- </varlistentry>
4267- <varlistentry>
4268- <term>
4269- <option>degr-wfc-timeout <replaceable>time</replaceable></option>
4270- </term>
4271- <listitem>
4272- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>degr-wfc-timeout </secondary></indexterm>
4273- Wait for connection timeout, if this node was a degraded cluster.
4274- In case a degraded cluster (= cluster with only one node left)
4275- is rebooted, this timeout value is used instead of wfc-timeout,
4276- because the peer is less likely to show up in time,
4277- if it had been dead before. Value 0 means unlimited.
4278- </para>
4279- </listitem>
4280- </varlistentry>
4281- <varlistentry>
4282- <term>
4283- <option>outdated-wfc-timeout <replaceable>time</replaceable></option>
4284- </term>
4285- <listitem>
4286- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>outdated-wfc-timeout </secondary></indexterm>
4287- Wait for connection timeout, if the peer was outdated.
4288- In case a degraded cluster (= cluster with only one node left)
4289- with an outdated peer disk is rebooted, this timeout value is used instead of wfc-timeout,
4290- because the peer is not allowed to become primary in the meantime.
4291- Value 0 means unlimited.
4292- </para>
4293- </listitem>
4294- </varlistentry>
4295- <varlistentry>
4296- <term>
4297- <option>wait-after-sb</option>
4298- </term>
4299- <listitem>
4300- <para> By setting this option you can make the init script to continue
4301- to wait even if the device pair had a split brain situation
4302- and therefore refuses to connect.
4303- </para>
4304- </listitem>
4305- </varlistentry>
4306- <varlistentry>
4307- <term>
4308- <option>become-primary-on <replaceable>node-name</replaceable></option>
4309- </term>
4310- <listitem>
4311- <para> Sets on which node the device should be promoted to primary role by
4312- the init script. The <replaceable>node-name</replaceable> might either
4313- be a host name or the keyword <option>both</option>. When this option is
4314- not set the devices stay in secondary role on both nodes. Usually
4315- one delegates the role assignment to a cluster manager (e.g. heartbeat).
4316- </para>
4317- </listitem>
4318- </varlistentry>
4319- <varlistentry>
4320- <term>
4321- <option>stacked-timeouts</option>
4322- </term>
4323- <listitem>
4324- <para> Usually <option>wfc-timeout</option> and <option>degr-wfc-timeout</option> are
4325- ignored for stacked devices, instead twice the amount of <option>connect-int</option>
4326- is used for the connection timeouts.
4327- With the <option>stacked-timeouts</option> keyword you disable this, and force
4328- DRBD to mind the <option>wfc-timeout</option> and <option>degr-wfc-timeout</option>
4329- statements. Only do that if the peer of the stacked resource is usually not
4330- available or will usually not become primary.
4331- By using this option incorrectly, you run the risk of causing unexpected split brain.
4332- </para>
4333- </listitem>
4334- </varlistentry>
4335- <varlistentry>
4336- <term>
4337- <option>rate <replaceable>rate</replaceable></option>
4338- </term>
4339- <listitem>
4340- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>rate </secondary></indexterm>
4341- To ensure a smooth operation of the application on top of DRBD,
4342- it is possible to limit the bandwidth which may be used by
4343- background synchronizations. The default is 250 KB/sec, the
4344- default unit is KB/sec. Optional suffixes K, M, G are allowed.
4345- </para>
4346- </listitem>
4347- </varlistentry>
4348- <varlistentry>
4349- <term>
4350- <option>use-rle</option>
4351- </term>
4352- <listitem>
4353- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>use-rle </secondary></indexterm>
4354- During resync-handshake, the dirty-bitmaps of the nodes are exchanged and
4355- merged (using bit-or), so the nodes will have the same understanding of
4356- which blocks are dirty. On large devices, the fine grained dirty-bitmap can
4357- become large as well, and the bitmap exchange can take quite some time on
4358- low-bandwidth links.
4359- </para>
4360- <para> Because the bitmap typically contains compact areas where
4361- all bits are unset (clean) or set (dirty), a simple run-length
4362- encoding scheme can considerably reduce the network traffic
4363- necessary for the bitmap exchange.
4364- </para>
4365- <para> For backward compatibilty reasons, and because on fast
4366- links this possibly does not improve transfer time but
4367- consumes cpu cycles, this defaults to off.
4368- </para>
4369- </listitem>
4370- </varlistentry>
4371- <varlistentry>
4372- <term>
4373- <option>after <replaceable>res-name</replaceable></option>
4374- </term>
4375- <listitem>
4376- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>after </secondary></indexterm>
4377- By default, resynchronization of all devices would run in parallel.
4378- By defining a sync-after dependency, the resynchronization of this
4379- resource will start only if the resource <replaceable>res-name</replaceable>
4380- is already in connected state (i.e., has finished its resynchronization).
4381- </para>
4382- </listitem>
4383- </varlistentry>
4384- <varlistentry>
4385- <term>
4386- <option>al-extents <replaceable>extents</replaceable></option>
4387- </term>
4388- <listitem>
4389- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>al-extents </secondary></indexterm>
4390- DRBD automatically performs hot area detection. With this
4391- parameter you control how big the hot area (= active set) can
4392- get. Each extent marks 4M of the backing storage (= low-level device).
4393- In case a primary node leaves the cluster unexpectedly, the areas covered
4394- by the active set must be resynced upon rejoining of the failed
4395- node. The data structure is stored in the meta-data area, therefore each
4396- change of the active set is a write operation
4397- to the meta-data device. A higher number of extents gives
4398- longer resync times but less updates to the meta-data. The
4399- default number of <replaceable>extents</replaceable> is
4400- 127. (Minimum: 7, Maximum: 3843)
4401- </para>
4402- </listitem>
4403- </varlistentry>
4404- <varlistentry>
4405- <term>
4406- <option>verify-alg <replaceable>hash-alg</replaceable></option>
4407- </term>
4408- <listitem>
4409- <para>During online verification (as initiated by the
4410- <command moreinfo="none">verify</command> sub-command),
4411- rather than doing a bit-wise comparison, DRBD applies a hash function
4412- to the contents of every block being verified, and compares that
4413- hash with the peer. This option defines the hash algorithm being
4414- used for that purpose. It can be set to any of the kernel's data
4415- digest algorithms. In a typical kernel configuration you should have
4416- at least one of <option>md5</option>, <option>sha1</option>, and <option>crc32c</option>
4417- available. By default this is not enabled; you must set this
4418- option explicitly in order to be able to use on-line device verification.</para>
4419- <para>See also the notes on data integrity.</para>
4420- </listitem>
4421- </varlistentry>
4422- <varlistentry>
4423- <term>
4424- <option>csums-alg <replaceable>hash-alg</replaceable></option>
4425- </term>
4426- <listitem>
4427- <para>A resync process sends all marked data blocks from the source to
4428- the destination node, as long as no <option>csums-alg</option> is
4429- given. When one is specified the resync process exchanges hash values of all
4430- marked blocks first, and sends only those data blocks that have different
4431- hash values.</para>
4432- <para>This setting is useful for DRBD setups with low bandwidth links.
4433- During the restart of a crashed primary node, all blocks covered by the
4434- activity log are marked for resync. But a large part of those will actually
4435- be still in sync, therefore using <option>csums-alg</option> will lower
4436- the required bandwidth in exchange for CPU cycles.</para>
4437- </listitem>
4438- </varlistentry>
4439- <varlistentry>
4440- <term>
4441- <option>c-plan-ahead <replaceable>plan_time</replaceable></option>
4442- </term>
4443- <term>
4444- <option>c-fill-target <replaceable>fill_target</replaceable></option>
4445- </term>
4446- <term>
4447- <option>c-delay-target <replaceable>delay_target</replaceable></option>
4448- </term>
4449- <term>
4450- <option>c-max-rate <replaceable>max_rate</replaceable></option>
4451- </term>
4452- <listitem>
4453- <para>The dynamic resync speed controller gets enabled with setting
4454- <replaceable>plan_time</replaceable> to a positive value. It aims to
4455- fill the buffers along the data path with either a constant amount of data
4456- <replaceable>fill_target</replaceable>, or aims to have a constant
4457- delay time of <replaceable>delay_target</replaceable> along the
4458- path. The controller has an upper bound of <replaceable>max_rate</replaceable>.
4459- </para>
4460- <para>
4461- By <replaceable>plan_time</replaceable> the agility of the controller is configured.
4462- Higher values yield for slower/lower responses of the controller to deviation
4463- from the target value. It should be at least 5 times RTT.
4464- For regular data paths a <replaceable>fill_target</replaceable>
4465- in the area of 4k to 100k is appropriate. For a setup that contains drbd-proxy
4466- it is advisable to use <replaceable>delay_target</replaceable> instead.
4467- Only when <replaceable>fill_target</replaceable> is set to 0 the controller
4468- will use <replaceable>delay_target</replaceable>. 5 times RTT is a reasonable
4469- starting value. <replaceable>Max_rate</replaceable> should be set to the
4470- bandwidth available between the DRBD-hosts and the machines hosting
4471- DRBD-proxy, or to the available disk-bandwidth.
4472- </para>
4473- <para>
4474- The default value of <replaceable>plan_time</replaceable> is 0, the default unit is
4475- 0.1 seconds. <replaceable>Fill_target</replaceable> has 0 and sectors as default unit.
4476- <replaceable>Delay_target</replaceable> has 1 (100ms) and 0.1 as default unit.
4477- <replaceable>Max_rate</replaceable> has 10240 (100MiB/s) and KiB/s as default unit.
4478- </para>
4479- <para>
4480- The dynamic resync speed controller and its settings are available since DRBD 8.3.9.
4481- </para>
4482- </listitem>
4483- </varlistentry>
4484- <varlistentry>
4485- <term>
4486- <option>c-min-rate <replaceable>min_rate</replaceable></option>
4487- </term>
4488- <listitem>
4489- <para>A node that is primary and sync-source has to schedule application
4490- IO requests and resync IO requests. The <replaceable>min_rate</replaceable>
4491- tells DRBD use only up to min_rate for resync IO and to dedicate all
4492- other available IO bandwidth to application requests.</para>
4493- <para>Note: The value 0 has a special meaning. It disables the limitation
4494- of resync IO completely, which might slow down application IO considerably.
4495- Set it to a value of 1, if you prefer that resync IO never slows down
4496- application IO.
4497- </para>
4498- <para>Note: Although the name might suggest that it is a lower bound for the
4499- dynamic resync speed controller, it is not. If the DRBD-proxy buffer is full,
4500- the dynamic resync speed controller is free to lower the resync speed down
4501- to 0, completely independent of the <option>c-min-rate</option> setting.
4502- </para>
4503- <para>
4504- <replaceable>Min_rate</replaceable> has 4096 (4MiB/s) and KiB/s as default unit.
4505- </para>
4506- </listitem>
4507- </varlistentry>
4508- <varlistentry>
4509- <term>
4510- <option>on-no-data-accessible <replaceable>ond-policy</replaceable></option>
4511- </term>
4512- <listitem>
4513- <para>This setting controls what happens to IO requests on a degraded, disk less node
4514- (I.e. no data store is reachable). The available policies are <option>io-error</option>
4515- and <option>suspend-io</option>.</para>
4516- <para>
4517- If <replaceable>ond-policy</replaceable> is set to <option>suspend-io</option> you
4518- can either resume IO by attaching/connecting the last lost data storage, or by
4519- the <command moreinfo="none">drbdadm resume-io <replaceable>res</replaceable></command>
4520- command. The latter will result in IO errors of course.
4521- </para>
4522- <para>
4523- The default is <option>io-error</option>. This setting is available since DRBD 8.3.9.
4524- </para>
4525- </listitem>
4526- </varlistentry>
4527- <varlistentry>
4528- <term>
4529- <option>cpu-mask <replaceable>cpu-mask</replaceable></option>
4530- </term>
4531- <listitem>
4532- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>cpu-mask </secondary></indexterm>
4533- Sets the cpu-affinity-mask for DRBD's kernel threads of this device. The
4534- default value of <replaceable>cpu-mask</replaceable> is 0, which means
4535- that DRBD's kernel threads should be spread over all CPUs of the machine.
4536- This value must be given in hexadecimal notation. If it is too big it will
4537- be truncated.
4538- </para>
4539- </listitem>
4540- </varlistentry>
4541- <varlistentry>
4542- <term>
4543- <option>pri-on-incon-degr <replaceable>cmd</replaceable></option>
4544- </term>
4545- <listitem>
4546- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-on-incon-degr </secondary></indexterm>
4547- This handler is called if the node is primary, degraded
4548- and if the local copy of the data is inconsistent.</para>
4549- </listitem>
4550- </varlistentry>
4551- <varlistentry>
4552- <term>
4553- <option>pri-lost-after-sb <replaceable>cmd</replaceable></option>
4554- </term>
4555- <listitem>
4556- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-lost-after-sb </secondary></indexterm>
4557- The node is currently primary, but lost the after-split-brain
4558- auto recovery procedure. As as consequence, it should be abandoned.
4559- </para>
4560- </listitem>
4561- </varlistentry>
4562- <varlistentry>
4563- <term>
4564- <option>pri-lost <replaceable>cmd</replaceable></option>
4565- </term>
4566- <listitem>
4567- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>pri-lost </secondary></indexterm>
4568- The node is currently primary, but DRBD's algorithm
4569- thinks that it should become sync target. As a consequence it should
4570- give up its primary role.
4571- </para>
4572- </listitem>
4573- </varlistentry>
4574- <varlistentry>
4575- <term>
4576- <option>fence-peer <replaceable>cmd</replaceable></option>
4577- </term>
4578- <listitem>
4579- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>fence-peer </secondary></indexterm>
4580- The handler is part of the <option>fencing</option>
4581- mechanism. This handler is called in case the node needs to fence the
4582- peer's disk. It should use other communication paths than DRBD's network
4583- link. </para>
4584- </listitem>
4585- </varlistentry>
4586- <varlistentry>
4587- <term>
4588- <option>local-io-error <replaceable>cmd</replaceable></option>
4589- </term>
4590- <listitem>
4591- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>local-io-error </secondary></indexterm>
4592- DRBD got an IO error from the local IO subsystem.
4593- </para>
4594- </listitem>
4595- </varlistentry>
4596- <varlistentry>
4597- <term>
4598- <option>initial-split-brain <replaceable>cmd</replaceable></option>
4599- </term>
4600- <listitem>
4601- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>initial-split-brain </secondary></indexterm>
4602- DRBD has connected and detected a split brain situation.
4603- This handler can alert someone in all cases of split brain, not just
4604- those that go unresolved.
4605- </para>
4606- </listitem>
4607- </varlistentry>
4608- <varlistentry>
4609- <term>
4610- <option>split-brain <replaceable>cmd</replaceable></option>
4611- </term>
4612- <listitem>
4613- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>split-brain </secondary></indexterm>
4614- DRBD detected a split brain situation but remains unresolved.
4615- Manual recovery is necessary. This handler should alert someone on duty.
4616- </para>
4617- </listitem>
4618- </varlistentry>
4619- <varlistentry>
4620- <term>
4621- <option>before-resync-target <replaceable>cmd</replaceable></option>
4622- </term>
4623- <listitem>
4624- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>before-resync-target </secondary></indexterm>
4625- DRBD calls this handler just before a resync begins on the node
4626- that becomes resync target. It might be used to take a snapshot of the
4627- backing block device.
4628- </para>
4629- </listitem>
4630- </varlistentry>
4631- <varlistentry>
4632- <term>
4633- <option>after-resync-target <replaceable>cmd</replaceable></option>
4634- </term>
4635- <listitem>
4636- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>after-resync-target </secondary></indexterm>
4637- DRBD calls this handler just after a resync operation finished on the
4638- node whose disk just became consistent after being inconsistent for the
4639- duration of the resync. It might be used to remove a snapshot of the backing device
4640- that was created by the <option>before-resync-target</option> handler.
4641- </para>
4642- </listitem>
4643- </varlistentry>
4644- </variablelist>
4645- </refsect2>
4646- <refsect2>
4647- <title>Other Keywords</title>
4648- <variablelist>
4649- <varlistentry>
4650- <term>
4651- <option>include <replaceable>file-pattern</replaceable></option>
4652- </term>
4653- <listitem>
4654- <para><indexterm significance="normal"><primary>drbd.conf</primary><secondary>include</secondary></indexterm>
4655- Include all files matching the wildcard pattern <replaceable>file-pattern</replaceable>.
4656- The <option>include</option> statement
4657- is only allowed on the top level, i.e. it is not allowed inside any section.
4658- </para>
4659- </listitem>
4660- </varlistentry>
4661- </variablelist>
4662- </refsect2>
4663- </refsect1>
4664- <refsect1 id="data-integrity">
4665- <title>Notes on data integrity</title>
4666- <para>There are two independent methods in DRBD to ensure the integrity of
4667-the mirrored data. The online-verify mechanism and the <option>data-integrity-alg</option>
4668-of the <option>network</option> section.</para>
4669- <para>Both mechanisms might deliver false positives if the user of DRBD modifies the
4670-data which gets written to disk while the transfer goes on. This may happen for
4671-swap, or for certain append while global sync, or truncate/rewrite workloads,
4672-and not necessarily poses a problem for the integrity of the data.
4673-Usually when the initiator of the data transfer does this, it already knows that
4674-that data block will not be part of an on disk data structure, or will be resubmitted
4675-with correct data soon enough.</para>
4676-<para>The <option>data-integrity-alg</option> causes the receiving side to log
4677-an error about "Digest integrity check FAILED: Ns +x\n", where N is the sector
4678-offset, and x is the size of the requst in bytes. It will then disconnect, and
4679-reconnect, thus causing a quick resync. If the sending side at the same time
4680-detected a modification, it warns about "Digest mismatch, buffer modified by
4681-upper layers during write: Ns +x\n", which shows that this was a false positive.
4682-The sending side may detect these buffer modifications immediately after the
4683-unmodified data has been copied to the tcp buffers, in which case the receiving
4684-side won't notice it.</para>
4685- <para>The most recent (2007) example of systematic corruption was an
4686-issue with the TCP offloading engine and the driver of a certain type
4687-of GBit NIC. The actual corruption happened on the DMA transfer from
4688-core memory to the card. Since the TCP checksum gets calculated on the card,
4689-this type of corruption stays undetected as long as you do not use
4690-either the online <option>verify</option> or the <option>data-integrity-alg</option>.</para>
4691- <para>We suggest to use the <option>data-integrity-alg</option> only during a
4692-pre-production phase due to its CPU costs. Further we suggest to do online
4693-<option>verify</option> runs regularly e.g. once a month during a low load period.</para>
4694- </refsect1>
4695- <refsect1>
4696- <title>Version</title>
4697- <simpara>This document was revised for version 8.3.2 of the DRBD distribution.</simpara>
4698- </refsect1>
4699- <refsect1>
4700- <title>Author</title>
4701- <simpara>Written by Philipp Reisner <email>philipp.reisner@linbit.com</email>
4702- and Lars Ellenberg <email>lars.ellenberg@linbit.com</email>.</simpara>
4703- </refsect1>
4704- <refsect1>
4705- <title>Reporting Bugs</title>
4706- <simpara>Report bugs to <email>drbd-user@lists.linbit.com</email>.</simpara>
4707- </refsect1>
4708- <refsect1>
4709- <title>Copyright</title>
4710- <simpara>Copyright 2001-2008 LINBIT Information Technologies,
4711-Philipp Reisner, Lars Ellenberg. This is free software;
4712-see the source for copying conditions. There is NO warranty;
4713-not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</simpara>
4714- </refsect1>
4715- <refsect1>
4716- <title>See Also</title>
4717- <para><citerefentry><refentrytitle>drbd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
4718- <citerefentry><refentrytitle>drbddisk</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
4719- <citerefentry><refentrytitle>drbdsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
4720- <citerefentry><refentrytitle>drbdadm</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
4721- <ulink url="http://www.drbd.org/users-guide/"><citetitle>DRBD User's Guide</citetitle></ulink>,
4722- <ulink url="http://www.drbd.org/"><citetitle>DRBD web site</citetitle></ulink></para>
4723- </refsect1>
4724-</refentry>
4725
4726=== modified file 'documentation/drbdadm.8'
4727--- documentation/drbdadm.8 2011-01-24 15:36:33 +0000
4728+++ documentation/drbdadm.8 2012-11-21 23:20:34 +0000
4729@@ -1,7 +1,7 @@
4730 '\" t
4731 .\" Title: drbdadm
4732 .\" Author: [see the "Author" section]
4733-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
4734+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
4735 .\" Date: 5 Dec 2008
4736 .\" Manual: System Administration
4737 .\" Source: DRBD 8.3.2
4738@@ -197,6 +197,21 @@
4739 The
4740 \fB\-\-assume\-peer\-has\-space\fR
4741 allows you to resize a device which is currently not connected to the peer\&. Use with care, since if you do not resize the peer\*(Aqs disk as well, further connect attempts of the two will fail\&.
4742+.sp
4743+The
4744+\fB\-\-assume\-clean\fR
4745+allows you to resize an existing device and avoid syncing the new space\&. This is useful when adding addtional blank storage to your device\&. Example:
4746+.sp
4747+.if n \{\
4748+.RS 4
4749+.\}
4750+.nf
4751+# drbdadm \-\- \-\-assume\-clean resize r0
4752+.fi
4753+.if n \{\
4754+.RE
4755+.\}
4756+.sp
4757 .RE
4758 .PP
4759 check\-resize
4760
4761=== added file 'documentation/drbdadm.xml'
4762--- documentation/drbdadm.xml 1970-01-01 00:00:00 +0000
4763+++ documentation/drbdadm.xml 2012-11-21 23:20:34 +0000
4764@@ -0,0 +1,486 @@
4765+<?xml version="1.0"?>
4766+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
4767+<refentry id="re-drbdadm">
4768+ <refentryinfo>
4769+ <date>5 Dec 2008</date>
4770+ <productname>DRBD</productname>
4771+ <productnumber>8.3.2</productnumber>
4772+ </refentryinfo>
4773+ <refmeta>
4774+ <refentrytitle>drbdadm</refentrytitle>
4775+ <manvolnum>8</manvolnum>
4776+ <refmiscinfo class="manual">System Administration</refmiscinfo>
4777+ </refmeta>
4778+ <refnamediv>
4779+ <refname>drbdadm</refname>
4780+ <refpurpose>Administration tool for DRBD
4781+ <indexterm significance="normal">
4782+ <primary>drbdadm</primary>
4783+ </indexterm>
4784+ </refpurpose>
4785+ </refnamediv>
4786+ <refsynopsisdiv>
4787+ <cmdsynopsis sepchar=" ">
4788+ <command moreinfo="none">drbdadm</command>
4789+ <arg choice="opt" rep="norepeat">-d</arg>
4790+ <arg choice="opt" rep="norepeat">-c<arg choice="req" rep="norepeat"><replaceable>file</replaceable></arg></arg>
4791+ <arg choice="opt" rep="norepeat">-t<arg choice="req" rep="norepeat"><replaceable>file</replaceable></arg></arg>
4792+ <arg choice="opt" rep="norepeat">-s<arg choice="req" rep="norepeat"><replaceable>cmd</replaceable></arg></arg>
4793+ <arg choice="opt" rep="norepeat">-m<arg choice="req" rep="norepeat"><replaceable>cmd</replaceable></arg></arg>
4794+ <arg choice="opt" rep="norepeat">-S</arg>
4795+ <arg choice="opt" rep="norepeat">-h<arg choice="req" rep="norepeat"><replaceable>host</replaceable></arg></arg>
4796+ <arg choice="opt" rep="norepeat">--<arg choice="req" rep="norepeat"><replaceable>backend-options</replaceable></arg></arg>
4797+ <arg choice="req" rep="norepeat">
4798+ <replaceable>command</replaceable>
4799+ </arg>
4800+ <group choice="opt" rep="norepeat">
4801+ <arg choice="plain" rep="norepeat">all</arg>
4802+ <arg choice="plain" rep="repeat">
4803+ <replaceable>resource</replaceable>
4804+ </arg>
4805+ </group>
4806+ </cmdsynopsis>
4807+ </refsynopsisdiv>
4808+ <refsect1>
4809+ <title>Description</title>
4810+ <para> <option>Drbdadm</option> is the high level tool of the DRBD program suite. <option>Drbdadm</option> is to
4811+ <option>drbdsetup</option> and <option>drbdmeta</option> what <option>ifup</option>/<option>ifdown</option> is to <option>ifconfig</option>. <option>Drbdadm</option> reads its
4812+ configuration file and performs the specified commands by calling the
4813+ <option>drbdsetup</option> and/or the <option>drbdmeta</option> program.
4814+ </para>
4815+ </refsect1>
4816+ <refsect1>
4817+ <title>Options</title>
4818+ <variablelist>
4819+ <varlistentry>
4820+ <term><option>-d</option>, <option>--dry-run</option></term>
4821+ <listitem>
4822+ <para> Just prints the calls of <option>drbdsetup</option> to stdout, but does not run
4823+ the commands.
4824+ </para>
4825+ </listitem>
4826+ </varlistentry>
4827+ <varlistentry>
4828+ <term><option>-c</option>, <option>--config-file</option> <replaceable>file</replaceable></term>
4829+ <listitem>
4830+ <para> Specifies the configuration file drbdadm will use. If this parameter
4831+ is not specified, drbdadm will look for <option>/etc/drbd-83.conf</option>,
4832+ <option>/etc/drbd-08.conf</option> and <option>/etc/drbd.conf</option>.
4833+ </para>
4834+ </listitem>
4835+ </varlistentry>
4836+
4837+ <varlistentry>
4838+ <term><option>-t</option>, <option>--config-to-test</option> <replaceable>file</replaceable></term>
4839+ <listitem>
4840+ <para> Specifies an additional configuration file drbdadm to check. This option
4841+ is only allowed with the dump and the sh-nop commands.
4842+ </para>
4843+ </listitem>
4844+ </varlistentry>
4845+
4846+ <varlistentry>
4847+ <term><option>-s</option>, <option>--drbdsetup</option> <replaceable>file</replaceable></term>
4848+ <listitem>
4849+ <para> Specifies the full path to the <option>drbdsetup</option> program. If this option is
4850+ omitted, drbdadm will look for <option>/sbin/drbdsetup</option> and <option>./drbdsetup</option>.
4851+ </para>
4852+ </listitem>
4853+ </varlistentry>
4854+ <varlistentry>
4855+ <term><option>-m</option>, <option>--drbdmeta</option> <replaceable>file</replaceable></term>
4856+ <listitem>
4857+ <para> Specifies the full path to the <option>drbdmeta</option> program. If this option is
4858+ omitted, drbdadm will look for <option>/sbin/drbdmeta</option> and
4859+ <option>./drbdmeta</option>.
4860+ </para>
4861+ </listitem>
4862+ </varlistentry>
4863+ <varlistentry>
4864+ <term><option>-S</option>, <option>--stacked</option></term>
4865+ <listitem>
4866+ <para> Specifies that this command should be performed on a stacked resource.
4867+ </para>
4868+ </listitem>
4869+ </varlistentry>
4870+ <varlistentry>
4871+ <term><option>-P</option>, <option>--peer</option></term>
4872+ <listitem>
4873+ <para> Specifies to which peer node to connect. Only necessary if there are
4874+ more than two host sections in the resource you are working on.
4875+ </para>
4876+ </listitem>
4877+ </varlistentry>
4878+ <varlistentry>
4879+ <term><option>--</option> <replaceable>backend-options</replaceable></term>
4880+ <listitem>
4881+ <para>All options following the doubly hyphen are considered <replaceable>backend-options</replaceable>.
4882+ These are passed through to the backend command. I.e. to <option>drbdsetup</option>,
4883+ <option>drbdmeta</option> or <option>drbd-proxy-ctl</option>.
4884+ </para>
4885+ </listitem>
4886+ </varlistentry>
4887+ </variablelist>
4888+ </refsect1>
4889+ <refsect1>
4890+ <title>Commands</title>
4891+ <variablelist>
4892+ <varlistentry>
4893+ <term>attach</term>
4894+ <listitem>
4895+ <para> Attaches a local backing block device to the DRBD resource's device.
4896+ </para>
4897+ </listitem>
4898+ </varlistentry>
4899+ <varlistentry>
4900+ <term>detach</term>
4901+ <listitem>
4902+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>detach</secondary></indexterm>
4903+ Removes the backing storage device from a DRBD resource's device.
4904+ </para>
4905+ </listitem>
4906+ </varlistentry>
4907+ <varlistentry>
4908+ <term>connect</term>
4909+ <listitem>
4910+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>connect</secondary></indexterm>
4911+ Sets up the network configuration of the resource's device. If the
4912+ peer device is already configured, the two DRBD devices will connect.
4913+ If there are more than two host sections in the resource you need
4914+ to use the <option>--peer</option> option to select the peer you want to
4915+ connect to.
4916+ </para>
4917+ </listitem>
4918+ </varlistentry>
4919+ <varlistentry>
4920+ <term>disconnect</term>
4921+ <listitem>
4922+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>disconnect</secondary></indexterm>
4923+ Removes the network configuration from the resource. The device
4924+ will then go into StandAlone state.
4925+ </para>
4926+ </listitem>
4927+ </varlistentry>
4928+ <varlistentry>
4929+ <term>syncer</term>
4930+ <listitem>
4931+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>syncer</secondary></indexterm>
4932+ Loads the resynchronization parameters into the device.
4933+ </para>
4934+ </listitem>
4935+ </varlistentry>
4936+ <varlistentry>
4937+ <term>up</term>
4938+ <listitem>
4939+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>up</secondary></indexterm>
4940+ Is a shortcut for attach and connect.
4941+ </para>
4942+ </listitem>
4943+ </varlistentry>
4944+ <varlistentry>
4945+ <term>down</term>
4946+ <listitem>
4947+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>down</secondary></indexterm>
4948+ Is a shortcut for disconnect and detach.
4949+ </para>
4950+ </listitem>
4951+ </varlistentry>
4952+ <varlistentry>
4953+ <term>primary</term>
4954+ <listitem>
4955+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>primary</secondary></indexterm>
4956+ Promote the resource's device into primary role. You need to do
4957+ this before any access to the device, such as creating or mounting a file system.
4958+ </para>
4959+ </listitem>
4960+ </varlistentry>
4961+ <varlistentry>
4962+ <term>secondary</term>
4963+ <listitem>
4964+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>secondary</secondary></indexterm>
4965+ Brings the device back into secondary role. This is needed since in
4966+ a connected DRBD device pair, only one of the two peers may have
4967+ primary role (except if <option>allow-two-primaries</option> is explicitly set in
4968+ the configuration file).
4969+ </para>
4970+ </listitem>
4971+ </varlistentry>
4972+ <varlistentry>
4973+ <term>invalidate</term>
4974+ <listitem>
4975+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>invalidate</secondary></indexterm>
4976+ Forces DRBD to consider the data on the <emphasis>local</emphasis> backing
4977+ storage device as out-of-sync. Therefore DRBD will copy each
4978+ and every block from its peer, to bring the local storage
4979+ device back in sync.
4980+ </para>
4981+ </listitem>
4982+ </varlistentry>
4983+ <varlistentry>
4984+ <term>invalidate-remote</term>
4985+ <listitem>
4986+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>invalidate-remote</secondary></indexterm>
4987+ This command is similar to the invalidate command, however, the
4988+ <emphasis>peer's</emphasis> backing storage is invalidated and hence rewritten
4989+ with the data of the local node.
4990+ </para>
4991+ </listitem>
4992+ </varlistentry>
4993+ <varlistentry>
4994+ <term>resize</term>
4995+ <listitem>
4996+ <para><indexterm significance="normal"><primary>drbdadm</primary><secondary>resize</secondary></indexterm>
4997+ Causes DRBD to re-examine all sizing constraints, and resize the
4998+ resource's device accordingly. For example, if you increased the
4999+ size of your backing storage devices (on both nodes, of course),
5000+ then DRBD will adopt the new size after you called
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches