Tom Marshall
3e81efb9f6
Defer releasing lbd until all I/O ops are done
...
This greatly increases performance.
2019-11-05 13:56:47 -08:00
Tom Marshall
d7fb50911b
Start implementing stats
...
Just pblks allocated for now.
Also update device layout info in README.
2019-11-04 12:25:54 -08:00
Tom Marshall
94551dffdd
Simplify object error logic
...
Write error always sets error on all written pages and we always write
the first page. So only check the first page.
2019-11-04 11:36:20 -08:00
Tom Marshall
cbf8777042
Reset objects outside cache lock
...
Also update TODO
2019-11-04 11:36:20 -08:00
Tom Marshall
f37155f527
Add flags to header
...
Initial flag definition includes dirty flag.
Also remove unused pblk_read().
Also add pbat-len arg to format.
2019-11-04 11:36:12 -08:00
Tom Marshall
141888fa98
Make pbat len variable
...
Also a bit of cleanup in lbd.c
2019-11-04 11:18:28 -08:00
Tom Marshall
b8395c8a83
Alloc compress state using vmalloc
2019-11-03 09:00:28 -08:00
Tom Marshall
92fc5158e2
Remove percpu comment
2019-11-03 08:31:13 -08:00
Tom Marshall
309bb2d5ef
Tidy up lblk percpu stuff
2019-11-03 08:28:13 -08:00
Tom Marshall
7a743a7e65
Rewrite lbatview_elem_realloc
...
* Only touch the data we need to touch.
* Handle failure gracefully by reverting to old data.
* Adjust libcbd check_one_lblk to ignore unused allocs.
2019-11-03 08:15:43 -08:00
Tom Marshall
5be74b3346
Make pblk_read/write take block_device, not cbd_params
2019-11-02 08:11:12 -07:00
Tom Marshall
f1513f8cb3
pbat_write tweaks
...
* Rename pblk_endio to pblk_write_endio.
* Unlock pages last in pblk_write_endio.
* Do page ops when prepare fails.
* Ditch header guard.
2019-11-02 08:00:37 -07:00
Tom Marshall
7fbf77b1f3
Revert "Add md5 for debugging"
...
This reverts commit 351e43b953
.
2019-11-02 07:54:02 -07:00
Tom Marshall
11cc8a229e
Use page vector and vmap for lbd
2019-11-02 07:49:09 -07:00
Tom Marshall
8e1630b08c
Rearrange compress init
2019-11-01 15:08:34 -07:00
Tom Marshall
ee7eacd4a6
First really working version
2019-11-01 14:41:11 -07:00
Tom Marshall
9a543670aa
Fix writeback for lbatpage
2019-10-31 14:48:12 -07:00
Tom Marshall
abdb25d31c
Revert "DEBUG: pbat read verification"
...
This reverts commit 290b1873a0
.
2019-10-31 14:45:40 -07:00
Tom Marshall
db3d323d27
Finally fixed the pbat writeback issue
2019-10-31 14:43:22 -07:00
Tom Marshall
164a09b9aa
Add zlib support
...
* 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.
2019-10-31 11:09:03 -07:00
Tom Marshall
eeafc209a5
Use per-cpu lz4 state
2019-10-30 12:34:21 -07:00
Tom Marshall
290b1873a0
DEBUG: pbat read verification
2019-10-30 10:24:15 -07:00
Tom Marshall
e1ec3567df
Rearrange lbatview.pbat handling
2019-10-30 10:24:15 -07:00
Tom Marshall
8c7adec85d
Remove compress.io_mutex
2019-10-30 10:24:15 -07:00
Tom Marshall
e58d404811
Make val optional in arg parsing
2019-10-30 10:24:15 -07:00
Tom Marshall
a2680aadf5
Use u64 for lblk
2019-10-30 10:24:15 -07:00
Tom Marshall
365cd0a13a
Pass block_device to pblk_io_prepare
2019-10-30 10:24:11 -07:00
Tom Marshall
0d3d79de10
Require that compression saves at least one pblk
2019-10-30 10:03:50 -07:00
Tom Marshall
f8361d1e2e
First fully working version
2019-10-25 10:03:00 -07:00
Tom Marshall
1b5b24a179
Use zone_for_pblk
2019-10-25 09:56:27 -07:00
Tom Marshall
351e43b953
Add md5 for debugging
2019-10-25 05:56:20 -07:00
Tom Marshall
446a4811f6
More improvements, but still failing to clone linux
2019-10-24 13:02:03 -07:00
Tom Marshall
495d191d16
checkpoint: Mostly working
...
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.
2019-10-21 19:39:27 -07:00
Tom Marshall
8ff29f0262
Rename [pl]blk_alloc to [pl]bat
2019-10-11 08:28:37 -07:00
Tom Marshall
b80d80215b
Implement bi-directional page alloc scanning
2019-10-10 19:40:00 -07:00
Tom Marshall
c1ec406a00
memcmpz -> lblk_is_zeros
2019-10-10 15:13:15 -07:00
Tom Marshall
24401f9a68
WIP: Implement zone caches
2019-10-10 15:07:39 -07:00
Tom Marshall
07f4221a5f
Fix a bunch of things
...
* 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.
2019-10-10 13:27:37 -07:00
Tom Marshall
36dec597ac
Implement async writes
2019-10-10 09:23:34 -07:00
Tom Marshall
26152ce1ec
Move compress_{alloc,free}_pages up for use by async I/O
2019-10-09 19:49:47 -07:00
Tom Marshall
7326fe2e14
Optimize lblk handling
2019-10-09 14:41:13 -07:00
Tom Marshall
a5cc0f2e81
Rename zone_{pblk,lblk}* to {pblk,lblk}*
2019-10-09 13:36:26 -07:00
Tom Marshall
4499785fbb
Refactor blkdev_pblk_* in preparation for async writes
2019-10-09 13:19:21 -07:00
Tom Marshall
b675fe573a
Pass buffer to elem rather than alloc in lblk_alloc_elem_{get,put}
...
This will assist in {read,writ}ing only the needed lblk alloc pages.
2019-10-09 11:57:57 -07:00
Tom Marshall
f87e897207
Rename dm_compress.lblk_alloc to lblk_alloc_elem
2019-10-09 11:41:29 -07:00
Tom Marshall
0ca9fc789f
Rename some stuff and limit LBLK_SHIFT_MAX
2019-10-09 11:32:36 -07:00
Tom Marshall
2e18584af3
Initial working version
...
Slow but seems functional.
2019-10-09 11:04:40 -07:00