Hi Mikulas, This is V1 for dm-pcache, please take a look. Code: https://github.com/DataTravelGuide/linux tags/pcache_v1
Changelogs from RFC-V2: - use crc32c to replace crc32 - only retry pcache_req when cache full, add pcache_req into defer_list, and wait cache invalidation happen. - new format for pcache table, it is more easily extended with new parameters later. - remove __packed. - use spin_lock_irq in req_complete_fn to replace spin_lock_irqsave. - fix bug in backing_dev_bio_end with spin_lock_irqsave. - queue_work() inside spinlock. - introduce inline_bvecs in backing_dev_req. - use kmalloc_array for bvecs allocation. - calculate ->off with dm_target_offset() before use it. Dongsheng Yang (11): dm-pcache: add pcache_internal.h dm-pcache: add backing device management dm-pcache: add cache device dm-pcache: add segment layer dm-pcache: add cache_segment dm-pcache: add cache_writeback dm-pcache: add cache_gc dm-pcache: add cache_key dm-pcache: add cache_req dm-pcache: add cache core dm-pcache: initial dm-pcache target .../admin-guide/device-mapper/dm-pcache.rst | 201 ++++ MAINTAINERS | 8 + drivers/md/Kconfig | 2 + drivers/md/Makefile | 1 + drivers/md/dm-pcache/Kconfig | 17 + drivers/md/dm-pcache/Makefile | 3 + drivers/md/dm-pcache/backing_dev.c | 292 ++++++ drivers/md/dm-pcache/backing_dev.h | 88 ++ drivers/md/dm-pcache/cache.c | 444 +++++++++ drivers/md/dm-pcache/cache.h | 607 ++++++++++++ drivers/md/dm-pcache/cache_dev.c | 299 ++++++ drivers/md/dm-pcache/cache_dev.h | 70 ++ drivers/md/dm-pcache/cache_gc.c | 170 ++++ drivers/md/dm-pcache/cache_key.c | 907 ++++++++++++++++++ drivers/md/dm-pcache/cache_req.c | 810 ++++++++++++++++ drivers/md/dm-pcache/cache_segment.c | 293 ++++++ drivers/md/dm-pcache/cache_writeback.c | 276 ++++++ drivers/md/dm-pcache/dm_pcache.c | 467 +++++++++ drivers/md/dm-pcache/dm_pcache.h | 65 ++ drivers/md/dm-pcache/pcache_internal.h | 116 +++ drivers/md/dm-pcache/segment.c | 61 ++ drivers/md/dm-pcache/segment.h | 73 ++ 22 files changed, 5270 insertions(+) create mode 100644 Documentation/admin-guide/device-mapper/dm-pcache.rst create mode 100644 drivers/md/dm-pcache/Kconfig create mode 100644 drivers/md/dm-pcache/Makefile create mode 100644 drivers/md/dm-pcache/backing_dev.c create mode 100644 drivers/md/dm-pcache/backing_dev.h create mode 100644 drivers/md/dm-pcache/cache.c create mode 100644 drivers/md/dm-pcache/cache.h create mode 100644 drivers/md/dm-pcache/cache_dev.c create mode 100644 drivers/md/dm-pcache/cache_dev.h create mode 100644 drivers/md/dm-pcache/cache_gc.c create mode 100644 drivers/md/dm-pcache/cache_key.c create mode 100644 drivers/md/dm-pcache/cache_req.c create mode 100644 drivers/md/dm-pcache/cache_segment.c create mode 100644 drivers/md/dm-pcache/cache_writeback.c create mode 100644 drivers/md/dm-pcache/dm_pcache.c create mode 100644 drivers/md/dm-pcache/dm_pcache.h create mode 100644 drivers/md/dm-pcache/pcache_internal.h create mode 100644 drivers/md/dm-pcache/segment.c create mode 100644 drivers/md/dm-pcache/segment.h -- 2.43.0