Back to home page

OSCL-LXR

 
 

    


0001 =====================
0002 Device-Mapper Logging
0003 =====================
0004 The device-mapper logging code is used by some of the device-mapper
0005 RAID targets to track regions of the disk that are not consistent.
0006 A region (or portion of the address space) of the disk may be
0007 inconsistent because a RAID stripe is currently being operated on or
0008 a machine died while the region was being altered.  In the case of
0009 mirrors, a region would be considered dirty/inconsistent while you
0010 are writing to it because the writes need to be replicated for all
0011 the legs of the mirror and may not reach the legs at the same time.
0012 Once all writes are complete, the region is considered clean again.
0013 
0014 There is a generic logging interface that the device-mapper RAID
0015 implementations use to perform logging operations (see
0016 dm_dirty_log_type in include/linux/dm-dirty-log.h).  Various different
0017 logging implementations are available and provide different
0018 capabilities.  The list includes:
0019 
0020 ==============  ==============================================================
0021 Type            Files
0022 ==============  ==============================================================
0023 disk            drivers/md/dm-log.c
0024 core            drivers/md/dm-log.c
0025 userspace       drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h
0026 ==============  ==============================================================
0027 
0028 The "disk" log type
0029 -------------------
0030 This log implementation commits the log state to disk.  This way, the
0031 logging state survives reboots/crashes.
0032 
0033 The "core" log type
0034 -------------------
0035 This log implementation keeps the log state in memory.  The log state
0036 will not survive a reboot or crash, but there may be a small boost in
0037 performance.  This method can also be used if no storage device is
0038 available for storing log state.
0039 
0040 The "userspace" log type
0041 ------------------------
0042 This log type simply provides a way to export the log API to userspace,
0043 so log implementations can be done there.  This is done by forwarding most
0044 logging requests to userspace, where a daemon receives and processes the
0045 request.
0046 
0047 The structure used for communication between kernel and userspace are
0048 located in include/linux/dm-log-userspace.h.  Due to the frequency,
0049 diversity, and 2-way communication nature of the exchanges between
0050 kernel and userspace, 'connector' is used as the interface for
0051 communication.
0052 
0053 There are currently two userspace log implementations that leverage this
0054 framework - "clustered-disk" and "clustered-core".  These implementations
0055 provide a cluster-coherent log for shared-storage.  Device-mapper mirroring
0056 can be used in a shared-storage environment when the cluster log implementations
0057 are employed.