Shifted block_recycles so 0 => pure copy-on-write

This makes a bit more sense with the new block_recycles name.
block_recycles=0 (previously block_recycles=1) requires 1 erase, but it
doesn't really "recycle" the block. With this change, block_recycles=1
"recycles" the block once (2 erases in total) before relocating, which I
think is a bit more intuitive.

Note, this sort of messes with our power-of-2 rounding, as the
block_recycles is technically rounded down to the nearest power-of-2
after adding 1:

- block_recycles=1022 -> 512 erases
- block_recycles=1023 -> 1024 erases
- block_recycles=1024 -> 1024 erases
- block_recycles=1025 -> 1024 erases

But I'm going to keep the block_recycles description more-or-less as is
for now, as I think this extra detail is more confusing than useful,
powers-of-2 stay powers-of-2, and the <=block_recycles contraint is not
violated.
This commit is contained in:
Christopher Haster
2024-05-22 17:53:15 -05:00
parent 4d76551d6b
commit e4fe2b5234
4 changed files with 31 additions and 31 deletions
+4 -4
View File
@@ -15,7 +15,7 @@ after = [
# dirs + relocations may create problems for gstate
[cases.test_wl_dir_fuzz]
defines.BLOCK_RECYCLES = [-1, 8, 2, 1]
defines.BLOCK_RECYCLES = [-1, 5, 1, 0]
defines.N = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
defines.OPS = 1024
defines.REMOUNT = [false, true]
@@ -163,7 +163,7 @@ code = '''
# files + relocations may create problems for shrubs
[cases.test_wl_file_fuzz]
defines.BLOCK_RECYCLES = [-1, 8, 2, 1]
defines.BLOCK_RECYCLES = [-1, 5, 1, 0]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024
defines.SIZE = [
@@ -374,7 +374,7 @@ code = '''
# open files + relocations may create problems for orphans/zombies
[cases.test_wl_orphanzombie_fuzz]
defines.BLOCK_RECYCLES = [-1, 8, 2, 1]
defines.BLOCK_RECYCLES = [-1, 5, 1, 0]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024
defines.SIZE = [
@@ -713,7 +713,7 @@ code = '''
# open files + dirs + relocations can cause so many problems it's not worth
# listing them
[cases.test_wl_orphanzombiedir_fuzz]
defines.BLOCK_RECYCLES = [-1, 8, 2, 1]
defines.BLOCK_RECYCLES = [-1, 5, 1, 0]
defines.N = [1, 2, 4, 8, 16, 32, 64]
defines.OPS = 1024
defines.SIZE = [