Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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