45 lines
1.4 KiB
Plaintext
45 lines
1.4 KiB
Plaintext
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:
|
|
- Consistency in lbatview_elem_realloc().
|
|
If alloc fails, roll back.
|
|
- Allocate lbd pages using allocv and vmap them.
|
|
Same for pbat, when pbat_len() > 1.
|
|
Can we vmap compression workspace?
|
|
- In *cache_get, call *_reset outside cache lock.
|
|
- Implement vectorized lbatview_elem_pblk().
|
|
- Dirty flag in compress header.
|
|
- Implement stats.
|
|
- Keep working lbd, flush on timer.
|
|
Need per-cpu lbd.
|
|
- Move back to module based build system.
|
|
- 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.
|