mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 04:01:48 -04:00
percpu: add block level scan_hint
Fragmentation can cause both blocks and chunks to have an early first_firee bit available, but only able to satisfy allocations much later on. This patch introduces a scan_hint to help mitigate some unnecessary scanning. The scan_hint remembers the largest area prior to the contig_hint. If the contig_hint == scan_hint, then scan_hint_start > contig_hint_start. This is necessary for scan_hint discovery when refreshing a block. Signed-off-by: Dennis Zhou <[email protected]> Reviewed-by: Peng Fan <[email protected]>
This commit is contained in:
parent
b239f7daf5
commit
382b88e961
2 changed files with 103 additions and 7 deletions
|
|
@ -9,8 +9,17 @@
|
|||
* pcpu_block_md is the metadata block struct.
|
||||
* Each chunk's bitmap is split into a number of full blocks.
|
||||
* All units are in terms of bits.
|
||||
*
|
||||
* The scan hint is the largest known contiguous area before the contig hint.
|
||||
* It is not necessarily the actual largest contig hint though. There is an
|
||||
* invariant that the scan_hint_start > contig_hint_start iff
|
||||
* scan_hint == contig_hint. This is necessary because when scanning forward,
|
||||
* we don't know if a new contig hint would be better than the current one.
|
||||
*/
|
||||
struct pcpu_block_md {
|
||||
int scan_hint; /* scan hint for block */
|
||||
int scan_hint_start; /* block relative starting
|
||||
position of the scan hint */
|
||||
int contig_hint; /* contig hint for block */
|
||||
int contig_hint_start; /* block relative starting
|
||||
position of the contig hint */
|
||||
|
|
|
|||
Loading…
Reference in a new issue