In lbd, atomic writes will require a pblk array in the lbd object. Not sure how to roll back partial allocations yet but it should be doable. Cache object sizing: - lbdcache size: multiple of num_online_cpus(). - lbatviewcache: Min: one. Max: one per lbd. Avg: 1/2 lbdcache size. => Alloc 1/2 lbdcache size. - lbpatpage cache: Min: lbatviewcache size. Max: 2 * lbatviewcache size. Avg: 1.5 * lbatviewcache size. => alloc 1.5 * lbatviewcache size. - pbatcache size: Min: 1 Max: lbatviewcache size. Avg: 1/2 lbatviewcache size. => alloc ??? 1/2 lbatviewcache size is way too large. Ratio of lbatview to pbat is 1:lbat_per_pbat. TODO: - Move back to module based build system. - Make compression algorithm and speed/level selectable. - Create utilities for: - Resizing a compressed device. - Checking and repairing a compressed device. - Check parameters in compress_ctr: - Compressed device must be large enough. - Backing device must be large enough. - Remove workqueue. - (?) Function ptrs for reading and writing lblk_alloc.