Flash based storage supports the concept of discarding data in blocks without actually overwriting, a concept that helps with the internal wear level and data placement algorithms. Linux has supported this concept, which has different names in different storage protocols (trim, unmap, deallocate), for a long time. But the concept of "online" or live discards that notify the device instantly after the deletion of data in the file system has only seen limited traction in Linux, mostly due to the severe performance degradation caused by it.
This talks explains optimizations to the file system and block layer to allow better batching and asynchronous execution of discard requests, as well how the file system block allocator can better be aware of ongoing discards.
It will also explore how discarding of data overlaps with fast zeroing operations, and why it really shouldn't at the interface level.
Christoph Hellwig has been working on Linux Storage and File system projects for 15 years. He works all the way up and down the Storage and File system stack, and runs a business focused on Linux Storage architecture and training.