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) dm-zero
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) Device-Mapper's "zero" target provides a block-device that always returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) zero'd data on reads and silently drops writes. This is similar behavior to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) /dev/zero, but as a block-device instead of a character-device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) Dm-zero has no target-specific parameters.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) One very interesting use of dm-zero is for creating "sparse" devices in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) conjunction with dm-snapshot. A sparse device reports a device-size larger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) than the amount of actual storage space available for that device. A user can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) write data anywhere within the sparse device and read it back like a normal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) device. Reads to previously unwritten areas will return a zero'd buffer. When
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) enough data has been written to fill up the actual storage space, the sparse
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) device is deactivated. This can be very useful for testing device and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) filesystem limitations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) To create a sparse device, start by creating a dm-zero device that's the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) desired size of the sparse device. For this example, we'll assume a 10TB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) sparse device::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)   TEN_TERABYTES=`expr 10 \* 1024 \* 1024 \* 1024 \* 2`   # 10 TB in sectors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)   echo "0 $TEN_TERABYTES zero" | dmsetup create zero1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Then create a snapshot of the zero device, using any available block-device as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) the COW device. The size of the COW device will determine the amount of real
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) space available to the sparse device. For this example, we'll assume /dev/sdb1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) is an available 10GB partition::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)   echo "0 $TEN_TERABYTES snapshot /dev/mapper/zero1 /dev/sdb1 p 128" | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)      dmsetup create sparse1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) This will create a 10TB sparse device called /dev/mapper/sparse1 that has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 10GB of actual storage space available. If more than 10GB of data is written
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) to this device, it will start returning I/O errors.