1Device-Mapper Logging 2===================== 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. 12 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: 18 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 24 25The "disk" log type 26------------------- 27This log implementation commits the log state to disk. This way, the 28logging state survives reboots/crashes. 29 30The "core" log type 31------------------- 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. 36 37The "userspace" log type 38------------------------ 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 42request. 43 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 48communication. 49 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. 55