PageRenderTime 11ms CodeModel.GetById 7ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

Plain Text | 54 lines | 47 code | 7 blank | 0 comment | 0 complexity | f0a588a3e92b18b79851a5eae679f6ce MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
 1Device-Mapper Logging
 3The device-mapper logging code is used by some of the device-mapper
 4RAID targets to track regions of the disk that are not consistent.
 5A region (or portion of the address space) of the disk may be
 6inconsistent because a RAID stripe is currently being operated on or
 7a machine died while the region was being altered.  In the case of
 8mirrors, a region would be considered dirty/inconsistent while you
 9are writing to it because the writes need to be replicated for all
10the legs of the mirror and may not reach the legs at the same time.
11Once all writes are complete, the region is considered clean again.
13There is a generic logging interface that the device-mapper RAID
14implementations use to perform logging operations (see
15dm_dirty_log_type in include/linux/dm-dirty-log.h).  Various different
16logging implementations are available and provide different
17capabilities.  The list includes:
19Type		Files
20====		=====
21disk		drivers/md/dm-log.c
22core		drivers/md/dm-log.c
23userspace	drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h
25The "disk" log type
27This log implementation commits the log state to disk.  This way, the
28logging state survives reboots/crashes.
30The "core" log type
32This log implementation keeps the log state in memory.  The log state
33will not survive a reboot or crash, but there may be a small boost in
34performance.  This method can also be used if no storage device is
35available for storing log state.
37The "userspace" log type
39This log type simply provides a way to export the log API to userspace,
40so log implementations can be done there.  This is done by forwarding most
41logging requests to userspace, where a daemon receives and processes the
44The structure used for communication between kernel and userspace are
45located in include/linux/dm-log-userspace.h.  Due to the frequency,
46diversity, and 2-way communication nature of the exchanges between
47kernel and userspace, 'connector' is used as the interface for
50There are currently two userspace log implementations that leverage this
51framework - "clustered_disk" and "clustered_core".  These implementations
52provide a cluster-coherent log for shared-storage.  Device-mapper mirroring
53can be used in a shared-storage environment when the cluster log implementations
54are employed.