In ye good olde days, mainframe and mini storage systems had the ability to grade various storage systems with a cost. This cost would then be used to allocate disk blocks per their use.
i.e. blocks that are accessed the most would be migrated up the storage systems to higher cost (i.e. faster access) while blocks that are seldom used are migrated to lower costs (i.e. slower access).
Bringing this up to ye moderne tymes, we could have storage from fast to slow as follows:
1 - RAMdisk
2 - SSD
3 - Fibre Attached Storage/SAS etc
4 - SATA arrays
5 - Slower/cheaper SATA disks
6 - Tape
The ranking is up to the user and should be capable of many more levels than this. Disk blocks then have a "heat" associated with them which is used to allocate them to the relevant level of storage.
There is already seems to be some work within BTRFS to provide this, but it appears to only have 2 levels of storage (SSD/mechanical disk?) so is much less flexible than it could be.
This, along with de-dupe, would be a great building block for virtual storage pools. It would provide an huge amount of flexibility to admins to build storage systems which automatically allocate blocks. Hot adding a new type of storage with a different access speed to the pool would kick in a bit of disk re-allocation. No messing around - all work done by the filesystem.
Even for the home/desktop user, this would provide benefit. A small SSD along with larger SATA disk would provide fast access to the most highly requested blocks, while my photos/music/video etc would largely be stored on the SATA drive (especially the wife's music which I *never* listen to)