Hi Alex,
Do you happen to know if these have previously been, or are going to be,
reported to the Linux kernel group (linux-kernel [ at ] vger [ dot ] kernel [ dot ] org) or
related mailing lists, which can be found here:
https://wiki.linuxfoundation.org/realtime/communication/mailinglists
-Katie
On 2025-10-17 13:41, Alex Pilon via sigs-l3go wrote:
commit 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0
Author: Dongsheng Yang <dongsheng [ dot ] yang [ at ] linux [ dot ] dev>
Date: Tue Aug 12 08:24:52 2025 +0000
dm-pcache: add persistent cache target in device-mapper
This patch introduces dm-pcache, a new DM target that places a DAX-
capable persistent-memory device in front of any slower block
device and
uses it as a high-throughput, low-latency cache.
Design highlights
-----------------
- DAX data path – data is copied directly between DRAM and the pmem
mapping, bypassing the block layer’s overhead.
- Segmented, crash-consistent layout
- all layout metadata are dual-replicated CRC-protected.
- atomic kset flushes; key replay on mount guarantees cache
integrity
even after power loss.
- Striped multi-tree index
- Multi‑tree indexing for high parallelism.
- overlap-resolution logic ensures non-intersecting cached
extents.
- Background services
- write-back worker flushes dirty keys in order, preserving
backing-device
crash consistency. This is important for checkpoint in cloud
storage.
- garbage collector reclaims clean segments when utilisation
exceeds a
tunable threshold.
- Data integrity – optional CRC32 on cached payload; metadata
always protected.
Comparison with existing block-level caches
---------------------------------------------------------------------------------------------------------------------------------
| Feature | pcache (this patch)
| bcache | dm-writecache |
|----------------------------------|---------------------------------|------------------------------|---------------------------|
| pmem access method | DAX
| bio (block I/O) | DAX |
| Write latency (4 K rand-write) | ~5 µs
| ~20 µs | ~5 µs |
| Concurrency | multi subtree index
| global index tree | single tree + wc_lock |
| IOPS (4K randwrite, 32 numjobs) | 2.1 M
| 352 K | 283 K |
| Read-cache support | YES
| YES | NO |
| Deployment | no re-format of backend
| backend devices must be | no re-format of backend |
| |
| reformatted | |
| Write-back ordering | log-structured;
| no ordering guarantee | no ordering guarantee |
| | preserves app-IO-order
| | |
| Data integrity checks | metadata + data CRC(optional)
| metadata CRC only | none |
---------------------------------------------------------------------------------------------------------------------------------
Signed-off-by: Dongsheng Yang <dongsheng [ dot ] yang [ at ] linux [ dot ] dev>
Signed-off-by: Mikulas Patocka <mpatocka [ at ] redhat [ dot ] com>
--
Manage your subscription:
https://lists.linux-ottawa.org/sigs-l3go/listinfo.html
--
Manage your subscription: https://lists.linux-ottawa.org/sigs-l3go/listinfo.html