ref: 77e30263409bc04ec12db3a0bd162f8f821f016d
parent: dec63a701eceb2ad33570f3213f40c6661a29d1a
author: Noam Preil <noam@pixelhero.dev>
date: Mon Aug 4 09:32:14 EDT 2025
disk: fix block writes
--- a/disk.c
+++ b/disk.c
@@ -261,8 +261,8 @@
if(pwrite(index.arena->fd, index.arena->buf, index.arena->blocksize, index.arena->base+(index.arena->block*index.arena->blocksize)) != index.arena->blocksize){ sysfatal("flush failed: %r");}
- index.arena->buf = nil;
- cacheunlock(index.arena->index, index.arena->block);
+ index.arena->buf = nil;
+ cacheunlock(index.arena->index, index.arena->block);
}
// Advance the block and, if needed, the arena.
@@ -275,6 +275,7 @@
blockflush();
}
index.arena->block += 1;
+ index.arena->arenastats.used += index.arena->blockremain;
index.arena->offset = 0;
index.arena->blockremain = index.arena->blocksize;
if(index.arena->block * index.arena->blocksize >= index.arena->size)
@@ -325,6 +326,7 @@
{index.arena->offset += n;
index.arena->blockremain -= n;
+ index.arena->arenastats.used += n;
}
int
@@ -359,7 +361,7 @@
if(len != n)
blockadvance();
}
- index.arena->arenastats.used += len+38;
+ blockupdate(len);
index.arena->arenastats.uncsize += len;
index.arena->arenastats.clumps += 1;
blockflush();
--
⑨