* cbd check now works (ish).
* Added full-check arg to cbd check, link with liblz4, libz.
* Added libcbd/util.c with goodies like verbose, ask_user_bool.
* Rework kernel side params, stats to separate from user space.
* Lock kernel stats when updating.
* Add lblk_used to stats.
... and probably some other forgotten things.
* New args to cbd format.
* HAVE_* -> COMPRESS_HAVE_*.
* Verify header params algorithm and compression.
* Move percpu alloc to lbdcache.
* Alloc percpu data in lbdcache_ctr, free in lbdcache_dtr.
This seems to work except for I/O timing. Reads are sync and
writes are async, so this sequence fails:
- Object x flushes
- Object x is reused as y
- Another object is taken as x
- New object x reads
-> Stale data is read
Two potential solutions from here:
1. Implement async reads.
2. Hold ref to object until write completes.
(1) is complicated, but more correct. Writes may stay in buffers for
quite some time (typically 5 seconds), during which time the dm-compress
object cannot be released.
* Fix command line handling.
* Move option/parameter validation to libcbd.
* Make resize argument the logical size.
* Make blkdev_pblk_* take dm_compress instead of block_device.
* Reinstate dm_compress.io_failed.
* Other misc stuff.