Bcachefs supports both caching and tiering: https://wiki.archlinux.org/title/Bcachefs#SSD_caching
A FUSE-based solution is autotier: https://github.com/45Drives/autotier
A FUSE-based solution is autotier: https://github.com/45Drives/autotier
I used lvm cache to put ZFS on top of local NVMe for write-back caching of iSCSI targets, as ZFS has good built-in read caching.
Worked pretty well in the limited tests I did, but it's not magic. Main reason I didn't pursue is that it felt a bit like a house of cards. Though on the positive side, one could always mount the underlying storage, ie partitions serving the iSCSI targets, as a local pool on another machine.