linux-stable/Documentation/device-mapper
Heinz Mauelshagen 63c32ed4af dm raid: add raid4/5/6 journaling support
Add md raid4/5/6 journaling support (upstream commit bac624f3f8 started
the implementation) which closes the write hole (i.e. non-atomic updates
to stripes) using a dedicated journal device.

Background:
raid4/5/6 stripes hold N data payloads per stripe plus one parity raid4/5
or two raid6 P/Q syndrome payloads in an in-memory stripe cache.
Parity or P/Q syndromes used to recover any data payloads in case of a disk
failure are calculated from the N data payloads and need to be updated on the
different component devices of the raid device.  Those are non-atomic,
persistent updates.  Hence a crash can cause failure to update all stripe
payloads persistently and thus cause data loss during stripe recovery.
This problem gets addressed by writing whole stripe cache entries (together with
journal metadata) to a persistent journal entry on a dedicated journal device.
Only if that journal entry is written successfully, the stripe cache entry is
updated on the component devices of the raid device (i.e. writethrough type).
In case of a crash, the entry can be recovered from the journal and be written
again thus ensuring consistent stripe payload suitable to data recovery.

Future dependencies:
once writeback caching being worked on to compensate for the throughput
implictions involved with writethrough overhead is supported with journaling
in upstream, an additional patch based on this one will support it in dm-raid.

Journal resilience related remarks:
because stripes are recovered from the journal in case of a crash, the
journal device better be resilient.  Resilience becomes mandatory with
future writeback support, because loosing the working set in the log
means data loss as oposed to writethrough, were the loss of the
journal device 'only' reintroduces the write hole.

Fix comment on data offsets in parse_dev_params() and initialize
new_data_offset as well.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
2017-01-25 12:49:06 +01:00
..
cache-policies.txt dm cache: update cache-policies.txt now that mq is an alias for smq 2016-05-05 15:25:53 -04:00
cache.txt dm cache: display 'needs_check' in status if it is set 2015-07-16 10:23:50 -04:00
delay.txt Documentation/device-mapper: s/getsize/getsz/ 2016-12-14 10:54:27 +01:00
dm-crypt.txt Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2016-12-14 11:12:25 -08:00
dm-flakey.txt block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
dm-io.txt
dm-log.txt dm log userspace: fix comment hyphens 2011-10-31 20:21:22 +00:00
dm-queue-length.txt
dm-raid.txt dm raid: add raid4/5/6 journaling support 2017-01-25 12:49:06 +01:00
dm-service-time.txt Fix common misspellings 2011-03-31 11:26:23 -03:00
dm-uevent.txt
era.txt dm: add era target 2014-03-27 16:56:23 -04:00
kcopyd.txt
linear.txt Documentation/device-mapper: s/getsize/getsz/ 2016-12-14 10:54:27 +01:00
log-writes.txt block, drivers, fs: rename REQ_FLUSH to REQ_PREFLUSH 2016-06-07 13:41:38 -06:00
persistent-data.txt Documentation: Fix multiple typo in Documentation 2012-03-07 16:08:24 +01:00
snapshot.txt dm snapshot: add new persistent store option to support overflow 2015-10-09 16:57:03 -04:00
statistics.txt dm stats: fix spelling mistake in Documentation 2016-05-05 15:25:54 -04:00
striped.txt Documentation/device-mapper: s/getsize/getsz/ 2016-12-14 10:54:27 +01:00
switch.txt Documentation/device-mapper: s/getsize/getsz/ 2016-12-14 10:54:27 +01:00
thin-provisioning.txt dm thin: display 'needs_check' in status if it is set 2015-07-16 10:23:50 -04:00
verity.txt dm verity: add ignore_zero_blocks feature 2015-12-10 10:39:03 -05:00
zero.txt